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
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
Hi sollte eigentlich noch funktionieren. Laß mal das volatile weg und schau dir den ASM-Output des Compilers an. Matthias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.