test interruptIn feature with 555 timer

Dependencies:   ClockControl PowerControl mbed

Fork of Frequency_counter by Satoru Yoshida

Test interruptIn function with using LMC555 timer IC

LPC 1768 自身が持つタイマー割り込み機能を使わずに、 あえて外部のタイマー IC 555 からの信号で周期的に割り込みするテスト。

下記の回路例では、555 の output 端子が 約 10 秒周期のうち、0.3 秒間 Low になるはず。 ただし、コンデンサーおよび抵抗の誤差の影響があり、実測値は約7秒周期

C を 47μ から 330 μ に変えると約1分前後で周期的に割り込みがかかります。

/media/uploads/strysd/int555_10s.png

なるべく配線が交差しないように部品配置してみた例

/media/uploads/strysd/555test.jpg

Revision:
7:42e7f18361c8
Parent:
6:7f90a61e1a69
Child:
8:cb966096a916
--- a/main.cpp	Sun Aug 11 08:34:00 2013 +0000
+++ b/main.cpp	Wed Nov 06 07:38:20 2013 +0000
@@ -4,7 +4,8 @@
 
 InterruptIn in(p8);   //connect to the Discharge of 555
 DigitalOut run555(p9);//connect to the Reset     of 555
-DigitalOut led(LED1);
+DigitalOut led1(LED1);//running 555
+DigitalOut led2(LED2);//not ready
 Timer t1;
 
 float my_interval = 0;//between interrupts in microseconds
@@ -23,13 +24,13 @@
 
     if(rest_in <= 0){
         //No use interrupt
-        run555 = led = 0;
+        run555 = led1 = 0;
         t1.stop();
     }
 }
 
 int main() {
-    run555 = led = 0;
+    run555 = led1 = led2 = 0;
     // Set up the interrupt
     in.mode(PullUp);
     in.rise(&flip);
@@ -41,12 +42,14 @@
         my_interval = 0;
         t1.start();
         rest_in = IN_TIMES;
-        run555 = led = 1;
+        run555 = led1 = 1;
+        led2 = 0;
         wait_ms(WAIT_IN);
-        run555 = led = 0;//force stop
+        run555 = led1 = 0;//force stop
 
         if (my_interval < MIN_INTERVAL || my_interval > MAX_INTERVAL){
             printf("\r not ready\n");
+            led2 = 1;
         } else {
             my_freq = ONESEC_BY_MICRO / my_interval;  // Convert to Hz
             my_ohm  = my_interval     * CONV_KILO_OHM;// Convert to kilo ohm