Hallo Forum,
ich bin neu hier und habe eine Frage zum UART beim Atmega32. Ich weiß,
leidiges Thema. Das Problem bei mir ist jedoch nicht, dass es nicht
funktioniert, sondern, dass es mich verwirrt wie es funktioniert. Ich
benutze unten stehenden Codeabschnitt zur Initialisiertung und zum Test
des UART.
Laut Avr-Gcc-Tutorial müsste der Modus(?) auf 8N1 gesetzt sein. Wenn ich
aber in meinem Terminalprogramm(GtkTerm) 8N1 einstelle, kommt nur Quark
raus. Stelle ich das aber auf 7N1 funktioniert alles perfekt. Ich
verstehe nicht warum das so ist?
Ach ja, Baudrate ist 9600 und Frequenz 16MHz.
1 | UBRRH=0;
|
2 | UBRRL=103;
|
3 | UCSRB |= (1<<TXEN);
|
4 | UCSRC |= (1<<URSEL)|(1 << UCSZ1)|(1 << UCSZ0); // Asynchron 8N1
|
5 |
|
6 |
|
7 | while(1)
|
8 | {
|
9 | while (!(UCSRA & (1<<UDRE)))
|
10 | {
|
11 | }
|
12 | UDR = 'a';
|
13 | while (!(UCSRA & (1<<UDRE)))
|
14 | {
|
15 | }
|
16 | UDR = 'b';
|
17 | setGreen(1);
|
18 | }
|
Gruß Tobias