Jetzt schreib ich's halt auch nochmal: ;-)
Die init_USART-Routine aktiviert wahrscheinlich die jeweiligen
USART-Interrupts. Für alle Interrupts, für die es keinen
benutzerdefinierten Interrupthandler gibt, wird bei der GNU-Toolchain
ein Sprung nach __bad_interrupt in die Interrupttabelle eingetragen.
Und an __bad_interrupt steht ein Sprung zur Adresse 0, was das
Programm ganz von vorne beginnen lässt.
Also: Was hat es mit diesen USART-Routinen auf sich? Handelt es ich um
eine fertige Bibliothek oder um etwas unfertiges selbstgemachtes? Was
gehört sonst noch alles zu dieser USART-Software dazu? Wie gesagt,
wenn die Interrupthandler fehlen, dann startet das Programm beim
Eintreffen eines Interrupts von vorne.
Mit dem Watchdog hat das Ganze übrigens nichts zu tun. Der würde auch
bei nicht aktivierten Interrupts beißen, wenn er aktiv wäre.