added timer interrupt handler hook for 32 bit timer and couple of utility functions
authorMiceuz <mic@hardcore.lt>
Thu, 19 Apr 2012 16:36:28 +0000 (18:36 +0200)
committerMiceuz <mic@hardcore.lt>
Thu, 19 Apr 2012 16:36:28 +0000 (18:36 +0200)
core/timer32/timer32.c
core/timer32/timer32.h

index b768905..539e961 100644 (file)
@@ -69,6 +69,7 @@
 
 volatile uint32_t timer32_0_counter = 0;
 volatile uint32_t timer32_1_counter = 0;
+void (*interruptHandler)(void) = NULL;
 
 /**************************************************************************/
 /*! 
@@ -123,6 +124,19 @@ void timer32Delay(uint8_t timerNum, uint32_t delay)
   return;
 }
 
+uint32_t timer32GetCount(uint8_t timerNum) {
+    if(0 == timerNum) {
+        return timer32_0_counter;
+    } else {
+        return timer32_1_counter;
+    }
+    
+}
+
+void timer32SetIntHandler(void (*handler)(void)) {
+    interruptHandler = handler;
+}
+
 /**************************************************************************/
 /*! 
     @brief Interrupt handler for 32-bit timer 0
@@ -130,14 +144,17 @@ void timer32Delay(uint8_t timerNum, uint32_t delay)
 /**************************************************************************/
 void TIMER32_0_IRQHandler(void)
 {  
-  /* Clear the interrupt flag */
-  TMR_TMR32B0IR = TMR_TMR32B0IR_MR0;
+    if(NULL != interruptHandler) {
+        (*interruptHandler)();
+    }
+    /* Clear the interrupt flag */
+    TMR_TMR32B0IR = TMR_TMR32B0IR_MR0;
 
-  /* If you wish to perform some action after each timer 'tick' (such as 
+    /* If you wish to perform some action after each timer 'tick' (such as 
      incrementing a counter variable) you can do so here */
-  timer32_0_counter++;
+    timer32_0_counter++;
 
-  return;
+    return;
 }
 
 /**************************************************************************/
@@ -341,4 +358,11 @@ void timer32Init(uint8_t timerNum, uint32_t timerInterval)
   return;
 }
 
+void timer32ResetCounter(uint8_t timerNum){
+    if(0 == timerNum){
+        timer32_0_counter = 0;
+    } else if(1 == timerNum) {
+        timer32_1_counter = 0;
+    }
+}
 
index b7135a8..f09b995 100644 (file)
@@ -62,5 +62,7 @@ void timer32Enable(uint8_t timerNum);
 void timer32Disable(uint8_t timerNum);
 void timer32Reset(uint8_t timerNum);
 void timer32Init(uint8_t timerNum, uint32_t timerInterval);
-
+uint32_t timer32GetCount(uint8_t timerNum);
+void timer32SetIntHandler(void (*handler)(void));
+void timer32ResetCounter(uint8_t);
 #endif
This page took 0.025699 seconds and 4 git commands to generate.