Hi, benutze als µC den Tiny13. Ich moechte gerne soviel Stromsparen wie es geht deshalb wollte ich den µC in Powerdown Modus schicken. Nach einer vordefinierten Zeit soll der µC wieder erwachen und ein paar Sachen erledigen und dann wieder in Powerdown Modus gehen. Entweder verstehe ich den Watchdog falsch oder ich mache beim initalisieren ein Fehler. Eigentlich sollte die LED jetzt alle 8 Sekunden an und aus gehen. Leider blinkt sie viel schneller somit scheint der Watchdog garnicht auf 8 Sekunden initalisiert zuwerden. Nach dem Reset steht der Watchdog standardmaessig ja auf 16ms. Mein Testprogramm braucht aber nicht laenger als 100µs um den Watchdog neu zuinitalisieren. Ich hoffe jemand kann mir auf Spruenge helfen. Mfg Dirk start: rcall wtd_on sei main: sbi pinb,led ; LED toggeln ldi temp1, (1<<SE) | (1<<SM1) ; Powerdown and Sleep Mode enable out mcucr, temp1 sleep rjmp main Wtd_on: in temp1,WDTCR sbr temp1, 1<<WDTIE | 1<<WDE | 1<<WDP3 | 1<<WDP0 ;8.0s out WDTCR,temp1 ret
Hi, @Crazy horse: Stack hab ich initalisiert. Problem war das man auch das WDCE (WdtChangebit) schreiben muss. Das funktionerende Listing: Wtd_on: cli in r16, WDTCR ori r16, (1<<WDCE) | (1<<WDE) out WDTCR, r16 ldi r16, (1<<WDE) | (1<<WDP3) | (1<<WDP0) out WDTCR, r16 sei ret Wtd_off: in temp1,WDTCR sbr temp1, 1<<WDTIE | 1<<WDE out WDTCR,temp1 cbr temp1, 1<<WDE out WDTCR,temp1 ret Mfg Dirk
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.