Debounce InterruptIn
Dependents: led_sigfox Allumag_lampe_sigfox Case_study_02_Turnstile B18_MP3_PLAYER ... more
Revision 0:ca5a0fee9f52, committed 2014-02-18
- Comitter:
- kandangath
- Date:
- Tue Feb 18 01:05:10 2014 +0000
- Child:
- 1:ffacad1b455a
- Commit message:
- Init version of class to debounce InterruptIn
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 |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DebounceInterrupts.cpp Tue Feb 18 01:05:10 2014 +0000 @@ -0,0 +1,27 @@ +#include "DebounceInterrupts.h" + +Timeout timeout; + +DebounceInterrupts::DebounceInterrupts(void (*fptr)(void), + InterruptIn *interruptIn, + const bool& rise, + const unsigned int& debounce_ms) +{ + fCallback = fptr; + if (rise) { + interruptIn->rise(this, &DebounceInterrupts::onInterrupt); + } else { + interruptIn->fall(this, &DebounceInterrupts::onInterrupt); + } + fDebounce_us = 1000*debounce_ms; +} + +DebounceInterrupts::~DebounceInterrupts() +{ +} + +void DebounceInterrupts::onInterrupt() +{ + timeout.detach(); + timeout.attach_us(fCallback,fDebounce_us); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DebounceInterrupts.h Tue Feb 18 01:05:10 2014 +0000 @@ -0,0 +1,28 @@ + +/** + * Debounces an interrupt + */ + +#ifndef DEBOUNCE_INTERRUPTS_H +#define DEBOUNCE_INTERRUPTS_H + +#include <stdint.h> +#include "mbed.h" + +class DebounceInterrupts { +private: + unsigned int fDebounce_us; + void (*fCallback)(void); + void onInterrupt(void); +public: + /** Setup debounce for an InterruptIn. + * fptr: pointer to function to be called when debounced Interrupt fires + * interrupt: InterruptIn to monitor + * rise: true:rise, false: fall + * debounce_ms: milliseconds to wait for a stable input + * @return Pull the oldest element from the buffer + */ + DebounceInterrupts(void (*fptr)(void), InterruptIn *interrupt, const bool& rise=true, const uint32_t& debounce_ms=10); + ~DebounceInterrupts(); +}; +#endif \ No newline at end of file