habe folgendes programm geschrieben zur ausgabe einzelner zeichen per USART! das problem liegt nun darin, dass die zeichen nicht nur einmal ausgegebne werden, sondern werden immer wiederholt! ???? das ganze sieht dann so "123ABC123ABC123ABC...." keine Ahnung weshalb die zeichen immer wiederholt werden, sollten ja nur einmal eigentlich ausgegeben werden, oder???? vieln dank für eure antworten! #include <avr/io.h> #include <avr/interrupt.h> #define FOSC 14745600// Clock Speed #define BAUD 2400 #define MYUBRR FOSC/16/BAUD-1 void USART_Init(unsigned int ubrr); void USART_Transmit(unsigned char data); unsigned char USART_Receive(void); int main(void){ USART_Init(MYUBRR); USART_Transmit('1'); USART_Transmit('2'); USART_Transmit('3'); USART_Transmit('A'); USART_Transmit('B'); USART_Transmit('C'); while(1); return 0; } void USART_Init( unsigned int ubrr ) { /* Set baud rate */ UBRR0H = (unsigned char)(ubrr>>8); UBRR0L = (unsigned char)ubrr; /* Enable transmitter */ UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Set frame format: 8data, 1stop bit */ UCSR0C = (3<<UCSZ0); } void USART_Transmit( unsigned char data ) { /* Wait for empty transmit buffer */ while ( !( UCSR0A & (1<<UDRE0)) ); /* Put data into buffer, sends the data */ UDR0 = data; } unsigned char USART_Receive(void) { /* Wait for data to be received */ while ( !( UCSR0A & (1<<RXC0)) ); /* Put data into buffer, sends the data */ return UDR0; }
@ Thomas (Gast) >das problem liegt nun darin, dass die zeichen nicht nur einmal >ausgegebne werden, sondern werden immer wiederholt! ???? >das ganze sieht dann so "123ABC123ABC123ABC...." keine Ahnung weshalb >die zeichen immer wiederholt werden, sollten ja nur einmal eigentlich >ausgegeben werden, oder???? vieln dank für eure antworten! Der Watchdog bellt. Versuch mal das als erste Zeile im Programm.
1 | // Stop watchdog timer to prevent time out reset
|
2 | WDTCTL = WDTPW + WDTHOLD; |
MFG Falk
den watchdog habe ich aber gar nicht programmiert! kann das sein, dass der sich manchmal automatisch einschaltet?
Man kann den WDT auch per Fuse einschalten. Und man kann Fuses versehentlich verkehrt herum programmieren.
@ Thomas (Gast) >den watchdog habe ich aber gar nicht programmiert! kann das sein, dass >der sich manchmal automatisch einschaltet? Nöö, aber der ist automatisch nach dem Reset aktiv. MFg Falk
also das heisst dann, dass alle normal läuft und plötzlich aus irgendeinem grund ein reset passiert? und nach dem reset ist der watchdog aktiv und resetet mein uC weiter?
@ Thomas (Gast) >also das heisst dann, dass alle normal läuft und plötzlich aus >irgendeinem grund ein reset passiert? Nicht aus "irgendweinem" Grund. Der Watchdog ist nach dem Anlegend er Betriebsspannung (POR, Power On Reset) aktiv. Wenn er nach ein paar hundert Milliselkunden einen Reset auslöst, ist er immer noch aktiv. > und nach dem reset ist der >watchdog aktiv und resetet mein uC weiter? Genau. MFG Falk
ja aber wieso sollte der schon von anfang an aktiv sein?!?! habe den ja gar nicht eingeschaltet!
@ Thomas (Gast) >ja aber wieso sollte der schon von anfang an aktiv sein?!?! habe den ja >gar nicht eingeschaltet! Hängst du auch in ner Schleife fest? Lies mal den Thread un denk drüber nach. MFG Falk
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.