Ich hab jetzt den Tiny13 zum 116ten mal geflashed und schaffe es immer noch nicht den Watchdog dazu zu bringen, nach einem "POWERDOWN" den Chip einfach wieder zu erwecken so dass das Programm exakt nach dem POWERDOWN wieder weiter geht.
Ich führe im "echten" Programm eine Zählvariable mit, die nicht verloren gehen darf, deshalb kann ich hier kein Reset brauchen.
Scheinbar tut er aber genau das.
Hier mal das Test-Programm:
Hier läuft das Programm nie ins "End". Die Abfolge nach dem Power-ON ist:Code:$regfile = "ATtiny13.dat" 'Hinweis: ATTiny13 mit internem 1,2MHz-Takt (9,6 MHz / 8) $framesize = 32 $swstack = 20 $hwstack = 20 $crystal = 1200000 Wdtcr = &B11110001 'gewollt: 8 Sekunden Time-Out OHNE Reset (soll weitermachen wo er aufgehört hat) Enable Interrupts Config Pinb.4 = Output Const Ein = 1 Const Aus = 0 heizen Alias Portb.4 Wait 5 Start WATCHDOG heizen = Ein Reset Watchdog POWERDOWN heizen = Aus End
- 5 Sekunden Pause (vom WAIT)
- EIN
- 8 Sekunden Pause (vom WD)
- AUS
- 5 Sekunden Pause
- ...
- ...
- u.s.w.
Also macht der Tiny offensichtlich einen Reset.
Ich weis, dass man den WD im wdtcr-Register auch auf "Interrupt-Mode" stellen kann und nach meinem Ermessen hab ich das auch mit obiger Einstellung getan. (und noch viele andere Kombinationen probiert)
Aber trotzdem läuft es falsch.
Beim Googlen waren auch mehrere Programme zu finden, wo es genau so gemacht wurde. (z.B. hier: http://www.geoclub.de/viewtopic.php?...18400&start=30)
Oder fast genau so.
Irgendwo mach ich einen Fehler.
Ideas? Anybody?








Zitieren

Lesezeichen