diff --git a/multi_button.c b/multi_button.c index 0f561b4..9b0b6dc 100644 --- a/multi_button.c +++ b/multi_button.c @@ -178,7 +178,10 @@ void button_handler(struct button* handle) if(handle->button_level == handle->active_level) { handle->event = (uint8_t)LONG_PRESS_HOLD; - EVENT_CB(LONG_PRESS_HOLD); + if (handle->ticks % LONG_HOLD_CYC == 0) + { + EVENT_CB(LONG_PRESS_HOLD); + } } else { diff --git a/multi_button.h b/multi_button.h index fd9f46c..938c6f8 100644 --- a/multi_button.h +++ b/multi_button.h @@ -9,6 +9,7 @@ #define DEBOUNCE_TICKS 3 //MAX 8 #define SHORT_TICKS (300 / TICKS_INTERVAL) #define LONG_TICKS (1000 / TICKS_INTERVAL) +#define LONG_HOLD_CYC (500 / TICKS_INTERVAL) typedef void (*BtnCallback)(void*);