Hi All, Can anyone tell me if it's possible to put the mcu in sleep and wake up after my timerA0 has occured. Here's part of my code. But the MCU never wakes shows me the time what am I missing?? int main(void) { // Stop watchdog. WDTCTL = WDTPW + WDTHOLD; _DINT(); rtcInit(); PCD8544_init(); _EINT(); PCD8544_gotoxy(0,0); printf("It's a clock"); /* put MCU in sleep and wake up every sec after time update occured. */ while (1) { //main loop, never ends... LPM0; //sync, wakeup by irq ShowTime(); } } // Timer A0 interrupt service routine void rtcService(void) __interrupt[TIMERA0_VECTOR] { timer++; } met vriendelijke groet, Martijn Broens mBedit Golden Deliciousstraat 40 6679 BL Oosterhout-Nijmegen 0642 703 502 martijn@mart...
LMP mode and RTC
Started by ●December 1, 2004
Reply by ●December 1, 20042004-12-01
Your interrupt MUST exit from LPM0 before exiting the interrupt,
otherwise when the status register is fetched from the stack the micro
will go straight back to sleep.
Al
martijnbroens@mart... wrote:
> Hi All,
>
>
>
> Can anyone tell me if it's possible to put the mcu in sleep and wake
up
> after my timerA0 has occured.
>
>
>
> Here's part of my code. But the MCU never wakes shows me the time what
am I
> missing??
>
>
>
> int main(void)
>
> {
>
> // Stop watchdog.
>
> WDTCTL = WDTPW + WDTHOLD;
>
> _DINT();
>
>
>
> rtcInit();
>
> PCD8544_init();
>
> _EINT();
>
>
>
> PCD8544_gotoxy(0,0); printf("It's a clock");
>
>
>
> /* put MCU in sleep and wake up every sec after time update occured. */
>
> while (1)
>
> { //main loop, never ends...
>
> LPM0; //sync, wakeup by irq
>
> ShowTime();
>
> }
>
> }
>
>
>
>
>
> // Timer A0 interrupt service routine
>
> void rtcService(void) __interrupt[TIMERA0_VECTOR]
>
> {
>
> timer++;
>
> }
>
>
>
>
>
> met vriendelijke groet,
>
> Martijn Broens
>
>
>
>
>
> mBedit
>
> Golden Deliciousstraat 40
>
> 6679 BL Oosterhout-Nijmegen
>
> 0642 703 502
>
> martijn@mart...
>
>
>
>
>
>
>
>
>
>
>
>
> .
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
Reply by ●December 2, 20042004-12-02
Hi, does your compiler support a macro like this one? _BIC_SR_IRQ(LPM0_bits) This macro must be called in the interrupt function that the interrupt function returns to main in active mode. Regards Stefan -----Ursprgliche Nachricht----- Von: martijnbroens@mart... [mailto:martijnbroens@mart...] Gesendet am: Mittwoch, 1. Dezember 2004 22:35 An: msp430@msp4... Betreff: [msp430] LMP mode and RTC Hi All, Can anyone tell me if it's possible to put the mcu in sleep and wake up after my timerA0 has occured. Here's part of my code. But the MCU never wakes shows me the time what am I missing?? int main(void) { // Stop watchdog. WDTCTL = WDTPW + WDTHOLD; _DINT(); rtcInit(); PCD8544_init(); _EINT(); PCD8544_gotoxy(0,0); printf("It's a clock"); /* put MCU in sleep and wake up every sec after time update occured. */ while (1) { //main loop, never ends... LPM0; //sync, wakeup by irq ShowTime(); } } // Timer A0 interrupt service routine void rtcService(void) __interrupt[TIMERA0_VECTOR] { timer++; } met vriendelijke groet, Martijn Broens mBedit Golden Deliciousstraat 40 6679 BL Oosterhout-Nijmegen 0642 703 502 martijn@mart... . Yahoo! Groups Links
Reply by ●December 2, 20042004-12-02
Thanks al, I'll try it _____ From: onestone [mailto:onestone@ones...] Sent: donderdag 2 december 2004 2:38 To: msp430@msp4... Subject: Re: [msp430] LMP mode and RTC Your interrupt MUST exit from LPM0 before exiting the interrupt, otherwise when the status register is fetched from the stack the micro will go straight back to sleep. Al martijnbroens@mart... wrote: > Hi All, > > > > Can anyone tell me if it's possible to put the mcu in sleep and wake up > after my timerA0 has occured. > > > > Here's part of my code. But the MCU never wakes shows me the time what am I > missing?? > > > > int main(void) > > { > > // Stop watchdog. > > WDTCTL = WDTPW + WDTHOLD; > > _DINT(); > > > > rtcInit(); > > PCD8544_init(); > > _EINT(); > > > > PCD8544_gotoxy(0,0); printf("It's a clock"); > > > > /* put MCU in sleep and wake up every sec after time update occured. */ > > while (1) > > { //main loop, never ends... > > LPM0; //sync, wakeup by irq > > ShowTime(); > > } > > } > > > > > > // Timer A0 interrupt service routine > > void rtcService(void) __interrupt[TIMERA0_VECTOR] > > { > > timer++; > > } > > > > > > met vriendelijke groet, > > Martijn Broens > > > > > > mBedit > > Golden Deliciousstraat 40 > > 6679 BL Oosterhout-Nijmegen > > 0642 703 502 > > martijn@mart... > > > > > > > > > > > > > . > > > > Terms of Service.