Nun ja, es lag an drei Dingen.

1. In meinen Bezeichnern fehlten die Nummern, welche bestimmen welche Schnittstelle ich nun ansteuern möchte.
Also statt UCSRB dann UCSR0B usw..

2. Ob das nun ein Fehler war oder nicht weiß ich nicht.
Ich habe aus
Code:
   UCSR0C = (3<<UCSZ00); // 8-Bit character length
folgendes gemacht
Code:
  UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
Leider kenne ich mich mit C noch nicht so gut aus, als dass ich dazu etwas kluges sagen könnte. Aber ich vermute mal das es etwas mit der Konfiguration der Schnittstelle zu tun hat.


Und das dritte Problem bestand darin, dass die Baud-Rate nicht so ganz passte. Was wiederum wohl mit der Frequenz des Quarzes zu tun hat. Aus diversen Brocken habe ich mir dann etwas zusammenkopiert, welches die Werte für UBRR0H und UBRR0L berechnet:
Code:
#define UART_BAUD_RATE 19200L
#define UART_BAUD_CALC(UART_BAUD_RATE,F_CPU) ((F_CPU)/((UART_BAUD_RATE)*16L)-1L)

//[..]
//[..]
//[..]

int main(void){
   UBRR0H = (uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,16000000)>>8);
   UBRR0L = (uint8_t) UART_BAUD_CALC(UART_BAUD_RATE,16000000)
//[..]
//[..]
}
Gruß, Andreas