Debounce InterruptIn
Dependents: led_sigfox Allumag_lampe_sigfox Case_study_02_Turnstile B18_MP3_PLAYER ... more
Diff: DebounceInterrupts.cpp
- Revision:
- 10:cb16d2957f8d
- Parent:
- 9:970b74eb0407
- Child:
- 11:af6d7dc34062
--- a/DebounceInterrupts.cpp Tue Feb 18 07:06:32 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -#include "DebounceInterrupts.h" - -Timeout timeout; - -DebounceInterrupts::DebounceInterrupts(void (*fptr)(void), - InterruptIn *interruptIn, - const interruptTrigger& trigger, - const unsigned int& debounce_ms) -{ - fCallback = fptr; - _last_debounce_count = _debounce_count = 0; - - switch(trigger) { - case INT_RISE: - interruptIn->rise(this, &DebounceInterrupts::_onInterrupt); - break; - case INT_FALL: - interruptIn->fall(this, &DebounceInterrupts::_onInterrupt); - break; - default: - break; - } - - _debounce_us = 1000*debounce_ms; -} - -DebounceInterrupts::~DebounceInterrupts() -{ -} - -void DebounceInterrupts::_callback() -{ - _last_debounce_count = _debounce_count; - _debounce_count = 0; - fCallback(); -} - -void DebounceInterrupts::_onInterrupt() -{ - _debounce_count++; - timeout.attach_us(this, &DebounceInterrupts::_callback, _debounce_us); -} - -unsigned int DebounceInterrupts::get_debounce() -{ - return _last_debounce_count; -}