Sida 1 av 1

int main() startar om hela tiden

Postat: 25 september 2012, 21:40:45
av JustMe84
Hej håller på att prova UART lite. Har skrivit lite kod som jag trodde skulle skicka ett par bytes en gång, men koden loopar och skickar det i all oändlighet och jag förstår inte varför, nån som kan hjälpa? Det jag tar emot på andra sidan(datorn) är rätt bytes, men alldelles för många ggr.

Kod: Markera allt

#include <avr/io.h>

#define USART_BAUDRATE 2400
#define BAUD_PRESCALE (((1000000 / (USART_BAUDRATE * 16UL))) - 1)

void SendData(char *TextToSend, uint8_t length)
{
	uint8_t i = 0;
	while (i != length)
	{
		while ((UCSR0A & 0b00100000) != 0b00100000)
		{
		}
		UDR0 = TextToSend[i];
		i++;
	}
}

int main(void)
{
	uint8_t sent = 0;
	
	UCSR0B |= (1 << RXEN0) | (1 << TXEN0);							// Turn on the transmission and reception circuitry
	UCSR0C |= (1 << UCSZ00) | (1 << UCSZ01);						// Use 8-bit character sizes

	UBRR0H = (BAUD_PRESCALE >> 8);									// Load upper 8-bits of the baud rate value into the high byte of the UBRR register
	UBRR0L = BAUD_PRESCALE;											// Load lower 8-bits of the baud rate value into the low byte of the UBRR register

	char tempArray[3];
	tempArray[0] = 2;
	tempArray[1] = 3;
	tempArray[2] = 4;
	char tempArray2[1];
	tempArray2[0] = 1;
	SendData(&tempArray2,1);
        SendData(&tempArray[0], 3);
    while(1)
    {
		
    }
}

Re: int main() startar om hela tiden

Postat: 25 september 2012, 21:47:21
av eqlazer
Watchdog?

Re: int main() startar om hela tiden

Postat: 25 september 2012, 21:48:04
av Micke_s
har du avkoppling för matspänningen?

Re: int main() startar om hela tiden

Postat: 25 september 2012, 21:48:17
av sodjan
Watchdog?

EDIT: Ett svar räcker... :-)

Re: int main() startar om hela tiden

Postat: 25 september 2012, 21:49:22
av JustMe84
har haft watchdog på den här förrut, men inte i det här programmet kan det påverka? ingen kondesnator på matningen, ska prova det

Re: int main() startar om hela tiden

Postat: 25 september 2012, 21:51:40
av sodjan
> har haft watchdog på den här förrut, men inte i det här programmet kan det påverka?

Kanske. Du får väl se till att den är avslagen, om du inte vill ha den på.
Är den inte på så är det något annat problem...

Re: int main() startar om hela tiden

Postat: 25 september 2012, 21:52:19
av Micke_s
Om du inte har satt det i config:en. Skicka ut startup cause annars och se varför den startar om. Har för mig att AVR ska ha ett sådant register.

Edit: du har ju redan en länk till pc:n som funkar

Re: int main() startar om hela tiden

Postat: 25 september 2012, 21:56:06
av JustMe84
Sökte på startup cause på google, hittade inget relevant dock, du vet inte vilket register det är?

Tror jag hittade det, ECR, Exception cause register, tack =)

Re: int main() startar om hela tiden

Postat: 25 september 2012, 21:59:24
av Micke_s
MCUSR verkar det heta på m88
Edit: sid 53 i m88 manualen t.ex.

Re: int main() startar om hela tiden

Postat: 25 september 2012, 22:03:48
av JustMe84
Det var watchdog, tack så mkt =)

Re: int main() startar om hela tiden

Postat: 25 september 2012, 22:06:56
av Micke_s
Alltid enklare att fråga MCUn vad som orsakade en omstart än gissa :p

Re: int main() startar om hela tiden

Postat: 25 september 2012, 22:08:58
av Micke_s
Lite OT: det går confa WDT som en timer som orsakar interrrupt istället för reset.

Re: int main() startar om hela tiden

Postat: 25 september 2012, 22:17:21
av eqlazer
sodjan skrev:Watchdog?

EDIT: Ett svar räcker... :-)
Great minds think alike :)

Skönt att det löste sig iaf.