diff --git a/cores/esp32/esp32-hal-timer.c b/cores/esp32/esp32-hal-timer.c index b6552b8937774c0b4beab89d4fda9b0c1b89ac06..87f48e5409cf60f45ffb9e7bf97c30ef5ed87f24 100644 --- a/cores/esp32/esp32-hal-timer.c +++ b/cores/esp32/esp32-hal-timer.c @@ -221,11 +221,15 @@ bool IRAM_ATTR timerFnWrapper(void *arg){ return false; } -void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ +void timerAttachInterruptFlag(hw_timer_t *timer, void (*fn)(void), bool edge, int intr_alloc_flags){ if(edge){ log_w("EDGE timer interrupt is not supported! Setting to LEVEL..."); } - timer_isr_callback_add(timer->group, timer->num, timerFnWrapper, fn, 0); + timer_isr_callback_add(timer->group, timer->num, timerFnWrapper, fn, intr_alloc_flags); +} + +void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){ + timerAttachInterruptFlag(timer, fn, edge, 0); } void timerDetachInterrupt(hw_timer_t *timer){ diff --git a/cores/esp32/esp32-hal-timer.h b/cores/esp32/esp32-hal-timer.h index 5bbed62358668a58e66f7c828601cdafb9c1ac6d..5f0413b74459ace14329694bcfb5ddad7649244c 100644 --- a/cores/esp32/esp32-hal-timer.h +++ b/cores/esp32/esp32-hal-timer.h @@ -36,6 +36,7 @@ void timerEnd(hw_timer_t *timer); void timerSetConfig(hw_timer_t *timer, uint32_t config); uint32_t timerGetConfig(hw_timer_t *timer); +void timerAttachInterruptFlag(hw_timer_t *timer, void (*fn)(void), bool edge, int intr_alloc_flags); void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge); void timerDetachInterrupt(hw_timer_t *timer);