I must be missing something.. I have timer T0 running as a PWM generator with the AS0 bit in ASSR set, and external 32kHz crystal. Now I want to put the system to sleep, and have T0 wake me up once a second for time keeping. The problem is that once I go to sleep, the T0 int only happens ONCE! It gets better though.. If I hang a breakpoint in the T0 ISR, and F10 through it, I get through the loop just fine, and I keep getting to the T0 int. It's only when I let the code run without F10ing it, that it fails to hit the T0OV isr. Without the sleep, the T0 int fires once a second, and everything acts like it should. As I read the data sheet, T0 is supposed to be enabled to the external crystal in ESB mode, so what's not right here? At this point, I've decided to go to sleep: So, I configure T0 for normal operation instead of PWM ;Set timer 0 for once a second wakeups ldi TEMP,128 ; OUT TCNT0,TEMP ;LOAD THE COUNT UP COUNTER ldi TEMP,$06 ; out TCCR0,TEMP ; I wait to make sure everything "took" T0_Sleep_Update: in TEMP,ASSR ;0000XXXX Reserved andi TEMP,$07 ;XXXXX111 T0 async mode enable ;00000--- Busy flags, 1 if register updating brne T0_Sleep_Update ; I clear off the T0 int flags: in TEMP,TIFR ; andi TEMP,$03 ;Mask out non T0 bits out TIFR,TEMP ;Turn off flags by writing 1's to them I turn off the T2 overflow int that was doing my timekeeping while awake. I turn on the T0 overflow int. in TEMP,TIMSK ; andi TEMP,$BF ;10111111 T2 overflow off ori TEMP,$01 ;00000001 T0 overflow on out TIMSK,TEMP ; I set the sleep mode Snooz_Loop: ;Set up the sleep mode in TEMP,MCUCR ; ori TEMP,$3C ; Extended Standby mode out MCUCR,TEMP ; Then I sleep: sleep ; in TEMP,MCUCR ; andi TEMP,$DF ; disable sleep out MCUCR,TEMP ; ;Wake up here on pressed button ints, or T0 overflow I do some checks here after I wake up and the T0 ISR exits, breq Snooz_Loop ;If nothing going on, resume sleeping If I was to get that far, then i would restore everything on the way back to normal operation.
Message
Sleep and timer T0
2005-06-17 by Dave VanHorn
Attachments
- No local attachments were found for this message.