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!
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();
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.