LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)
Dependencies: AQM0802A DigitalSw mbed
Diff: priodMsurement.cpp
- Revision:
- 3:2a8fdcc54c95
- Parent:
- 2:f22110fb3925
- Child:
- 4:001603e48dc8
--- a/priodMsurement.cpp Sat May 27 08:20:20 2017 +0000 +++ b/priodMsurement.cpp Mon Jun 05 12:31:15 2017 +0000 @@ -1,12 +1,9 @@ #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 @@ -17,11 +14,44 @@ int32_t hiCompleteTime; // 1/1 [ms]/count int32_t loCompleteTime; +int32_t D_surement[50][2]; // LCD表示用測定値保管 +uint8_t P_surement = 0; // D_surement[ここ][] のポインタ +#define Z_nonSurement (-1) // D_surementの最終位置(不定値) + int8_t beforeLevel = -1; // 0:Lo 1:Hi -1:timeOut(non Pluse) +#define Z_initialSurement (-1)// surementPut()への初期化指示 +#define Z_hiSurement (0) // surementPut()へのON時間記憶指示 +#define Z_loSurement (1) // surementPut()へのOFF時間記憶指示 +void surementPut(int8_t hilo, int32_t surement) +{ + if(hilo == Z_initialSurement) { + P_surement = 0; + D_surement[P_surement][Z_hiSurement] = (int32_t)Z_initialSurement; + D_surement[P_surement][Z_loSurement] = (int32_t)Z_initialSurement; + } else { + D_surement[P_surement][hilo] = surement; + D_surement[P_surement + 1][hilo] = (int32_t)Z_initialSurement; + + if(hilo == Z_loSurement){ + P_surement++; + } + } +} + InterruptIn lightIn(p22); DigitalOut monitor(LED4); +bool surementData(uint8_t p, int32_t *hiPriod, int32_t *loPriod) +{ + bool ans = beforeLevel == -1 ? true : false; + + *hiPriod = D_surement[p][Z_hiSurement]; + *loPriod = D_surement[p][Z_loSurement]; + + return (ans); + } + void priodMsurementMain(void) { @@ -33,10 +63,12 @@ hiTimer.reset(); if(beforeLevel == 0) { loCompleteTime = loTimer.read_ms(); + surementPut(Z_loSurement, loCompleteTime); printf("hi = %d, lo = %d\r\n",hiCompleteTime, loCompleteTime); } if(beforeLevel == -1) { printf("start\r\n"); + surementPut(Z_initialSurement, (int32_t)Z_initialSurement); } beforeLevel = 1; monitor = 1; @@ -47,6 +79,7 @@ loTimer.reset(); if(beforeLevel == 1) { hiCompleteTime = hiTimer.read_ms(); + surementPut(Z_hiSurement, hiCompleteTime); } beforeLevel = 0; monitor = 0;