Wenn man eine UART in Betrieb nimmt, ist es eine extrem gute Idee, erst
mal mit der Datenrichtung AVR->PC anzufangen. Und zwar nur mit dieser
Datenrichtung.
Alles was zunächst damit zu tun hat, dass der AVR was empfangen muss,
ist nichts weiter als ein Stochern im Nebel, wenn es nicht funktioniert.
Die reine Datenrichtung AVR->PC ist da wesentlich besser geeignet. Unter
anderem auch deswegen, weil man am AVR ein Dauersenden programmieren
kann und man sich dann mit einer LED auf Hardware Fehlersuche begeben
kann, wo eine eventuelle falsche Auskreuzung in den Verbindungen drinnen
ist. LED samt Vorwiderstand nach GND verschalten und mit dem heissen
Ende der LED vom Tx Pin ausgehend das Signal verfolgen. Ist man am
Signal drauf, sieht man die LED bei einigermassen kleinen Baudraten
(9600 geht auf jeden Fall) wunderbar flackern.
1 | ....
|
2 |
|
3 |
|
4 | int main()
|
5 | {
|
6 | ...
|
7 |
|
8 | UART_Init(UART_BAUD_RATE);
|
9 |
|
10 | while( 1 ) {
|
11 |
|
12 | UART_Transmit( 'x' );
|
13 |
|
14 | ev. noch ein _delay_ms( 100 );
|
15 | }
|
16 | }
|
Damit macht man sich auf die Fehlersuche, bis man am PC im Terminal die
'x' sieht. Wenn das klappt, dann klappt im Regelfall auch die umgekehrte
Richtung auf Anhieb.