Der ATmega169 will nicht einschalfen, wo liegt der Fehler? ldi temp, (1<<SM2)|(1<<SM1)|(0<<SM0)|(1<<SE) STS(SMCR),temp LOOP: SLEEP call LED_ON call WAIT_100mms call LED_OFF call WAIT_100mms rjmp LOOP
Hi
>STS(SMCR),temp
Versuche es mal mit 'out SMCR,temp'.
MfG Spess
Aus mehreren Gründen funktionierte es nicht: - POWER-save hätte aktiviert werden müssen, da Timer2 mit 32kHz Quarz im Asynchronmodus arbeitet - out SMCR,temp , danke spess53 Und so schläft der ATmega169V ein: ldi temp, (0<<SM2)|(1<<SM1)|(1<<SM0)|(1<<SE) ; POWER-save OUT(SMCR),temp LOOP: SLEEP rjmp LOOP
:
Bearbeitet durch User
... und noch ein Problem: Watchdog beißt nach wenigen ms schon zu, obwohl 2 Sekunden eingestellt sind Anmerkung: 'OUT(WDTCR),temp' bringt eine Fehlermeldung ldi temp, (0<<WDCE)|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0) ; 2 Sekunden STS(WDTCR),temp LOOP: rjmp LOOP
"Bit 4 – WDCE: Watchdog Change Enable" ... "This bit must also be set when changing the prescaler bits." Also würde ich es damit und der entsprechenden "timed sequence" versuchen; ob Letztere in diesem Fall nötig ist, kann ich aus dem Datenblatt nicht herauslesen.
Danke S. Landolt für den Tipp :-) So funktioniert es: ldi temp, ( 1 <<WDCE)|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0) STS(WDTCR),temp ldi temp, ( 0 <<WDCE)|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0) STS(WDTCR),temp LOOP: rjmp LOOP
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.