Demo of how to wakeup from sleep mode on timers.
Dependencies: WakeUp mBuino_Sleep mbed
main.cpp@0:a9faf46beadf, 2014-09-28 (annotated)
- Committer:
- AndyA
- Date:
- Sun Sep 28 09:25:24 2014 +0000
- Revision:
- 0:a9faf46beadf
First commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AndyA | 0:a9faf46beadf | 1 | // example code on how to wake from sleep mode after a fixed period of time. |
AndyA | 0:a9faf46beadf | 2 | |
AndyA | 0:a9faf46beadf | 3 | // Normal sleep we can use a timer but there isn't a huge power saving. |
AndyA | 0:a9faf46beadf | 4 | |
AndyA | 0:a9faf46beadf | 5 | // DeepSleep or PowerDown we need to use the watchdog (via the WakeUp library) |
AndyA | 0:a9faf46beadf | 6 | |
AndyA | 0:a9faf46beadf | 7 | // pick which version to compile, 1 for sleep, 0 for power down |
AndyA | 0:a9faf46beadf | 8 | #define normalSleep 0 |
AndyA | 0:a9faf46beadf | 9 | |
AndyA | 0:a9faf46beadf | 10 | #if normalSleep |
AndyA | 0:a9faf46beadf | 11 | |
AndyA | 0:a9faf46beadf | 12 | // code for normal sleep mode: |
AndyA | 0:a9faf46beadf | 13 | #include "mbed.h" |
AndyA | 0:a9faf46beadf | 14 | #include "mBuinoSleep.h" |
AndyA | 0:a9faf46beadf | 15 | |
AndyA | 0:a9faf46beadf | 16 | Ticker OneSecClock; |
AndyA | 0:a9faf46beadf | 17 | |
AndyA | 0:a9faf46beadf | 18 | void onClock() |
AndyA | 0:a9faf46beadf | 19 | { |
AndyA | 0:a9faf46beadf | 20 | NULL; // empty function, just need a place holder here |
AndyA | 0:a9faf46beadf | 21 | } |
AndyA | 0:a9faf46beadf | 22 | |
AndyA | 0:a9faf46beadf | 23 | int main () |
AndyA | 0:a9faf46beadf | 24 | { |
AndyA | 0:a9faf46beadf | 25 | LEDs = 1; |
AndyA | 0:a9faf46beadf | 26 | |
AndyA | 0:a9faf46beadf | 27 | OneSecClock.attach(onClock,1); |
AndyA | 0:a9faf46beadf | 28 | |
AndyA | 0:a9faf46beadf | 29 | while (1) { |
AndyA | 0:a9faf46beadf | 30 | wait(0.1); |
AndyA | 0:a9faf46beadf | 31 | mBuinoSleep(Sleep); |
AndyA | 0:a9faf46beadf | 32 | if (LEDs == 127) |
AndyA | 0:a9faf46beadf | 33 | LEDs = 1; |
AndyA | 0:a9faf46beadf | 34 | else |
AndyA | 0:a9faf46beadf | 35 | LEDs = LEDs + 1; |
AndyA | 0:a9faf46beadf | 36 | } |
AndyA | 0:a9faf46beadf | 37 | } |
AndyA | 0:a9faf46beadf | 38 | |
AndyA | 0:a9faf46beadf | 39 | |
AndyA | 0:a9faf46beadf | 40 | #else |
AndyA | 0:a9faf46beadf | 41 | |
AndyA | 0:a9faf46beadf | 42 | // code for power down mode |
AndyA | 0:a9faf46beadf | 43 | #include "mbed.h" |
AndyA | 0:a9faf46beadf | 44 | #include "mBuinoSleep.h" |
AndyA | 0:a9faf46beadf | 45 | #include "WakeUp.h" |
AndyA | 0:a9faf46beadf | 46 | |
AndyA | 0:a9faf46beadf | 47 | int main () |
AndyA | 0:a9faf46beadf | 48 | { |
AndyA | 0:a9faf46beadf | 49 | WakeUp::calibrate(); |
AndyA | 0:a9faf46beadf | 50 | LEDs = 1; |
AndyA | 0:a9faf46beadf | 51 | |
AndyA | 0:a9faf46beadf | 52 | while (1) { |
AndyA | 0:a9faf46beadf | 53 | wait(0.1); |
AndyA | 0:a9faf46beadf | 54 | WakeUp::set_ms(900); |
AndyA | 0:a9faf46beadf | 55 | mBuinoSleep(PowerDownWD); |
AndyA | 0:a9faf46beadf | 56 | if (LEDs == 127) |
AndyA | 0:a9faf46beadf | 57 | LEDs = 1; |
AndyA | 0:a9faf46beadf | 58 | else |
AndyA | 0:a9faf46beadf | 59 | LEDs = LEDs + 1; |
AndyA | 0:a9faf46beadf | 60 | } |
AndyA | 0:a9faf46beadf | 61 | } |
AndyA | 0:a9faf46beadf | 62 | |
AndyA | 0:a9faf46beadf | 63 | #endif |