LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)

Dependencies:   AQM0802A DigitalSw mbed

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?

UserRevisionLine numberNew 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 }