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

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);
    }

}