Ich löse einen Software-Reset per Watchdog so aus: cli(); wdt_enable (WDTO_15MS); while (1); Mein Programm verhält sich aber nicht so, wie es das nach einem externen Reset (AVRISP, An/Aus) macht. Es startet zwar neu, aber irgendwelche Variablen oder Interrupts sind wohl durcheinander, so daß nicht das gewünschte Verhalten auftritt. Woran könnte das liegen? Dank!
Gast
#306222
Willst du jetzt, dass der Controller "nackich" ist, oder willst du deine Werte behalten? Im Datenblatt gibt es eine schöne Tabelle, in der beschrieben ist, was sich alles in welchem Zustand nach ein Reset jeglicher Art (Watchdog, Brownout...) drin steht.
ja, nackich wie nach spannnung aus und wieder einschalten bzw. so, wie es durch einen externen reset vom AVRISP ist (allerdings ist da wohl alles ungewollte gelöscht worden) .. habe im forum schon gelesen, daß der ram seine daten nicht verliert. werde mal ins datenblatt sehen.
seh ich das richtig, daß ich den watchdog direkt nach dem neustart wieder ausschalten muß?
Ja, aber auch das "MCU Status Register" löschen. Da steht drin, wie der Reset ausgelöst wurde (wenn man's wissen will, also vorher auslesen) und anscheinend startet das dann auch den Watchdog wieder (nur watchdog ausschalten reicht nicht). Das hier gilt zumindest für ein tiny2313. MCUSR = 0; wdt_disable();
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.