Forum: Mikrocontroller und Digitale Elektronik SW-Reset


von Tom K (Gast)


Lesenswert?

Hallo,

ich habe eine Anwendung auf einem ATmega128 laufen und möchte diese bei
bestimmten Ereignissen komplett neu starten.
Nun dachte ich, es würde reichen auf "0" zu springen:
   asm volatile ("jmp 0");
Dabei startet meine Anwendung aber leider nicht neu. Warum?

Vielen Dank,
 Tom

von Binnesmann (Gast)


Lesenswert?

Hi,

hast Du evtl. den Stack noch voll? Vorher ein Call ausgeführt? Ich habe
das mit WDT gemacht, wo ich bei einem ereignis einfach das zurücksetzen
weglasse. Prob dabei ist, das ich schonmal recht lange auf WDT Überlauf
warten muß.

Gruß

Binnesmann

von Matthias (Gast)


Lesenswert?

Hi

sollte eigentlich noch funktionieren. Laß mal das volatile weg und
schau dir den ASM-Output des Compilers an.

Matthias

von Helge (Gast)


Lesenswert?

Aktiviere doch einfach den Watchdog. Habe ich auch beim Mega128 gemacht.
Funktioniert prima. Wenn er neu starten soll schreibst du einfach
WDTCR=0x0F; (natürlich je nach Zeit)

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.