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:
- 0:c5bcf643a8b1
- Child:
- 1:e2034bcdb101
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Feb 03 21:06:02 2013 +0000 @@ -0,0 +1,32 @@ +#include "mbed.h" + +Serial pc(USBTX, USBRX); +InterruptIn in(p8); +DigitalOut led(LED1); +DigitalOut led2(LED2); +Timer t1; + +float t_period = 0; // This is the period between interrupts in microseconds +float t_freq = 0; + +void flip(void) +{ + led=!led; + t_period = t1.read_us(); // Get time since last interrupt + t_freq = (1/t_period)*1000000; // Convert period (in us) to frequency (Hz) + t1.reset(); // Reset timer and wait for next interrupt +} + +int main() { + pc.printf("\rStarting frequency counter\n"); + in.mode(PullDown); // Set the pin to Pull Down mode. + in.rise(&flip); // Set up the interrupt for rising edge + t1.start(); // start the timer + + while (1) { + wait_ms(100); + led2=!led2; + pc.printf("\rfrq is %d Hz\n", (int)t_freq); + } + +} \ No newline at end of file