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

Dependencies:   AQM0802A DigitalSw mbed

Files at this revision

API Documentation at this revision

Comitter:
suupen
Date:
Sat May 27 08:20:20 2017 +0000
Parent:
1:d4291fd3a94c
Child:
3:2a8fdcc54c95
Commit message:
LED????????

Changed in this revision

priodMsurement.cpp Show annotated file Show diff for this revision Revisions of this file
priodMsurement.h Show annotated file Show diff for this revision Revisions of this file
testLed.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/priodMsurement.cpp	Sat May 20 12:23:42 2017 +0000
+++ b/priodMsurement.cpp	Sat May 27 08:20:20 2017 +0000
@@ -2,90 +2,79 @@
 #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 timer;
-uint16_t onTime;
-uint16_t offTime;
-int8_t beforeLevel; // 0:Lo 1:Hi -1:timeOut(non Pluse)
+Timer hiTimer;  // hi priod timer
+Timer loTimer; // low priod timer
+Timer aTimer;
+
+Ticker checkTicker;
+
+int32_t hiCompleteTime;    // 1/1 [ms]/count
+int32_t loCompleteTime;
+
+int8_t beforeLevel = -1; // 0:Lo 1:Hi -1:timeOut(non Pluse)
 
 InterruptIn lightIn(p22);
 DigitalOut monitor(LED4);
 
 void priodMsurementMain(void)
 {
-    if((timer.read_ms() > Z_nonSignalTime) && (beforeLevel != -1)){
-        printf("end \r\n");
-        timer.reset();
-        beforeLevel = -1;
-        }
-}
 
-void ledOn(void)
-{
-    monitor = 1;
-
-    switch(beforeLevel) {
-        case 0:
-            offTime = timer.read_ms();
-            timer.reset();
-
-            printf(" off = %d\r\n\r\n",offTime);
-
-            lcd.cls();
-            lcd.printf("on %d off %d",onTime, offTime);
-
-            break;
-        case -1:
-        case 1:
-        default:
-            timer.reset();
-            printf("start: off to on\r\n");
-            break;
-
-    }
-    beforeLevel = 1;
 
 }
 
-void ledOff(void)
+void hiEdge(void)
 {
-    monitor = 0;
+    hiTimer.reset();
+    if(beforeLevel == 0) {
+        loCompleteTime = loTimer.read_ms();
+        printf("hi = %d,  lo = %d\r\n",hiCompleteTime, loCompleteTime);
+    }
+    if(beforeLevel == -1) {
+        printf("start\r\n");
+    }
+    beforeLevel = 1;
+    monitor = 1;
+}
 
-    switch(beforeLevel) {
-        case 1:
-            onTime = timer.read_ms();
-            if(onTime > Z_offNonDetectTime){
-            timer.reset();
-            printf(" on = %d\r\n",onTime);
-            /*
-                        lcd.cls();
-                        lcd.printf("on %d off %d",onTime, offTime);
-            */
-            }
-            else{
-                // noise or dinamic output have a chancel.
-                }
-            break;
-        case -1:
-        case 0:
-        default:
-            timer.reset();
-            printf("start: on to off\r\n");
-            break;
-
+void loEdge(void)
+{
+    loTimer.reset();
+    if(beforeLevel == 1) {
+        hiCompleteTime = hiTimer.read_ms();
     }
     beforeLevel = 0;
+    monitor = 0;
+}
 
+void pulseCheck(void)
+{
+    int32_t lo = loTimer.read_ms();
+    int32_t hi = hiTimer.read_ms();
+
+    if((lo > Z_nonSignalTime) && (beforeLevel == 0)) {
+        // pulse end
+        beforeLevel = -1;
+
+        printf("hi = %d,  lo = --\r\n",hiCompleteTime);
+        printf("end\r\n");
+    }
 
 
 }
 
 void priodMsurementInitalize(void)
 {
-    timer.start();
+    aTimer.start();
+    hiTimer.start();
+    loTimer.start();
+    checkTicker.attach_us(&pulseCheck, 1000);
 
-    lightIn.rise(&ledOn);
-    lightIn.fall(&ledOff);
+    lightIn.rise(&hiEdge);
+    lightIn.fall(&loEdge);
 }
--- a/priodMsurement.h	Sat May 20 12:23:42 2017 +0000
+++ b/priodMsurement.h	Sat May 27 08:20:20 2017 +0000
@@ -1,8 +1,7 @@
 #ifndef PRIODMSUREMENT_H
 #define PRIODMSUREMENT_H
 
-#define Z_nonSignalTime (5000) // (1/1 [ms]/count)
-#define Z_offNonDetectTime (10) // (1/1 [ms]/count)
+#define Z_nonSignalTime (1000) // (1/1 [ms]/count)
 
 /** Initalize
  */
--- a/testLed.cpp	Sat May 20 12:23:42 2017 +0000
+++ b/testLed.cpp	Sat May 27 08:20:20 2017 +0000
@@ -28,45 +28,22 @@
     {1,100},
     {0,100},
 
-    {1,500},
-    {0,500},
-
-    {1,100},
-    {0,100},
+    {1,200},
+    {0,200},
 
-    {1,500},
-    {0,500},
+    {1,300},
+    {0,300},
 
-    {1,100},
-    {0,100},
+    {1,400},
+    {0,400},
 
     {1,500},
     {0,500},
 
     {1,100},
-    {0,100},
-
-    {1,100},
-    {0,100},
-
-    {1,100},
-    {0,500},
-
-    {1,100},
-    {0,500},
+    {0,200},
 
-    {1,100},
-    {0,500},
-
-    {1,100},
-    {0,500},
-
-    {1,100},
-    {0,500},
-
-    {1,500},
-    {0,500},
-
+ 
 
 
     {2,0}       // end