new one sleep / deepsleep and timer wakeup sample code

Dependencies:   WakeUp mbed

Committer:
joshchen
Date:
Thu Nov 27 03:12:02 2014 +0000
Revision:
0:53ff53c686e1
leverage https://developer.mbed.org/users/Sissors/code/WakeUp/; and original sleep sample code to make new one

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joshchen 0:53ff53c686e1 1 #include "mbed.h"
joshchen 0:53ff53c686e1 2 #include "WakeUp.h"
joshchen 0:53ff53c686e1 3
joshchen 0:53ff53c686e1 4 InterruptIn event(USER_BUTTON);
joshchen 0:53ff53c686e1 5 DigitalOut myled(LED1);
joshchen 0:53ff53c686e1 6
joshchen 0:53ff53c686e1 7 int go_to_sleep = 0;
joshchen 0:53ff53c686e1 8
joshchen 0:53ff53c686e1 9 void pressed()
joshchen 0:53ff53c686e1 10 {
joshchen 0:53ff53c686e1 11 printf("Button pressed\n");
joshchen 0:53ff53c686e1 12 go_to_sleep = !go_to_sleep;
joshchen 0:53ff53c686e1 13 }
joshchen 0:53ff53c686e1 14
joshchen 0:53ff53c686e1 15 void gotoSleep(int seconds)
joshchen 0:53ff53c686e1 16 {
joshchen 0:53ff53c686e1 17 //Set wakeup time for seconds
joshchen 0:53ff53c686e1 18 int s=seconds*1000;
joshchen 0:53ff53c686e1 19 WakeUp::set_ms(s);
joshchen 0:53ff53c686e1 20
joshchen 0:53ff53c686e1 21 printf("==> Entering deepsleep until %d seconds\n", seconds);
joshchen 0:53ff53c686e1 22 //Enter deepsleep, the program won't go beyond this point until it is woken up
joshchen 0:53ff53c686e1 23 deepsleep();
joshchen 0:53ff53c686e1 24 wait(0.1);
joshchen 0:53ff53c686e1 25 }
joshchen 0:53ff53c686e1 26
joshchen 0:53ff53c686e1 27 void sleepUtilPressed()
joshchen 0:53ff53c686e1 28 {
joshchen 0:53ff53c686e1 29 printf("==> Entering deepsleep (press user button to resume)\n");
joshchen 0:53ff53c686e1 30 //sleep();
joshchen 0:53ff53c686e1 31 deepsleep();
joshchen 0:53ff53c686e1 32 wait(0.1);
joshchen 0:53ff53c686e1 33 }
joshchen 0:53ff53c686e1 34
joshchen 0:53ff53c686e1 35 int main()
joshchen 0:53ff53c686e1 36 {
joshchen 0:53ff53c686e1 37 int i = 0;
joshchen 0:53ff53c686e1 38
joshchen 0:53ff53c686e1 39 wait(5);
joshchen 0:53ff53c686e1 40 //The low-power oscillator can be quite inaccurate on some targets
joshchen 0:53ff53c686e1 41 //this function calibrates it against the main clock
joshchen 0:53ff53c686e1 42 WakeUp::calibrate();
joshchen 0:53ff53c686e1 43
joshchen 0:53ff53c686e1 44 event.fall(&pressed);
joshchen 0:53ff53c686e1 45
joshchen 0:53ff53c686e1 46 while (1) {
joshchen 0:53ff53c686e1 47 if (go_to_sleep) {
joshchen 0:53ff53c686e1 48 myled = 0;
joshchen 0:53ff53c686e1 49 gotoSleep(2);
joshchen 0:53ff53c686e1 50 //sleepUtilPressed();
joshchen 0:53ff53c686e1 51 go_to_sleep=0;
joshchen 0:53ff53c686e1 52 } else {
joshchen 0:53ff53c686e1 53 printf("%d: Running\n", i);
joshchen 0:53ff53c686e1 54 myled = !myled;
joshchen 0:53ff53c686e1 55 wait(1.0);
joshchen 0:53ff53c686e1 56 }
joshchen 0:53ff53c686e1 57 i++;
joshchen 0:53ff53c686e1 58 }
joshchen 0:53ff53c686e1 59 }