There is a catch with PIO with wait/sideset 5 bits.Q1. If the first version of the PIO program is fine, why does the second one raise a PIOASMError: delay too large error (on the line with the comment)?
If you don't specify .side to every instruction, one bit of those five will be used as 'optional sideset'.
Then using 3 bits for side pins + 1 'optional sideset' leaves you only one bit for wait.
P.S. Try putting .side() also to nops, it should work.out(pins, 8).side(1) [3]# Now I'm only allowed a single bit of wait
nop() [3]
out(pins, 8).side(2) [3]
nop() [3]
out(pins, 8).side(4) [3]
nop() [3]
Statistics: Posted by gmx — Thu Sep 11, 2025 4:43 pm







