![](/media/cache/profiles/90a82bf94b4c5981e7e68ff425e519f3.50x50_q85.jpg)
LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)
Dependencies: AQM0802A DigitalSw mbed
priodMsurement.cpp@2:f22110fb3925, 2017-05-27 (annotated)
- Committer:
- suupen
- Date:
- Sat May 27 08:20:20 2017 +0000
- Revision:
- 2:f22110fb3925
- Parent:
- 1:d4291fd3a94c
- Child:
- 3:2a8fdcc54c95
LED????????
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 <AQM0802A.h> |
suupen | 1:d4291fd3a94c | 3 | #include "priodMsurement.h" |
suupen | 1:d4291fd3a94c | 4 | |
suupen | 2:f22110fb3925 | 5 | DigitalOut dbgPort (p19); |
suupen | 2:f22110fb3925 | 6 | DigitalOut dbg2Port (p18); |
suupen | 2:f22110fb3925 | 7 | |
suupen | 1:d4291fd3a94c | 8 | I2C i2c(p28, p27); |
suupen | 1:d4291fd3a94c | 9 | AQM0802A lcd(i2c); // if 5.0v supply, (i2c, false); |
suupen | 1:d4291fd3a94c | 10 | |
suupen | 2:f22110fb3925 | 11 | Timer hiTimer; // hi priod timer |
suupen | 2:f22110fb3925 | 12 | Timer loTimer; // low priod timer |
suupen | 2:f22110fb3925 | 13 | Timer aTimer; |
suupen | 2:f22110fb3925 | 14 | |
suupen | 2:f22110fb3925 | 15 | Ticker checkTicker; |
suupen | 2:f22110fb3925 | 16 | |
suupen | 2:f22110fb3925 | 17 | int32_t hiCompleteTime; // 1/1 [ms]/count |
suupen | 2:f22110fb3925 | 18 | int32_t loCompleteTime; |
suupen | 2:f22110fb3925 | 19 | |
suupen | 2:f22110fb3925 | 20 | int8_t beforeLevel = -1; // 0:Lo 1:Hi -1:timeOut(non Pluse) |
suupen | 1:d4291fd3a94c | 21 | |
suupen | 1:d4291fd3a94c | 22 | InterruptIn lightIn(p22); |
suupen | 1:d4291fd3a94c | 23 | DigitalOut monitor(LED4); |
suupen | 1:d4291fd3a94c | 24 | |
suupen | 1:d4291fd3a94c | 25 | void priodMsurementMain(void) |
suupen | 1:d4291fd3a94c | 26 | { |
suupen | 1:d4291fd3a94c | 27 | |
suupen | 1:d4291fd3a94c | 28 | |
suupen | 1:d4291fd3a94c | 29 | } |
suupen | 1:d4291fd3a94c | 30 | |
suupen | 2:f22110fb3925 | 31 | void hiEdge(void) |
suupen | 1:d4291fd3a94c | 32 | { |
suupen | 2:f22110fb3925 | 33 | hiTimer.reset(); |
suupen | 2:f22110fb3925 | 34 | if(beforeLevel == 0) { |
suupen | 2:f22110fb3925 | 35 | loCompleteTime = loTimer.read_ms(); |
suupen | 2:f22110fb3925 | 36 | printf("hi = %d, lo = %d\r\n",hiCompleteTime, loCompleteTime); |
suupen | 2:f22110fb3925 | 37 | } |
suupen | 2:f22110fb3925 | 38 | if(beforeLevel == -1) { |
suupen | 2:f22110fb3925 | 39 | printf("start\r\n"); |
suupen | 2:f22110fb3925 | 40 | } |
suupen | 2:f22110fb3925 | 41 | beforeLevel = 1; |
suupen | 2:f22110fb3925 | 42 | monitor = 1; |
suupen | 2:f22110fb3925 | 43 | } |
suupen | 1:d4291fd3a94c | 44 | |
suupen | 2:f22110fb3925 | 45 | void loEdge(void) |
suupen | 2:f22110fb3925 | 46 | { |
suupen | 2:f22110fb3925 | 47 | loTimer.reset(); |
suupen | 2:f22110fb3925 | 48 | if(beforeLevel == 1) { |
suupen | 2:f22110fb3925 | 49 | hiCompleteTime = hiTimer.read_ms(); |
suupen | 1:d4291fd3a94c | 50 | } |
suupen | 1:d4291fd3a94c | 51 | beforeLevel = 0; |
suupen | 2:f22110fb3925 | 52 | monitor = 0; |
suupen | 2:f22110fb3925 | 53 | } |
suupen | 1:d4291fd3a94c | 54 | |
suupen | 2:f22110fb3925 | 55 | void pulseCheck(void) |
suupen | 2:f22110fb3925 | 56 | { |
suupen | 2:f22110fb3925 | 57 | int32_t lo = loTimer.read_ms(); |
suupen | 2:f22110fb3925 | 58 | int32_t hi = hiTimer.read_ms(); |
suupen | 2:f22110fb3925 | 59 | |
suupen | 2:f22110fb3925 | 60 | if((lo > Z_nonSignalTime) && (beforeLevel == 0)) { |
suupen | 2:f22110fb3925 | 61 | // pulse end |
suupen | 2:f22110fb3925 | 62 | beforeLevel = -1; |
suupen | 2:f22110fb3925 | 63 | |
suupen | 2:f22110fb3925 | 64 | printf("hi = %d, lo = --\r\n",hiCompleteTime); |
suupen | 2:f22110fb3925 | 65 | printf("end\r\n"); |
suupen | 2:f22110fb3925 | 66 | } |
suupen | 1:d4291fd3a94c | 67 | |
suupen | 1:d4291fd3a94c | 68 | |
suupen | 1:d4291fd3a94c | 69 | } |
suupen | 1:d4291fd3a94c | 70 | |
suupen | 1:d4291fd3a94c | 71 | void priodMsurementInitalize(void) |
suupen | 1:d4291fd3a94c | 72 | { |
suupen | 2:f22110fb3925 | 73 | aTimer.start(); |
suupen | 2:f22110fb3925 | 74 | hiTimer.start(); |
suupen | 2:f22110fb3925 | 75 | loTimer.start(); |
suupen | 2:f22110fb3925 | 76 | checkTicker.attach_us(&pulseCheck, 1000); |
suupen | 1:d4291fd3a94c | 77 | |
suupen | 2:f22110fb3925 | 78 | lightIn.rise(&hiEdge); |
suupen | 2:f22110fb3925 | 79 | lightIn.fall(&loEdge); |
suupen | 1:d4291fd3a94c | 80 | } |