Forum: Compiler & IDEs Wo startet ein AVR mit BOOTRST, nach Reset durch Watchdog ?


von Stefan (Gast)


Lesenswert?

Hallo,

wenn ich einen atmega162 bei dem die BOOTRST Fuse aktiviert ist durch
den Watchdog reseten lasse, faengt er dann bei der Application Section
an oder in der Bootloader Section?

Ich habe das Gefuehl, dass es bei der Application Section weitergeht,
da ich verschiedene Init Sachen im Bootloader habe, der Prozessor aber
nachdem er aus dem Sleep Mode aufwacht und erstmal ein (gewolltes)
Reset durch den watchdog durchfuehrt, nicht mehr richtig funktioniert
(scheint I/Os nicht mehr richtig zu verarbeiten). Schaltet man ein /
aus, so dass es sicher beim Bootloader losgeht, oder packt man die Init
Sachen sowohl in Bootloader als auch Anfang der Application Section
funktioniert alles einwandfrei.

Falls meine Annahme richtig ist, und der avr in der Application Section
loslegt, wie kann man ihn softwaremaessig dazu bringen beim Bootloader
anzufangen?

Ich habe folgendes versucht:

  asm volatile( "ldi r30, lo8(0x1E00)");
  asm volatile( "ldi r31, hi8(0x1E00)");
  asm volatile( "ijmp");

Zwar findet irgendein Neustart statt, aber es geht nicht beim
Bootloader los wie mir scheint. Wo liegt der Fehler ?

Danke fuer jegliche Hinweise,

~stefan

von Jörg Wunsch (Gast)


Lesenswert?

Reset fängt immer dort an, wohin der Reset-Vektor zeigt, egal wodurch
der Reset ausgelöst worden ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.