LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)
Dependencies: AQM0802A DigitalSw mbed
Diff: priodMsurement.cpp
- Revision:
- 5:f137bb7eeda6
- Parent:
- 4:001603e48dc8
--- a/priodMsurement.cpp Tue Jun 06 13:15:07 2017 +0000 +++ b/priodMsurement.cpp Thu Jun 08 04:46:15 2017 +0000 @@ -1,10 +1,6 @@ #include "mbed.h" #include "priodMsurement.h" -DigitalOut dbgPort (p19); -DigitalOut dbg2Port (p18); - - Timer hiTimer; // hi priod timer Timer loTimer; // low priod timer Timer aTimer; @@ -19,6 +15,13 @@ int8_t P_surement = 0; // D_surement[ここ][] のポインタ #define Z_nonSurement (-1) // D_surementの最終位置(不定値) +bool F_start = false; // 測定開始要求 false:なし true:あり +void priodMsurementRequest(void) +{ + F_start = true; + } + + int8_t beforeLevel = -1; // 0:Lo 1:Hi -1:timeOut(non Pluse) #define Z_initialSurement (-1)// surementPut()への初期化指示 @@ -40,7 +43,7 @@ } } -InterruptIn lightIn(p22); +InterruptIn lightIn(p18); DigitalOut monitor(LED4); bool surementData(int8_t *p, int32_t *hiPriod, int32_t *loPriod) { @@ -69,11 +72,12 @@ beforeLevel = 1; printf("hi = %d, lo = %d\r\n",hiCompleteTime, loCompleteTime); } - if(beforeLevel == -1) { -// if((beforeLevel == -1) && (F_start == true)) { +// if(beforeLevel == -1) { + if((beforeLevel == -1) && (F_start == true)) { printf("start\r\n"); surementPut(Z_initialSurement, (int32_t)Z_initialSurement); beforeLevel = 1; + F_start = false; } monitor = 1; } @@ -84,8 +88,8 @@ if(beforeLevel == 1) { hiCompleteTime = hiTimer.read_ms(); surementPut(Z_hiSurement, hiCompleteTime); + beforeLevel = 0; } - beforeLevel = 0; monitor = 0; }