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分前後で周期的に割り込みがかかります。
なるべく配線が交差しないように部品配置してみた例
main.cpp
- Committer:
- Neel
- Date:
- 2013-02-03
- Revision:
- 0:c5bcf643a8b1
- Child:
- 1:e2034bcdb101
File content as of revision 0:c5bcf643a8b1:
#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); } }