edge / Mbed 2 deprecated testReedSimple

Dependencies:   libmDot mbed-rtos mbed

Committer:
boddeke
Date:
Thu May 26 09:03:15 2016 +0000
Revision:
3:238fa32bcb32
Parent:
2:a2371a150758
working wakeup (reed between pa_0 and vss)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
boddeke 0:fc05a249a095 1 #include "mbed.h"
boddeke 0:fc05a249a095 2 #include "rtos.h"
boddeke 0:fc05a249a095 3 #include "mDot.h"
boddeke 0:fc05a249a095 4 #include "MTSLog.h"
boddeke 0:fc05a249a095 5 #include "MTSText.h"
boddeke 0:fc05a249a095 6
boddeke 0:fc05a249a095 7 using namespace mts;
boddeke 0:fc05a249a095 8
boddeke 0:fc05a249a095 9
boddeke 0:fc05a249a095 10 #define REED_PORT PA_0
boddeke 0:fc05a249a095 11
boddeke 3:238fa32bcb32 12 // PA_0 = WKUP
boddeke 3:238fa32bcb32 13 // wakeup on rising edge
boddeke 3:238fa32bcb32 14 // reeed on PA_0 to Vss (3.3V)
boddeke 3:238fa32bcb32 15 // no internal pull in sleep mode
boddeke 3:238fa32bcb32 16 DigitalIn reed_sensor(PA_0, PullNone);
boddeke 2:a2371a150758 17
boddeke 0:fc05a249a095 18 RawSerial pc(PA_2,NC);
boddeke 0:fc05a249a095 19
boddeke 0:fc05a249a095 20 volatile int reed_has_changed = 0;
boddeke 0:fc05a249a095 21
boddeke 0:fc05a249a095 22 void isr_reed_sensor_change(void) {
boddeke 0:fc05a249a095 23 reed_has_changed++;
boddeke 0:fc05a249a095 24 }
boddeke 0:fc05a249a095 25
boddeke 0:fc05a249a095 26 main() {
boddeke 0:fc05a249a095 27
boddeke 0:fc05a249a095 28 pc.baud(115200);
boddeke 0:fc05a249a095 29
boddeke 0:fc05a249a095 30 pc.printf("Build: " __DATE__ ", " __TIME__"\r\n");
boddeke 0:fc05a249a095 31
boddeke 1:e504b1f72d05 32 mDot* dot = mDot::getInstance();
boddeke 0:fc05a249a095 33 dot->setLogLevel(MTSLog::TRACE_LEVEL);
boddeke 0:fc05a249a095 34
boddeke 3:238fa32bcb32 35 // clear the EWUP state
boddeke 2:a2371a150758 36 if(dot->getStandbyFlag()){
boddeke 2:a2371a150758 37 pc.printf("clearing standby flag\r\n");
boddeke 2:a2371a150758 38 PWR->CSR &= ~PWR_CSR_EWUP;
boddeke 2:a2371a150758 39 }
boddeke 2:a2371a150758 40
boddeke 2:a2371a150758 41 // DigitalIn reed_sensor(REED_PORT);
boddeke 0:fc05a249a095 42 // reed_sensor.mode(PullUp);
boddeke 0:fc05a249a095 43
boddeke 0:fc05a249a095 44 InterruptIn reed_sensor_change(REED_PORT);
boddeke 0:fc05a249a095 45 reed_sensor_change.fall(&isr_reed_sensor_change);
boddeke 0:fc05a249a095 46 reed_sensor_change.rise(&isr_reed_sensor_change);
boddeke 3:238fa32bcb32 47 reed_sensor_change.mode(PullNone);
boddeke 2:a2371a150758 48
boddeke 0:fc05a249a095 49 while(1) {
boddeke 0:fc05a249a095 50
boddeke 0:fc05a249a095 51 for(int i=0;i<10;i++) {
boddeke 0:fc05a249a095 52
boddeke 2:a2371a150758 53 pc.printf("Read %d, Changes: %d\r\n",reed_sensor.read(),reed_has_changed);
boddeke 0:fc05a249a095 54 wait(1.0);
boddeke 0:fc05a249a095 55 }
boddeke 0:fc05a249a095 56
boddeke 3:238fa32bcb32 57 dot->sleep((int)30, mDot::RTC_ALARM_OR_INTERRUPT, true);
boddeke 0:fc05a249a095 58 }
boddeke 0:fc05a249a095 59 }