Example of using sleep/deepsleep with the LPC812
After some initial code the device goes into powerdown (deepsleep), or sleep mode. By creating a rising edge on pin D0 (I just use a cable to connect it to Vdd) it will leave sleep, blink blue, and go to sleep again. Aditionally after 10 seconds of sleep it will blink green using the low-power wake-up timer.
Brownout detection and Watchdog timer are disabled since in deepsleep they are the primary power consumers.
Diff: main.cpp
- Revision:
- 1:85ca0ec1e66f
- Parent:
- 0:273b2570ead8
--- a/main.cpp Wed Nov 20 21:26:47 2013 +0000 +++ b/main.cpp Sat Nov 23 11:36:34 2013 +0000 @@ -1,27 +1,42 @@ #include "mbed.h" +#include "WakeUp.h" -DigitalOut myled(LED1); +DigitalOut led1(LED1); +DigitalOut led2(LED2); InterruptIn inter(D0); -void interirq(void) { +void interirq(void) +{ + led1 = 0; + wait(0.2); + led1 = 1; +} +void wakeirq(void) +{ + led2 = 0; + wait(0.2); + led2 = 1; } -int main() { +int main() +{ + led1 = 1; + led2 = 1; inter.rise(interirq); - - //Disable BOD and WDT: + WakeUp::calibrate(); + WakeUp::attach(wakeirq); + + + //Disable BOD and WDT (only done to get nice low deepsleep power): LPC_SYSCON->PDRUNCFG |= (1<<3) | (1<<6); - + + WakeUp::set(10); while(1) { - for (int i = 0; i<10; i++) { - myled = 0; - wait(0.2); - myled = 1; - wait(0.2); - } //sleep(); deepsleep(); + WakeUp::set(10); } } +