Use of two timers to implement a counter of an external signal

Dependencies:   mbed

Committer:
garyr
Date:
Tue Jan 28 17:01:19 2014 +0000
Revision:
0:e619b6823668
First working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
garyr 0:e619b6823668 1
garyr 0:e619b6823668 2 #include "mbed.h"
garyr 0:e619b6823668 3 #include "Timer2.h"
garyr 0:e619b6823668 4 #include "Timer3.h"
garyr 0:e619b6823668 5 /*
garyr 0:e619b6823668 6 Connect P8 (MAT2.0) to P16 (CAP3.1)
garyr 0:e619b6823668 7 Connect external input on P15 (CAP3.0) to PWM output on P26
garyr 0:e619b6823668 8 */
garyr 0:e619b6823668 9 Serial pc(USBTX, USBRX); // tx, rx
garyr 0:e619b6823668 10 DigitalOut out1(p5), out2(p6);
garyr 0:e619b6823668 11 PwmOut pw(p26);
garyr 0:e619b6823668 12
garyr 0:e619b6823668 13 int done;
garyr 0:e619b6823668 14 void Timer3Isr(int count)
garyr 0:e619b6823668 15 {
garyr 0:e619b6823668 16 pc.printf("count=%d\n\r", count);
garyr 0:e619b6823668 17 LPC_TIM2->TCR = 2; // Disable Timer2
garyr 0:e619b6823668 18 done = 1;
garyr 0:e619b6823668 19 }
garyr 0:e619b6823668 20
garyr 0:e619b6823668 21 void Timer2Isr(void)
garyr 0:e619b6823668 22 {
garyr 0:e619b6823668 23 out1 = !out1;
garyr 0:e619b6823668 24 }
garyr 0:e619b6823668 25
garyr 0:e619b6823668 26 int main(void)
garyr 0:e619b6823668 27 {
garyr 0:e619b6823668 28 int prescale; // Units are 0.1 second.
garyr 0:e619b6823668 29
garyr 0:e619b6823668 30 out1 = 0;
garyr 0:e619b6823668 31 out2 = 0;
garyr 0:e619b6823668 32 pw.period_us(10);
garyr 0:e619b6823668 33 pw.write(0.5);
garyr 0:e619b6823668 34 Timer3_init(Timer3Isr);
garyr 0:e619b6823668 35 Timer2_init(Timer2Isr);
garyr 0:e619b6823668 36 while(1)
garyr 0:e619b6823668 37 {
garyr 0:e619b6823668 38 pc.printf("PS: ");
garyr 0:e619b6823668 39 pc.scanf("%d", &prescale); // Interval is <prescale>+1 * 0.1 second.
garyr 0:e619b6823668 40 pc.printf("%d\n\r", prescale);
garyr 0:e619b6823668 41 done = 0;
garyr 0:e619b6823668 42 Timer2_start(prescale);
garyr 0:e619b6823668 43 while (!done)
garyr 0:e619b6823668 44 out2 = !out2;
garyr 0:e619b6823668 45 }
garyr 0:e619b6823668 46 }
garyr 0:e619b6823668 47
garyr 0:e619b6823668 48