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.
main.cpp@0:273b2570ead8, 2013-11-20 (annotated)
- Committer:
- Sissors
- Date:
- Wed Nov 20 21:26:47 2013 +0000
- Revision:
- 0:273b2570ead8
- Child:
- 1:85ca0ec1e66f
Example of sleep modii of the LPC81x
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sissors | 0:273b2570ead8 | 1 | #include "mbed.h" |
Sissors | 0:273b2570ead8 | 2 | |
Sissors | 0:273b2570ead8 | 3 | DigitalOut myled(LED1); |
Sissors | 0:273b2570ead8 | 4 | InterruptIn inter(D0); |
Sissors | 0:273b2570ead8 | 5 | |
Sissors | 0:273b2570ead8 | 6 | |
Sissors | 0:273b2570ead8 | 7 | void interirq(void) { |
Sissors | 0:273b2570ead8 | 8 | |
Sissors | 0:273b2570ead8 | 9 | } |
Sissors | 0:273b2570ead8 | 10 | |
Sissors | 0:273b2570ead8 | 11 | int main() { |
Sissors | 0:273b2570ead8 | 12 | inter.rise(interirq); |
Sissors | 0:273b2570ead8 | 13 | |
Sissors | 0:273b2570ead8 | 14 | //Disable BOD and WDT: |
Sissors | 0:273b2570ead8 | 15 | LPC_SYSCON->PDRUNCFG |= (1<<3) | (1<<6); |
Sissors | 0:273b2570ead8 | 16 | |
Sissors | 0:273b2570ead8 | 17 | while(1) { |
Sissors | 0:273b2570ead8 | 18 | for (int i = 0; i<10; i++) { |
Sissors | 0:273b2570ead8 | 19 | myled = 0; |
Sissors | 0:273b2570ead8 | 20 | wait(0.2); |
Sissors | 0:273b2570ead8 | 21 | myled = 1; |
Sissors | 0:273b2570ead8 | 22 | wait(0.2); |
Sissors | 0:273b2570ead8 | 23 | } |
Sissors | 0:273b2570ead8 | 24 | //sleep(); |
Sissors | 0:273b2570ead8 | 25 | deepsleep(); |
Sissors | 0:273b2570ead8 | 26 | } |
Sissors | 0:273b2570ead8 | 27 | } |