esp-idf/components/esp_timer
Ivan Grokhotkov 5b54ae76d4 esp_timer, hal: add support for non-integer systimer frequency
When ESP32-C2 is paired with a 26 MHz XTAL, the systimer tick
frequency becomes equal to 26 / 2.5 = 10.4 MHz. Previously we always
assumed that systimer tick frequency is integer (and 1 MHz * power of
two, above that!).
This commit introduces a new LL macro, SYSTIMER_LL_TICKS_PER_US_DIV.
It should be set in such a way that:

1. SYSTIMER_LL_TICKS_PER_US / SYSTIMER_LL_TICKS_PER_US_DIV equals the
   actual systimer tick frequency,
2. and SYSTIMER_LL_TICKS_PER_US is integer.

For ESP32-C2 this means that SYSTIMER_LL_TICKS_PER_US = 52 and
SYSTIMER_LL_TICKS_PER_US_DIV = 5.

This introduced two possible issues:

1. Overflow when multiplying systimer counter by 5
   - Should not be an issue, since systimer counter is 52-bit, so
     counter * 5 is no more than 55-bit.
2. The code needs to perform:
   - divide by 5: when converting from microseconds to ticks
   - divide by 52: when converting from ticks to microseconds
   The latter potentially introduces a performance issue for the
   esp_timer_get_time function.
2022-07-11 12:24:37 +08:00
..
include system/sleep: simplify code for time compensation when wakeup from light sleep 2022-06-14 14:49:26 +08:00
private_include esp_timer: init rtc timer and system timer in early init 2021-10-26 19:07:34 +08:00
src esp_timer, hal: add support for non-integer systimer frequency 2022-07-11 12:24:37 +08:00
test spi_flash: Remove legacy spi_flash drivers 2022-07-01 11:01:34 +08:00
CMakeLists.txt build system: removed target component 2022-05-24 09:12:59 +08:00
Kconfig esp_timer: remove legacy ESP32 FRC timer implementation. 2022-02-10 15:17:49 +08:00
sdkconfig.rename esp32: add implementation of esp_timer based on TG0 LAC timer 2020-02-06 14:00:18 +08:00