LED blinking by using deepsleep() and WakeUp. A demo written by Erik Olieman, author the WakeUp class library. Link: https://developer.mbed.org/users/Sissors/code/WakeUp/

Dependencies:   WakeUp mbed

Committer:
icserny
Date:
Thu Jan 07 14:12:28 2016 +0000
Revision:
0:50979b0f2f9e
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
icserny 0:50979b0f2f9e 1 /** 08_wakeup
icserny 0:50979b0f2f9e 2 *
icserny 0:50979b0f2f9e 3 * The LED is "off" for 2 seconds (the target spends this interval in deepsleep() mode)
icserny 0:50979b0f2f9e 4 * then the LED is "on" for the other second. Awakening is arranged by using the WakeUp
icserny 0:50979b0f2f9e 5 * class library.
icserny 0:50979b0f2f9e 6 *
icserny 0:50979b0f2f9e 7 * Author: Erik Olieman
icserny 0:50979b0f2f9e 8 * Link: https://developer.mbed.org/users/Sissors/code/WakeUp/
icserny 0:50979b0f2f9e 9 * Minor modifications: I. Cserny
icserny 0:50979b0f2f9e 10 *
icserny 0:50979b0f2f9e 11 * A note about the implementation of the WakeUp library:
icserny 0:50979b0f2f9e 12 * ------------------------------------------------------
icserny 0:50979b0f2f9e 13 * The KL25z target board uses the same LPTMR for both WakeUp and for ticker generation.
icserny 0:50979b0f2f9e 14 * The WakeUp code is nice, and it will backup the old values when being set, and restore
icserny 0:50979b0f2f9e 15 * those after waking up, allowing you to continue using your ticker, and a ticker which
icserny 0:50979b0f2f9e 16 * was already set will continue again. However you are not allowed to set a new ticker
icserny 0:50979b0f2f9e 17 * after you already set WakeUp, since this will give clashes. Do you for whatever reason
icserny 0:50979b0f2f9e 18 * need to do it (for example you set WakeUp, and then you wake using an InteruptIn),
icserny 0:50979b0f2f9e 19 * you can disable the WakeUp timer and restore the ticker functionality by setting
icserny 0:50979b0f2f9e 20 * WakeUp for 0 seconds.
icserny 0:50979b0f2f9e 21 */
icserny 0:50979b0f2f9e 22
icserny 0:50979b0f2f9e 23 #include "mbed.h"
icserny 0:50979b0f2f9e 24 #include "WakeUp.h"
icserny 0:50979b0f2f9e 25
icserny 0:50979b0f2f9e 26 DigitalOut myled(LED1); //LED_RED
icserny 0:50979b0f2f9e 27
icserny 0:50979b0f2f9e 28 int main() {
icserny 0:50979b0f2f9e 29 //The low-power oscillator can be quite inaccurate on some targets
icserny 0:50979b0f2f9e 30 //this function calibrates it against the main clock
icserny 0:50979b0f2f9e 31 WakeUp::calibrate();
icserny 0:50979b0f2f9e 32
icserny 0:50979b0f2f9e 33 while(1) {
icserny 0:50979b0f2f9e 34 myled = 1; //Switch LED off
icserny 0:50979b0f2f9e 35 WakeUp::set_ms(2000); //Set wakeup time for 2 seconds
icserny 0:50979b0f2f9e 36 deepsleep(); //Enter deepsleep mode
icserny 0:50979b0f2f9e 37 //-- zzZZ sleep here for 2 seconds -------------------
icserny 0:50979b0f2f9e 38 myled = 0; //Switch LED on after wakeup
icserny 0:50979b0f2f9e 39 wait(1); //Run state for 1 sec
icserny 0:50979b0f2f9e 40 }
icserny 0:50979b0f2f9e 41 }