Ich versuche mit einerm Atmega644 bei 20MHz mit einer Baud von 2400 bps
einfach nur ein Zeichen an den PC zu senden.
Die initialisierung sieht so aus:
1 | UBRR0H = 520>>8;
|
2 | UBRR0L = 520;
|
3 | UCSR0B = (1 << TXEN0) | (1 << TXCIE0);
|
4 | UCSR0C = (1 << USBS0) | (3 << UCSZ00);
|
die 520 hab ich aus dem Datenblatt den AT644. Dann in der main wird
einmal was gesendet.
danach wird über eine Interruptroutine, die bei leerem Sendepuffer
ausgelöst wird, wieder ein neues Zeichen geschrieben.
1 | ISR(USART0_UDRE_vect)
|
2 | {
|
3 | UDR0='b';
|
4 | }
|
schau ich mir das ganze nun im Terminalprog. an, sendet er, egal was ich
eingeben immer 00 00 80 als Hex.
Woher könnte dieser Fehler kommen?!