Chapter 6 code

This commit is contained in:
Danny Staple
2022-01-28 21:10:14 +00:00
parent fd4b0cb544
commit 881355daaa
23 changed files with 723 additions and 33 deletions
+49
View File
@@ -0,0 +1,49 @@
"""Shifting a register.
Default shift direction is in from the left.
Space is made for the new value, and n bits from the source are
shifted in.
"""
import rp2pio
import adafruit_pioasm
import array
program = f"""
.program debug_register
set y, {0b10011} ; set a value in y
; send it to be printed
mov isr, y
push noblock ; and use PUSH to put it on the receive FIFO
; shift pts
in null, 32 ; clear the isr
in y,3 ; get n bits from y
; now send it to be printed
push noblock ; and use PUSH to put it on the receive FIFO
; show state of y
mov isr, y
push noblock
"""
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("Before shift: {0} 0b{0:032b} 0x{0:x}".format(buffer[0]))
sm.readinto(buffer)
print("ISR shifted: {0} 0b{0:032b} 0x{0:x}".format(buffer[0]))
sm.readinto(buffer)
print("Y state: {0} 0b{0:032b} 0x{0:x}".format(buffer[0]))