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

Dependencies:   mbed

Revision:
0:e619b6823668
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Jan 28 17:01:19 2014 +0000
@@ -0,0 +1,48 @@
+
+#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;
+    }
+}
+
+