LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)
Dependencies: AQM0802A DigitalSw mbed
priodMsurement.cpp
- Committer:
- suupen
- Date:
- 2017-05-27
- Revision:
- 2:f22110fb3925
- Parent:
- 1:d4291fd3a94c
- Child:
- 3:2a8fdcc54c95
File content as of revision 2:f22110fb3925:
#include "mbed.h" #include <AQM0802A.h> #include "priodMsurement.h" DigitalOut dbgPort (p19); DigitalOut dbg2Port (p18); I2C i2c(p28, p27); AQM0802A lcd(i2c); // if 5.0v supply, (i2c, false); Timer hiTimer; // hi priod timer Timer loTimer; // low priod timer Timer aTimer; Ticker checkTicker; int32_t hiCompleteTime; // 1/1 [ms]/count int32_t loCompleteTime; int8_t beforeLevel = -1; // 0:Lo 1:Hi -1:timeOut(non Pluse) InterruptIn lightIn(p22); DigitalOut monitor(LED4); void priodMsurementMain(void) { } void hiEdge(void) { hiTimer.reset(); if(beforeLevel == 0) { loCompleteTime = loTimer.read_ms(); printf("hi = %d, lo = %d\r\n",hiCompleteTime, loCompleteTime); } if(beforeLevel == -1) { printf("start\r\n"); } beforeLevel = 1; monitor = 1; } void loEdge(void) { loTimer.reset(); if(beforeLevel == 1) { hiCompleteTime = hiTimer.read_ms(); } beforeLevel = 0; monitor = 0; } void pulseCheck(void) { int32_t lo = loTimer.read_ms(); int32_t hi = hiTimer.read_ms(); if((lo > Z_nonSignalTime) && (beforeLevel == 0)) { // pulse end beforeLevel = -1; printf("hi = %d, lo = --\r\n",hiCompleteTime); printf("end\r\n"); } } void priodMsurementInitalize(void) { aTimer.start(); hiTimer.start(); loTimer.start(); checkTicker.attach_us(&pulseCheck, 1000); lightIn.rise(&hiEdge); lightIn.fall(&loEdge); }