Hallo, ich möchte an einer bestimmten Stelle im Code einen Reset ausführen. Muss ich dazu einen WatchDog aufziehen oder kann ich einen Reset per SW-Befehl durchführen? Ich verwende einen ATMega 128 mit GCC als Entwicklungsumgebung. Gruß BuZ
Eine richtigen Reset wo auch alle I/O Ports initialisiert werden kannst Du nur per Watchdog herbei führen. Ansonsten einfach im Programm selber per Funktionspointer an 0x000000 springen. Gruss, Kai
Einen I/O auf den Reset zu legen sollte doch auch klappen. Wenn das Programm ihn auf Masse zieht wird ein Reset ausgelöst, nach dem Anlaufen sind die Pins wieder hochohmig. Bin mir aber nicht sicher, habe es noch nicht probiert ...
Ja, doch leider ist die HW schon fertig und fädeln will ich ich auch nicht. Ich glaube ich komme am WatchDog nicht vorbei. Danke für die schnelle Hilfe, Gruß BuZ
> Eine richtigen Reset wo auch alle I/O Ports initialisiert werden > kannst Du nur per Watchdog herbei führen. Naja, man kann auch ein Pin auf den Reset-Eingang routen. ;-)
Aus welchem Grund sollte es denn nötig sein, während der Ausführung eines Programms einen Reset durchzuführen? Was ist das für eine "bestimmte Stelle im Code", die Du erwähntest?
>> Eine richtigen Reset wo auch alle I/O Ports initialisiert werden >> kannst Du nur per Watchdog herbei führen. > Naja, man kann auch ein Pin auf den Reset-Eingang routen. ;-) Für so banale Sachen verschwende ich keinen heiligen I/O Port :-).
>Aus welchem Grund sollte es denn nötig sein, während der Ausführung >eines Programms einen Reset durchzuführen? Was ist das für eine >"bestimmte Stelle im Code", die Du erwähntest? z.B aus einem Bootloader heraus.
> z.B aus einem Bootloader heraus.
OK, daran habe ich nicht gedacht (hatte bisher mit Bootloadern noch
nichts zu tun, werde mich bei Gelegenheit aber mal darüber
informieren).
Danke für Deine Antwort.
Beim MSP430 rufe ich für einen schnellen Reset die NMI-ISR direkt auf, über ein Makro: # define mc_RESET (*(void(**)(void))(0xfffe))() Den Hardware-Reset macht man über eine passende Aktion wie diese (sieh Handbuch): #define mc_HARDWARE_RESET { WDTCTL = 0xDEAD }
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.