-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Open
Labels
Description
Port, board and/or hardware
Pico 2
MicroPython version
MicroPython v1.25.0-preview.408.gf315a376b on 2025-03-26; Raspberry Pi Pico2 with RP2350
Reproduction
It has proved hard to produce a minimum repro, what follows is my best shot. The repro is quite fragile - minimal changes cause its behaviour to vary between working and failing.
Link GPIO numbers 1-18 and 2-17 and run the following:
import rp2
from machine import Pin, SPI
@rp2.asm_pio(autopush=True, autopull=True)
def spi_count():
out(x, 32)
wait(0, pins, 2) # CS/ True
label("loop")
jmp(pin, "good")
jmp(x_dec, "loop")
label("good")
in_(x, 32)
label("finish")
jmp("finish")
class Test:
def __init__(self, start_pin=0, sm_num=0):
self._sm1 = rp2.StateMachine(
sm_num,
spi_count,
in_base=start_pin,
jmp_pin=start_pin + 1,
)
self._sm1.active(1)
def go(self, cs, ck):
sm = self._sm1
sm.put(10_000_000)
cs(0) # Start
ck(1) # Stop
assert sm.rx_fifo(), "Rx fifo is empty."
print(sm.get())
cs = Pin(17, Pin.OUT, value=1)
ck = Pin(18, Pin.OUT, value=0)
t = Test()
t.go(cs, ck)
Expected behaviour
Result on RP2040 is to print a number around 9999759.
Observed behaviour
RP2350 produces an assertion fail. I assume that the RP2350 is failing to respond to the jump pin.
Additional Information
No, I've provided everything above.
Code of Conduct
Yes, I agree