Quiero poner mi LPC1769 en modo de suspensión profunda y dejar que se active con una interrupción de RTC. El LPC tiene que despertarse cada minuto para leer un sensor. Quiero probarlo primero con una luz intermitente en el pin "test_pin" como se ve en el código a continuación. Pero el problema es que el led no parpadea. La interrupción de RTC funciona porque la he probado sin el modo de suspensión profunda y funcionó bien.
Entonces, mi pregunta, ¿puede alguien ayudarme a poner mi LPC1769 en modo de suspensión profunda y activarlo con una interrupción de RTC?
Este es el código que tengo hasta ahora:
'
int main(){
RTC_init();
RTC_start();
deepSleepOn();
while(1);
}
void RTC_init(){
PCONP |= (1 << RTC_POWER);
CCR = 0;
AMR = 0;
CIIR = 0;
ILR |= 0x01; //reset interrupt
}
void RTC_start(){
CIIR |= 0x02; //an increment of the minute value generatues an interrupt
CCR |= 0x01; //time counter enabled
ISER0 |= (1 << RTC_INTERRUPT);
}
void deepSleepOn(){
SCR |= (1 << SLEEPBIT);
PCON &= ~((1 << PM1) | (1 << PM0));
asm("wfi");
}
void RTC_IRQHandler(void){
ILR |= 0x01; //reset interrupt
GPIO_toggle(test_port, test_pin);
deepSleepOn();
} '