45 lines
1011 B
Python
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]))
|