2023-01-18 13:57:13 +00:00

45 lines
1011 B
Python

"""Sometimes, you need to debug a register.
ISR is a bit special - when you push, you destroy it's content -
you'll need to restore this. If you remove the mov from x,
it is set to 0s.
It'll cost a few instructions to do."""
import rp2pio
import adafruit_pioasm
import array
program = """
.program debug_register
set y, 21 ; use y to set ISR
mov isr, y
; debug isr
mov x, isr ; preserve isr - pushing destroys it
push noblock
mov isr, x ; restore isr
; done debug
; debug isr
mov x, isr ; preserve isr - pushing destroys it
push noblock
mov isr, x ; restore isr
; done debug
"""
assembled = adafruit_pioasm.assemble(program)
## set up a statemachine
sm = rp2pio.StateMachine(
assembled,
frequency=2000,
)
buffer = array.array("I", [0])
# read the data
sm.readinto(buffer)
print("first push: {0} 0b{0:08b} 0x{0:x}".format(buffer[0]))
sm.readinto(buffer)
print("second: {0} 0b{0:08b} 0x{0:x}".format(buffer[0]))