LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)
Dependencies: AQM0802A DigitalSw mbed
priodMsurement.cpp@5:f137bb7eeda6, 2017-06-08 (annotated)
- Committer:
- suupen
- Date:
- Thu Jun 08 04:46:15 2017 +0000
- Revision:
- 5:f137bb7eeda6
- Parent:
- 4:001603e48dc8
???;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 1:d4291fd3a94c | 1 | #include "mbed.h" |
suupen | 1:d4291fd3a94c | 2 | #include "priodMsurement.h" |
suupen | 1:d4291fd3a94c | 3 | |
suupen | 2:f22110fb3925 | 4 | Timer hiTimer; // hi priod timer |
suupen | 2:f22110fb3925 | 5 | Timer loTimer; // low priod timer |
suupen | 2:f22110fb3925 | 6 | Timer aTimer; |
suupen | 2:f22110fb3925 | 7 | |
suupen | 2:f22110fb3925 | 8 | Ticker checkTicker; |
suupen | 2:f22110fb3925 | 9 | |
suupen | 2:f22110fb3925 | 10 | int32_t hiCompleteTime; // 1/1 [ms]/count |
suupen | 2:f22110fb3925 | 11 | int32_t loCompleteTime; |
suupen | 2:f22110fb3925 | 12 | |
suupen | 4:001603e48dc8 | 13 | |
suupen | 3:2a8fdcc54c95 | 14 | int32_t D_surement[50][2]; // LCD表示用測定値保管 |
suupen | 4:001603e48dc8 | 15 | int8_t P_surement = 0; // D_surement[ここ][] のポインタ |
suupen | 3:2a8fdcc54c95 | 16 | #define Z_nonSurement (-1) // D_surementの最終位置(不定値) |
suupen | 3:2a8fdcc54c95 | 17 | |
suupen | 5:f137bb7eeda6 | 18 | bool F_start = false; // 測定開始要求 false:なし true:あり |
suupen | 5:f137bb7eeda6 | 19 | void priodMsurementRequest(void) |
suupen | 5:f137bb7eeda6 | 20 | { |
suupen | 5:f137bb7eeda6 | 21 | F_start = true; |
suupen | 5:f137bb7eeda6 | 22 | } |
suupen | 5:f137bb7eeda6 | 23 | |
suupen | 5:f137bb7eeda6 | 24 | |
suupen | 2:f22110fb3925 | 25 | int8_t beforeLevel = -1; // 0:Lo 1:Hi -1:timeOut(non Pluse) |
suupen | 1:d4291fd3a94c | 26 | |
suupen | 3:2a8fdcc54c95 | 27 | #define Z_initialSurement (-1)// surementPut()への初期化指示 |
suupen | 3:2a8fdcc54c95 | 28 | #define Z_hiSurement (0) // surementPut()へのON時間記憶指示 |
suupen | 3:2a8fdcc54c95 | 29 | #define Z_loSurement (1) // surementPut()へのOFF時間記憶指示 |
suupen | 3:2a8fdcc54c95 | 30 | void surementPut(int8_t hilo, int32_t surement) |
suupen | 3:2a8fdcc54c95 | 31 | { |
suupen | 3:2a8fdcc54c95 | 32 | if(hilo == Z_initialSurement) { |
suupen | 3:2a8fdcc54c95 | 33 | P_surement = 0; |
suupen | 3:2a8fdcc54c95 | 34 | D_surement[P_surement][Z_hiSurement] = (int32_t)Z_initialSurement; |
suupen | 3:2a8fdcc54c95 | 35 | D_surement[P_surement][Z_loSurement] = (int32_t)Z_initialSurement; |
suupen | 3:2a8fdcc54c95 | 36 | } else { |
suupen | 3:2a8fdcc54c95 | 37 | D_surement[P_surement][hilo] = surement; |
suupen | 3:2a8fdcc54c95 | 38 | D_surement[P_surement + 1][hilo] = (int32_t)Z_initialSurement; |
suupen | 4:001603e48dc8 | 39 | |
suupen | 4:001603e48dc8 | 40 | if(hilo == Z_loSurement) { |
suupen | 3:2a8fdcc54c95 | 41 | P_surement++; |
suupen | 4:001603e48dc8 | 42 | } |
suupen | 3:2a8fdcc54c95 | 43 | } |
suupen | 3:2a8fdcc54c95 | 44 | } |
suupen | 3:2a8fdcc54c95 | 45 | |
suupen | 5:f137bb7eeda6 | 46 | InterruptIn lightIn(p18); |
suupen | 1:d4291fd3a94c | 47 | DigitalOut monitor(LED4); |
suupen | 4:001603e48dc8 | 48 | bool surementData(int8_t *p, int32_t *hiPriod, int32_t *loPriod) |
suupen | 3:2a8fdcc54c95 | 49 | { |
suupen | 3:2a8fdcc54c95 | 50 | bool ans = beforeLevel == -1 ? true : false; |
suupen | 4:001603e48dc8 | 51 | if(ans == false) { |
suupen | 4:001603e48dc8 | 52 | *p = P_surement; |
suupen | 4:001603e48dc8 | 53 | } |
suupen | 4:001603e48dc8 | 54 | *hiPriod = D_surement[*p][Z_hiSurement]; |
suupen | 4:001603e48dc8 | 55 | *loPriod = D_surement[*p][Z_loSurement]; |
suupen | 4:001603e48dc8 | 56 | |
suupen | 3:2a8fdcc54c95 | 57 | return (ans); |
suupen | 4:001603e48dc8 | 58 | } |
suupen | 3:2a8fdcc54c95 | 59 | |
suupen | 1:d4291fd3a94c | 60 | void priodMsurementMain(void) |
suupen | 1:d4291fd3a94c | 61 | { |
suupen | 1:d4291fd3a94c | 62 | |
suupen | 1:d4291fd3a94c | 63 | |
suupen | 1:d4291fd3a94c | 64 | } |
suupen | 1:d4291fd3a94c | 65 | |
suupen | 2:f22110fb3925 | 66 | void hiEdge(void) |
suupen | 1:d4291fd3a94c | 67 | { |
suupen | 2:f22110fb3925 | 68 | hiTimer.reset(); |
suupen | 2:f22110fb3925 | 69 | if(beforeLevel == 0) { |
suupen | 2:f22110fb3925 | 70 | loCompleteTime = loTimer.read_ms(); |
suupen | 4:001603e48dc8 | 71 | surementPut(Z_loSurement, loCompleteTime); |
suupen | 4:001603e48dc8 | 72 | beforeLevel = 1; |
suupen | 2:f22110fb3925 | 73 | printf("hi = %d, lo = %d\r\n",hiCompleteTime, loCompleteTime); |
suupen | 2:f22110fb3925 | 74 | } |
suupen | 5:f137bb7eeda6 | 75 | // if(beforeLevel == -1) { |
suupen | 5:f137bb7eeda6 | 76 | if((beforeLevel == -1) && (F_start == true)) { |
suupen | 2:f22110fb3925 | 77 | printf("start\r\n"); |
suupen | 4:001603e48dc8 | 78 | surementPut(Z_initialSurement, (int32_t)Z_initialSurement); |
suupen | 4:001603e48dc8 | 79 | beforeLevel = 1; |
suupen | 5:f137bb7eeda6 | 80 | F_start = false; |
suupen | 2:f22110fb3925 | 81 | } |
suupen | 2:f22110fb3925 | 82 | monitor = 1; |
suupen | 2:f22110fb3925 | 83 | } |
suupen | 1:d4291fd3a94c | 84 | |
suupen | 2:f22110fb3925 | 85 | void loEdge(void) |
suupen | 2:f22110fb3925 | 86 | { |
suupen | 2:f22110fb3925 | 87 | loTimer.reset(); |
suupen | 2:f22110fb3925 | 88 | if(beforeLevel == 1) { |
suupen | 2:f22110fb3925 | 89 | hiCompleteTime = hiTimer.read_ms(); |
suupen | 4:001603e48dc8 | 90 | surementPut(Z_hiSurement, hiCompleteTime); |
suupen | 5:f137bb7eeda6 | 91 | beforeLevel = 0; |
suupen | 1:d4291fd3a94c | 92 | } |
suupen | 2:f22110fb3925 | 93 | monitor = 0; |
suupen | 2:f22110fb3925 | 94 | } |
suupen | 1:d4291fd3a94c | 95 | |
suupen | 2:f22110fb3925 | 96 | void pulseCheck(void) |
suupen | 2:f22110fb3925 | 97 | { |
suupen | 2:f22110fb3925 | 98 | int32_t lo = loTimer.read_ms(); |
suupen | 2:f22110fb3925 | 99 | int32_t hi = hiTimer.read_ms(); |
suupen | 2:f22110fb3925 | 100 | |
suupen | 2:f22110fb3925 | 101 | if((lo > Z_nonSignalTime) && (beforeLevel == 0)) { |
suupen | 2:f22110fb3925 | 102 | // pulse end |
suupen | 2:f22110fb3925 | 103 | beforeLevel = -1; |
suupen | 2:f22110fb3925 | 104 | |
suupen | 2:f22110fb3925 | 105 | printf("hi = %d, lo = --\r\n",hiCompleteTime); |
suupen | 2:f22110fb3925 | 106 | printf("end\r\n"); |
suupen | 2:f22110fb3925 | 107 | } |
suupen | 1:d4291fd3a94c | 108 | |
suupen | 1:d4291fd3a94c | 109 | |
suupen | 1:d4291fd3a94c | 110 | } |
suupen | 1:d4291fd3a94c | 111 | |
suupen | 1:d4291fd3a94c | 112 | void priodMsurementInitalize(void) |
suupen | 1:d4291fd3a94c | 113 | { |
suupen | 2:f22110fb3925 | 114 | aTimer.start(); |
suupen | 2:f22110fb3925 | 115 | hiTimer.start(); |
suupen | 2:f22110fb3925 | 116 | loTimer.start(); |
suupen | 2:f22110fb3925 | 117 | checkTicker.attach_us(&pulseCheck, 1000); |
suupen | 1:d4291fd3a94c | 118 | |
suupen | 2:f22110fb3925 | 119 | lightIn.rise(&hiEdge); |
suupen | 2:f22110fb3925 | 120 | lightIn.fall(&loEdge); |
suupen | 1:d4291fd3a94c | 121 | } |