Demo of working sleep and deepsleep commands. mbed's version currently does not

Dependencies:   mbed

Fork of DipCortex-SleepyTime by Carl - SolderSplash Labs

Committer:
SolderSplashLabs
Date:
Thu Nov 14 22:38:45 2013 +0000
Revision:
1:03baf535e2fc
Parent:
0:d616150fefca
Removed ticker

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SolderSplashLabs 0:d616150fefca 1 #include "mbed.h"
SolderSplashLabs 0:d616150fefca 2
SolderSplashLabs 0:d616150fefca 3 DigitalIn Button(P0_1);
SolderSplashLabs 0:d616150fefca 4 InterruptIn ButtonIrq(P0_1);
SolderSplashLabs 0:d616150fefca 5
SolderSplashLabs 0:d616150fefca 6 DigitalOut Led2(P1_22);
SolderSplashLabs 0:d616150fefca 7
SolderSplashLabs 0:d616150fefca 8 void sleep_normal ( void )
SolderSplashLabs 0:d616150fefca 9 {
SolderSplashLabs 0:d616150fefca 10 // PCON[PD] set to sleep
SolderSplashLabs 0:d616150fefca 11 LPC_PMU->PCON = 0x0;
SolderSplashLabs 0:d616150fefca 12
SolderSplashLabs 0:d616150fefca 13 // SRC[SLEEPDEEP] set to 0 = sleep
SolderSplashLabs 0:d616150fefca 14 SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
SolderSplashLabs 0:d616150fefca 15
SolderSplashLabs 0:d616150fefca 16 // wait for interrupt
SolderSplashLabs 0:d616150fefca 17 __WFI();
SolderSplashLabs 0:d616150fefca 18 }
SolderSplashLabs 0:d616150fefca 19
SolderSplashLabs 0:d616150fefca 20 // Section 3.9.4 of the LPC11U24 User Manual
SolderSplashLabs 0:d616150fefca 21 void sleep_deep ( void )
SolderSplashLabs 0:d616150fefca 22 {
SolderSplashLabs 0:d616150fefca 23 // PCON[PD] set to deepsleep
SolderSplashLabs 0:d616150fefca 24 LPC_PMU->PCON = 0x1;
SolderSplashLabs 0:d616150fefca 25
SolderSplashLabs 0:d616150fefca 26 // SRC[SLEEPDEEP] set to 1 = deep sleep
SolderSplashLabs 0:d616150fefca 27 SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
SolderSplashLabs 0:d616150fefca 28
SolderSplashLabs 0:d616150fefca 29 // Power up everything after powerdown
SolderSplashLabs 0:d616150fefca 30 LPC_SYSCON->PDAWAKECFG &= 0xFFFFF800;
SolderSplashLabs 0:d616150fefca 31
SolderSplashLabs 0:d616150fefca 32 // wait for interrupt
SolderSplashLabs 0:d616150fefca 33 __WFI();
SolderSplashLabs 0:d616150fefca 34 }
SolderSplashLabs 0:d616150fefca 35
SolderSplashLabs 0:d616150fefca 36 void ButtonPressed ( void )
SolderSplashLabs 0:d616150fefca 37 {
SolderSplashLabs 0:d616150fefca 38 // Wake up ..
SolderSplashLabs 0:d616150fefca 39 Led2 = !Led2;
SolderSplashLabs 0:d616150fefca 40 }
SolderSplashLabs 0:d616150fefca 41
SolderSplashLabs 0:d616150fefca 42 int main()
SolderSplashLabs 0:d616150fefca 43 {
SolderSplashLabs 0:d616150fefca 44 Led2 = 1;
SolderSplashLabs 0:d616150fefca 45 Button.mode(PullUp);
SolderSplashLabs 0:d616150fefca 46 ButtonIrq.fall(ButtonPressed);
SolderSplashLabs 0:d616150fefca 47
SolderSplashLabs 0:d616150fefca 48 while(1)
SolderSplashLabs 0:d616150fefca 49 {
SolderSplashLabs 0:d616150fefca 50 // All I do is sleep
SolderSplashLabs 0:d616150fefca 51 //sleep_normal();
SolderSplashLabs 0:d616150fefca 52 sleep_deep();
SolderSplashLabs 0:d616150fefca 53 }
SolderSplashLabs 0:d616150fefca 54 }