Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
TIT8 authored May 5, 2024
1 parent 94dfc24 commit 77562fd
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ A push button is connected to the [ESP32](https://github.com/espressif/arduino-e

On the master branch, I'm using [task notifications](https://www.freertos.org/RTOS_Task_Notification_As_Binary_Semaphore.html) from FreeRTOS to unblock a high-priority (relative to [core 1](https://docs.espressif.com/projects/esp-idf/en/v5.0/esp32s3/api-guides/performance/speed.html#choosing-application-task-priorities)) task responsible for debouncing in the software, despite the use of interrupts (which are disabled and enabled within that task). Therefore, when the button is not in use, the task remains blocked on a type of semaphore, conserving CPU resources. This allows the idle task to run uninterrupted until the button is pressed, ensuring the watchdog timer is consistently reset.

The main thread is more efficient the one in the V2 branch (which employs [busy wait](https://github.com/TIT8/shelly_esp32_button_espidf/tree/v2?tab=readme-ov-file#why-busy-wait-the-button-status-and-not-polling-it-or-be-notified-by-interrupts) for monitoring button status instead of polling or being notified by interrupts). In the main task, the interrupts are enabled and disabled only on the GPIO pin used and on the core where the task is pinned like a critical section, according to the [official doc](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos_idf.html#disabling-interrupts). [^4]
<ins>The main thread is more efficient than the one in the V2 branch</ins> (which employs [busy wait](https://github.com/TIT8/shelly_esp32_button_espidf/tree/v2?tab=readme-ov-file#why-busy-wait-the-button-status-and-not-polling-it-or-be-notified-by-interrupts) for monitoring button status instead being notified by interrupts).
In the main task, the interrupts are enabled and disabled only on the GPIO pin used and on the core where the task is pinned like a critical section, according to the [official doc](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos_idf.html#disabling-interrupts). [^4]

[^4]: Also a useful [topic](https://esp32.com/viewtopic.php?t=35019).

Expand Down

0 comments on commit 77562fd

Please sign in to comment.