Hi Leute,
ich habe ein Problem mit dem USART im ATMega168.
Er ist mit 16 MHz getaktet und funktioniert soweit ganz gut mit 9600
Baud.
Ich möchte aber eine externe Hardware ansteuern die 57600 verlangt. Die
Datenrate ist zwar nicht nötig, aber ich kann das nicht ändern.
Wenn ich jetzt die Baudrate auf 57600 umstelle kommen bei mir nur noch
kryptische Zeichen an. Laut Datenblatt gibt das eine Fehlerrate von 2,1%
was ja noch im Rahmen ist...
Zu dem speziellen Problem hab ich der Suche jetzt nichts gefunden. Das
Datenblatt und die Checkliste hat mir auch nicht weiter geholfen.
Hier mein Init Codeschnipsel
1 | #define F_CPU 16000000UL
|
2 | #define BAUD 57600UL // Baudrate
|
3 | #include <util/setbaud.h>
|
4 |
|
5 | void uart_init() {
|
6 | UCSR0B |= (1 << TXEN0); // UART TX einschalten
|
7 | UCSR0B |= (1 << RXEN0); // UART RX einschalten
|
8 | UCSR0B |= (1 << RXCIE0); // UART RX Interrupt einschalten
|
9 |
|
10 | UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00); // Asynchron, 8Bit
|
11 |
|
12 | //Baudrate setzten
|
13 | UBRR0H = UBRRH_VALUE;
|
14 | UBRR0L = UBRRL_VALUE;
|
15 | }
|
Habt ihr eine Idee ?
Gruß