int1_wakeup.c - Uses INT1 to wake from sleep mode.ΒΆ
Demonstrates the use of int1 interrupt to wake from Sleep mode. A pushbutton on a int1 pin is used to wake from Sleep mode.
#include "pic24_all.h"
Interrupt Service Routine for INT1
void _ISR _INT1Interrupt(void) {
_INT1IF = 0; //clear the interrupt bit
}
Pushbutton configuration, uses RB13.
void config_pb(void) {
CONFIG_RB13_AS_DIG_INPUT();
ENABLE_RB13_PULLUP();
Wait for pull-up to take effect.
DELAY_US(1);
}
int main(void) {
configBasic(HELLO_MSG);
config_pb();
Configure INT1 interrupt.
CONFIG_INT1_TO_RP(RB13_RP);
_INT1IF = 0; //Clear the interrupt flag
_INT1IP = 2; //Choose a priority
_INT1EP = 1; //negative edge triggerred
_INT1IE = 1; //enable INT1 interrupt
while (1) {
outString("Entering Sleep mode, press button to wake.\n");
//finish sending characters before sleeping
WAIT_UNTIL_TRANSMIT_COMPLETE_UART1();
SLEEP(); //macro for asm("pwrsav #0")
}
}