Guten Tag,
ich habe noch recht wenig Erfahrung mit µcs. Nun habe ich ein Problem mit der Baudrate. Ich verwende einen ATmega8 und wollte eigendlich mit einer Frequenz von 8 Mhz und einer Baudrate von 9600 über den USART senden. Doch bei 8 Mhz kommt nur Schrott an. Wenn ich es aber auf 1 Mhz laufen lasse funktioniert es gut.
Da ich in C programmiere beziehe ich den UBRR-Wert über die Include-Datei "setbaud.h".
Aber laut den Rechnungen die ich auf "www.mikrocontroller.net" gefunden habe habe ich bei 8 Mhz eine geringere Abweichung (unter 1%) als bei 1 Mhz (über 1%). Es wird bei 1 Mhz auch der U2X-Modus genutzt.Code:#define F_CPU 1000000 // bzw. 8Mhz #define BAUD 9600 #include <util/setbaud.h> void usart_init(void) { UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; #if USE_2X #warning "U2X wird genutzt" UCSRA |= (1 << U2X); #else UCSRA &= ~(1 << U2X); #endif UCSRB |= (1<<TXEN); // UART TX einschalten UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1 }
Nun Frage ich mich natürlich was da Falsch läuft. Ich stelle natürlich auch immer den intern Takt um, wenn ich die Frequenz im Code ändere.
Ps.: Da ich gelesen habe, dass es in den meisten Fällen um Hardware Probleme geht, wenn es zum USART kommt, habe ich den Post einfach mal hier gemacht.
Vielen Dank,
Flo







Zitieren

Lesezeichen