Franz Suahnein schrieb:
> ISR (USART_RX0)
Bist du sicher, dass der Name des Interrupt-Vektors, USART_RX0, korrekt
ist?
Da zb das entsprechende Bit im UCSR0A den Namen RXC0 trägt, hätte ich
als Name jetzt mal eher USART_RXC0 angenommen. Aber ich gebe zu, dass
Atmel da mit den Bezeichnungen nicht ganz einheitlich ist. Allerdings
teilt dir der Compiler ja als Warnung mit, dass er mit dem Namen des
INterrupts nichts anfangen kann.
Allerdings ist es auch so, dass das Symptom "Reset beim Auftreten eines
Interrupt Ereignisses" ein deutliches Indiz für einen Schreibfehler im
Interrupt Namen ist
> while (!(UCSR0A & (1<<RXC0)));
das ist ziemlich sinnlos.
Die Interrupt Funktion ist aufgerufen worden, WEIL ein Zeichen an der
UART vorliegt, das abgeholt werden will. Das brauchst du hier nicht mehr
testen. An dieser Stelle steht einwandfrei und zweifellos fest, dass es
ein Zeichen in UDR0 gibt.