Debounce InterruptIn

Dependents:   led_sigfox Allumag_lampe_sigfox Case_study_02_Turnstile B18_MP3_PLAYER ... more

Files at this revision

API Documentation at this revision

Comitter:
kandangath
Date:
Tue Feb 18 07:00:07 2014 +0000
Parent:
6:e1461ccdf3c0
Child:
8:4b3ff16d5f91
Commit message:
Add counter for debounced interrupts

Changed in this revision

DebounceInterrupts.cpp Show annotated file Show diff for this revision Revisions of this file
DebounceInterrupts.h Show annotated file Show diff for this revision Revisions of this file
--- a/DebounceInterrupts.cpp	Tue Feb 18 06:46:06 2014 +0000
+++ b/DebounceInterrupts.cpp	Tue Feb 18 07:00:07 2014 +0000
@@ -8,6 +8,7 @@
                                        const unsigned int& debounce_ms)
 {
     fCallback = fptr;
+    _debounce_count = 0;
     
     switch(trigger) {
      case INT_RISE:
@@ -20,14 +21,26 @@
         break;
     }
 
-    fDebounce_us = 1000*debounce_ms;
+    _debounce_us = 1000*debounce_ms;
 }
 
 DebounceInterrupts::~DebounceInterrupts()
 {
 }
 
+void DebounceInterrupts::_callback()
+{
+    _debounce_count = 0;
+    fCallback();
+}
+
 void DebounceInterrupts::_onInterrupt()
 {
-    timeout.attach_us(fCallback,fDebounce_us);
-}
\ No newline at end of file
+    _debounce_count++;
+    timeout.attach_us(this, &DebounceInterrupts::_callback, _debounce_us);
+}
+
+unsigned int DebounceInterrupts::get_debounce()
+{
+    return _debounce_count;
+}
--- a/DebounceInterrupts.h	Tue Feb 18 06:46:06 2014 +0000
+++ b/DebounceInterrupts.h	Tue Feb 18 07:00:07 2014 +0000
@@ -34,14 +34,22 @@
 
 class DebounceInterrupts {
 private:
-    unsigned int fDebounce_us;
+    unsigned int _debounce_us;
+    unsigned int _debounce_count;
+    
     void (*fCallback)(void);
     void _onInterrupt(void);
+    void _callback(void);
 public:
     DebounceInterrupts(void (*fptr)(void),                  /* function to be called after debounced InterruptIn */
                        InterruptIn *interrupt,              /* InterruptIn to monitor */
                        const interruptTrigger& trigger,     /* true: rise, false: fall */
                        const uint32_t& debounce_ms=10);     /* stability duration required */
     ~DebounceInterrupts();
+    /*
+    * Get number of de-bounced interrupts
+    * @return: debounced count
+    */
+    unsigned int get_debounce();
 };
 #endif
\ No newline at end of file