led example with 2 timers

Dependencies:   mbed mbed-rtos

Revision:
1:6e31c704f4d6
Child:
2:124a066878cc
diff -r 11dd239703cc -r 6e31c704f4d6 modulator.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modulator.cpp	Mon Feb 10 16:33:35 2014 +0000
@@ -0,0 +1,53 @@
+#include "main.h"
+
+extern Serial pc;
+DigitalOut myled(LED1);
+volatile unsigned short timer_count;
+
+void Modulator_init(void)
+{
+    myled = 0;
+    
+    LPC_SC->PCONP |=1<1;            //timer0 power on
+    LPC_TIM0->MR0 = 2398000;        //100 msec
+    LPC_TIM0->MCR = 3;              //interrupt and reset control
+                                    //3 = Interrupt & reset timer0 on match
+                                    //1 = Interrupt only, no reset of timer0
+    NVIC_EnableIRQ(TIMER0_IRQn);    //enable timer0 interrupt
+    LPC_TIM0->TCR = 1;              //enable Timer0
+    pc.printf("Done timer0_init\n\r");
+}
+
+extern "C" void TIMER0_IRQHandler (void)
+{
+if((LPC_TIM0->IR & 0x01) == 0x01)   // if MR0 interrupt, proceed
+    {
+    LPC_TIM0->IR |= 1 << 0;         // Clear MR0 interrupt flag
+    timer_count++;                  //increment timer_count
+   
+    // pc.printf("timer_count %d \n\r", timer_count);
+    if (timer_count >= 80)      //Set timer_count for about 8 seconds
+            {
+            if (myled == 1)             //If LED off, turn it on &
+                {
+                myled = 0;
+                timer_count = 0;        //reset count
+                }
+            else
+                {
+                myled = 1;              //If LED on, turn it off &
+                timer_count = 0;        //reset count
+                }
+            }
+    }
+}
+
+void Modulator_thread(void const *args)
+{
+    Modulator_init();
+    
+    while(1)
+    {
+    // wait forever...        
+    }
+}
\ No newline at end of file