]> oss.titaniummirror.com Git - rgblamp.git/blobdiff - isr.c
Merge new functionality
[rgblamp.git] / isr.c
diff --git a/isr.c b/isr.c
index a1b9a491d3602259a8dc9396fcff7b793be95c10..9d80695df2e5f12808ae6091c0ee8f96c1e936b3 100644 (file)
--- a/isr.c
+++ b/isr.c
@@ -7,19 +7,36 @@
 
 #include <htc.h>
 #include "tmr.h"
+#include "tmr32.h"
 #include "btn.h"
 #include "task.h"
 
 bit _isr_gie; /* Used to store the state of GIE for nested ndi()/nei() */
 unsigned char _isr_di; /* Count of nested ndi() */
 
+void ndi()
+{
+  if (_isr_di++ == 0) {
+    _isr_gie = GIE;
+    di();
+  }
+}
+
+/* Nested enable interrupts inline function.  Should be OK even in ISR. */
+void nei()
+{
+  if (--_isr_di == 0 && _isr_gie)
+    ei();
+}
+
 void interrupt isr()
 {
   tmr_isr();
   btn_isr();
+  tmr32_isr();
 
-  if (tmr_fired(TMR_AUTO_OFFON))
-    task_post(TASK_AUTO_OFFON);
+  if (tmr_fired(TMR_BTN_PB_HELD))
+    task_post(TASK_BTN_PB_HELD);
   if (tmr_fired(TMR_FADE))
     task_post(TASK_FADE);
   if (tmr_fired(TMR_INCOLOR))