1 | UCSR0B = (1<<RXEN0)|(1<<TXEN0);
|
2 | /* Set frame format: 8data, 2stop bit */
|
3 | UCSR0C = (1<<USBS0)|(3<<UCSZ00);
|
4 | /* Set Interrupts: RXCIE - RX-Complete, TCVIE - TX-Complete */
|
5 | UCSR0B = (1<<RXCIE0);
|
Gratulation. Mit der zweiten Zuweisung an UCSR0B um den Interrupt
einzuschalten, hast du soeben Sender und Empfänger wieder abgeschaltet.
Mein Tipp wäre: vermeide solche Mehrfach-Operationen. Wenn du in einem
Register BIts setzen willst, dann mach das in EINER Anweisung.
Das ist beim Schreiben besser, weil es den Fehler verhindert, den du
hier gemacht hast. Und es ist auch beim Lesen besser, weil man den Code
dann nicht absuchen muss, ob es neben dem betrachteten Statement noch
andere Operationen an diesem Register gibt oder nicht.
1 | UCSR0B = (1<<RXEN0)|(1<<TXEN0) |
|
2 | (1<<RXCIE0);
|
3 | /* Set frame format: 8data, 2stop bit */
|
4 | UCSR0C = (1<<USBS0)|(3<<UCSZ00);
|
ist nicht besser oder schlechter zu lesen als deine Version. Aber sie
hat weniger Fehlerpotential!