Skip to content

esp32-S3 vs pico 2 motion execution difference #342

@programmeddeath1

Description

@programmeddeath1

Hii,

We’re using FastAccelStepper in a high-duty 2 axis delta robot (80–100 PPM, short segments ~10–20 ms, upto ~96k steps/s peak each for 2 motors ) and would appreciate your guidance on execution determinism and architecture.

We are currently evaluating two setups:

  1. ESP32-S3
  • Backend: MCPWM / RMT
  • Hardware-timed step pulses
  • Segment transitions and FIFO refill handled by CPU/RTOS
  • Communication via Ethernet (UDP), with individual packets transferred in <0.5 ms
  1. RP2040 / RP2350 (Pico / Pico 2)
  • Backend: PIO (currently used as pulse generator)
  • Segment transitions and FIFO refill still CPU-driven
  • Communication via USB CDC, with packet transfer ~1–1.5 ms

Key questions:

  1. From FastAccelStepper’s architecture, is PIO inherently more deterministic than MCPWM, or are they effectively equivalent when pulse timing is hardware-generated?
  2. In the current FastAccelStepper design, are segment boundary transitions CPU-governed on both ESP32 and Pico?
  3. Does using PIO without a DMA-driven execution model provide a meaningful determinism advantage over MCPWM?
  4. If higher determinism is desired, would achieving a real advantage on Pico require a custom DMA→PIO execution pipeline beyond FastAccelStepper’s current scheduling model?
  5. For short-segment, high-jerk motion, which platform would you personally consider the safer or more deterministic choice when using FastAccelStepper as-is?
  6. Regarding the PIO backend (currently used as a pulse generator): How can we architect the system to make it truly independent of the CPU? Specifically, we want to understand if it is possible to use PIO to:
  • Decide when a segment ends autonomously.
  • Transition velocity profiles without CPU intervention.
  • React to encoder mismatches in real-time.
  • Continue motion deterministically even if the CPU stalls.

We are not comparing raw step rates, but rather execution ownership and determinism at segment boundaries and direction changes at high accel/decel. Your perspective as the library author would help us ground this decision in how FastAccelStepper actually behaves across platforms.

Thanks in advance!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions