-
Notifications
You must be signed in to change notification settings - Fork 67
Description
Hi guys, yesterday I put together just as the title says a functional prototype of the ISR flavor of this debouncing code
Find it here https://github.com/malachi-iot/esp32-button/blob/exp-isr-working1/src/button_isr.c
As a prototype, it lacks a number of important qualities such as:
- Crit section protection
- Configurability
- Optimization
- General cleanliness
However it does work well for my single button scenario. The general approach is a direct morph of the existing code. In essence:
- Edge detection ISR notices incoming GPIOs and triggers a hardware timer ISR
- Hardware timer does most of the familiar stuff you see in the RTOS task, but without an RTOS task
I don't love that we're essentially "ticking" in phase 2 as @X-Ryl669 pointed out in #15 . I'm undecided if it's worth the extra complexity for this approach vs an RTOS task. Undoubtedly this approach is leaner. I hurt my brain yesterday trying to "detickify" the thing, so screw it :)
I invite comment, discussion, approval or disapproval. If the general notion is liked, I will clean it up and make it production worthy and do a PR
Test code is here https://github.com/malachi-iot/esp32-button/tree/exp-isr-working1/test/interactive/isr