test interruptIn feature with 555 timer
Dependencies: ClockControl PowerControl mbed
Fork of Frequency_counter by
Test interruptIn function with using LMC555 timer IC
LPC 1768 自身が持つタイマー割り込み機能を使わずに、 あえて外部のタイマー IC 555 からの信号で周期的に割り込みするテスト。
下記の回路例では、555 の output 端子が 約 10 秒周期のうち、0.3 秒間 Low になるはず。 ただし、コンデンサーおよび抵抗の誤差の影響があり、実測値は約7秒周期
C を 47μ から 330 μ に変えると約1分前後で周期的に割り込みがかかります。
なるべく配線が交差しないように部品配置してみた例
Diff: main.cpp
- Revision:
- 5:9be3080ca8ba
- Parent:
- 4:64d9c0bed75b
- Child:
- 6:7f90a61e1a69
--- a/main.cpp Mon Jun 03 15:04:08 2013 +0000 +++ b/main.cpp Tue Jun 04 06:14:19 2013 +0000 @@ -4,14 +4,14 @@ #define CONV_KILO_OHM 0.0072 //if use 0.1 micro F #define IN_TIMES 10 //interrupt times #define READ_TIMER 3 //rest times when reads timer -#define WAIT_IN 200 //wait interrupts in msec -#define WAIT_NEXT 4800 //wait next measurement in msec +#define WAIT_IN 1000 //wait interrupts in msec +#define WAIT_NEXT 4000 //wait next measurement in msec #define MAX_INTERVAL 100000 // > 0.1 sec ( < 10 Hz) in microseconds #define MIN_INTERVAL 20 // < 20 micro sec ( > 50 kHz) in microseconds #define ONESEC_BY_MICRO 1000000// 1 sec in microseconds InterruptIn in(p8); //connect to the Discharge of 555 -DigitalOut run555(p9);//connect to the Reset of 555 +DigitalOut run555(p9);//connect to the Reset of 555 DigitalOut led(LED1); Timer t1; @@ -29,7 +29,7 @@ t1.reset();// Reset timer and wait for next interrupt rest_in--; } - + if(rest_in == 0){ //No use interrupt run555 = led = 0; @@ -39,11 +39,12 @@ int main() { run555 = led = 0; + // Set up the interrupt in.mode(PullUp); - in.rise(&flip);// Set up the interrupt for rising edge + in.fall(&flip); printf("\rStarting measure\n"); - + while (1) { //Use interrupt my_interval = 0;