Hi there,
Yea , so I should clarify… buzers etc. sure… the C6 supports the RMT peripheral (it’s just slightly different from S3/ESP32 classic). If configured correctly in the SDK or ESP-IDF layer, it’s usable for waveform generation (buzzers, IR, step pulses, etc).
also further clarification.
The FastAccelStepper library currently has limited or no full support for the ESP32-C6 Arduino platform out of the box.
- The
DRIVER_RMT
not being defined is a sign the library wasn’t compiled with proper C6 support macros or files. - If the C6 is not explicitly supported in
fas_arch
, you’ll run into missing defines or incompatible peripheral mappings.
But out of the box, without adjustments or a solid understanding of C6 architecture, the S3 is a more straightforward choice because:
- It’s better supported by libraries like
FastAccelStepper
. - Dual-core design avoids many Arduino-loop blocking issues.
- More robust peripheral support (e.g., LEDC, MCPWM, RMT).
You can create a FreeRTOS task to handle stepping*:
- Absolutely — moving stepper timing logic into a FreeRTOS task (with
xTaskCreatePinnedToCore()
) avoids interference from theloop()
task or BLE/WiFi handlers.
The issue isn’t with the hardware, but rather how the Arduino layer handles loop execution and task scheduling. LOL, it doesn’t
anyway, may try the first BSP too…the C6 isn’t getting the full effort from espressif IMO.
HTH
GL PJ