A replacement for InterruptIn that debounces the interrupt.

Dependents:   D7A_Demo-Get-started CVtoOSCConverter EE3501keypad D7A_Localisation ... more

Fork of DebouncedInterrupt by Anil Kandangath

Example code:

#include "DebouncedInterrupt.h"

DebouncedInterrupt up_button(USER_BUTTON);

void onUp()
{
    // Do Something
}

int main()
{
    // Will immediatly call function and ignore other interrupts until timeout
    up_button.attach(&onUp, IRQ_FALL, 1000, true);

    // Will call function only if button has been held for the specified time
    //up_button.attach(&onUp, IRQ_FALL, 500, false);

    while(1) {}
}

Files at this revision

API Documentation at this revision

Comitter:
kandangath
Date:
Tue Feb 18 16:51:44 2014 +0000
Parent:
12:7022ffaa74f5
Child:
14:da09706b92f5
Commit message:
Change member function

Changed in this revision

DebouncedInterrupt.cpp Show annotated file Show diff for this revision Revisions of this file
DebouncedInterrupt.h Show annotated file Show diff for this revision Revisions of this file
--- a/DebouncedInterrupt.cpp	Tue Feb 18 16:47:32 2014 +0000
+++ b/DebouncedInterrupt.cpp	Tue Feb 18 16:51:44 2014 +0000
@@ -20,7 +20,7 @@
 {
     if(fptr) {
         fCallback = fptr;
-        _last_debounce_count = _debounce_count = 0;
+        _last_bounce_count = _bounce_count = 0;
         
         switch(trigger) {
          case INT_RISE:
@@ -42,21 +42,21 @@
     timeout.detach();
 }
 
-unsigned int DebouncedInterrupt::get_debounce()
+unsigned int DebouncedInterrupt::get_bounce()
 {
-    return _last_debounce_count;
+    return _last_bounce_count;
 }
 
 void DebouncedInterrupt::_callback()
 {
-    _last_debounce_count = _debounce_count;
-    _debounce_count = 0;
+    _last_bounce_count = _bounce_count;
+    _bounce_count = 0;
     fCallback();
 }
 
 void DebouncedInterrupt::_onInterrupt()
 {
-    _debounce_count++;
+    _bounce_count++;
     timeout.attach_us(this, &DebouncedInterrupt::_callback, _debounce_us);
 }
 
--- a/DebouncedInterrupt.h	Tue Feb 18 16:47:32 2014 +0000
+++ b/DebouncedInterrupt.h	Tue Feb 18 16:51:44 2014 +0000
@@ -35,10 +35,12 @@
 class DebouncedInterrupt {
 private:
     unsigned int _debounce_us;
-    volatile unsigned int _debounce_count;
-    volatile unsigned int _last_debounce_count;
     InterruptIn *_in;
     
+    // Diagnostics
+    volatile unsigned int _bounce_count;
+    volatile unsigned int _last_bounce_count;
+    
     void (*fCallback)(void);
     void _onInterrupt(void);
     void _callback(void);
@@ -54,9 +56,9 @@
     
     
     /*
-    * Get number of de-bounced interrupts
-    * @return: debounced count
+    * Get number of bounces 
+    * @return: bounce count
     */
-    unsigned int get_debounce();
+    unsigned int get_bounce();
 };
 #endif
\ No newline at end of file