docs: ESP32 C3 and C6 has only 2 Timers (0 and 2)
Documentation URL
https://docs.micropython.org/en/latest/esp32/quickref.html#timers
Description
A note for ESP32 C3 and C6 would be helpful. These only have two timers, Timer(0) and Timer(2)
Code of Conduct
Yes, I agree
ESP32C6 Timers: Only Timer(0) and Timer(2) are functional for ESP32-C6 v1.24
Port, board and/or hardware
esp32-c6, generic board
MicroPython version
Micropython 1.24 custom compile only adding graphics library that does not use timer
Reproduction
not (likely) a build issue (I did not test on stock release firmware)
Expected behaviour
examples from Micropython documentation on Timer class:
WORKS CORRECTLY:
from machine import Timer
tim0 = Timer(0)
tim0.init(period=5000, mode=Timer.ONE_SHOT, callback=lambda t:print(0))
FAILS:
from machine import Timer
tim1 = Timer(1)
tim1.init(period=2000, mode=Timer.ONE_SHOT, callback=lambda t:print(1))
WORKS CORRECTLY:
from machine import Timer
tim2 = Timer(2)
tim2.init(period=5000, mode=Timer.ONE_SHOT, callback=lambda t:print(2))
FAILS:
from machine import Timer
tim3 = Timer(3)
tim3.init(period=2000, mode=Timer.ONE_SHOT, callback=lambda t:print(3))
Observed behaviour
code for Timer0 returns a '0'
code for Timer1 returns nothing
code for Timer2 returns a '2'
code for Timer3 returns nothing
Additional Information
The fix is to make the timer code for the ESP32-C6 behave like the ESP32-C3:
it appears the fix should be in the esp32 port file machine_timer.c line 79 which should be changed from:
#if CONFIG_IDF_TARGET_ESP32C3
to
#if CONFIG_IDF_TARGET_ESP32C3 or CONFIG_IDF_TARGET_ESP32C6 (or something like that because I do not know the syntax)
Code of Conduct
Yes, I agree