Use of two timers to implement a counter of an external signal
main.cpp
- Committer:
- garyr
- Date:
- 2014-01-28
- Revision:
- 0:e619b6823668
File content as of revision 0:e619b6823668:
#include "mbed.h"
#include "Timer2.h"
#include "Timer3.h"
/*
Connect P8 (MAT2.0) to P16 (CAP3.1)
Connect external input on P15 (CAP3.0) to PWM output on P26
*/
Serial pc(USBTX, USBRX); // tx, rx
DigitalOut out1(p5), out2(p6);
PwmOut pw(p26);
int done;
void Timer3Isr(int count)
{
pc.printf("count=%d\n\r", count);
LPC_TIM2->TCR = 2; // Disable Timer2
done = 1;
}
void Timer2Isr(void)
{
out1 = !out1;
}
int main(void)
{
int prescale; // Units are 0.1 second.
out1 = 0;
out2 = 0;
pw.period_us(10);
pw.write(0.5);
Timer3_init(Timer3Isr);
Timer2_init(Timer2Isr);
while(1)
{
pc.printf("PS: ");
pc.scanf("%d", &prescale); // Interval is <prescale>+1 * 0.1 second.
pc.printf("%d\n\r", prescale);
done = 0;
Timer2_start(prescale);
while (!done)
out2 = !out2;
}
}