Hi,
I have a phenomenon with interrupts and LPM which seams very strange to me.
I have two methods (A and B) that I think should do the same, but they don't.
The difference is, where the Interrupt enable bit is cleared.
My device goes to sleep by timeout or by user command in menu. Some other code
I omitted for this post is executed when entering and returning from sleep.
Device wakes up by button press.
behaviour in A:
Device goes to sleep, by execution of GoSleeping(). Then the button is pressed
and device wakes up. When going to sleep for the second time, the device will
never more wake up, when pressing the button.
behaviour in B:
It works as it should (for my application). Device can be putted in sleep and
waked up again as many times you want.
Where is the problem in clearing the interrupt enable during the ISR? Or is the
difference in behaviour caused by something else?
I hope I post enough to localize the cause. If not please ask me for more
details.
void GoSleeping(void){
P2IE |= 0x10; // Enable interrupt
P2IFG &= ~0x10; // clear interrupt flag
_BIS_SR(LPM4_bits); // Enter LPM4 w/ interrupt
P2IE &=~ 0x10; // In method B here
}
// P2.x isr
interrupt (PORT2_VECTOR) Port2 (void){
if(P2IFG & 0x10) {
P2IE &=~ 0x10; // In method A here
P2IFG &= ~0x10; // clear interrupt flag
(line can be omitted)
_BIC_SR_IRQ(LPM4_bits); // LPM4_EXIT;
}
}
I use:
- msp430F169
- mspgcc toolkit Build date: 20070216
Best Regards
Pascal
--------------------------------------------------------
Disclaimer
This message might contain confidential and privileged information and is
intended only for the individuals or entities to which it is addressed. It
should not be copied, reviewed, retransmitted, disseminated or otherwise used
by persons or entities other than the intended recipient. If this message was
received in error, please contact the sender and delete the material from your
computer system(s).
Receipt of this message does neither generate any right of further use nor
entitles the recipient to file and/or obtain any intellectual property rights
based thereon.