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
+43
View File
@@ -0,0 +1,43 @@
"""Sometimes we want to extract a specific bit for
comparison or testing"""
"""Shifting a register."""
import rp2pio
import adafruit_pioasm
import array
# extracting bit 2
bit_to_extract = 30
program = f"""
.program extract_bit
pull block
; print initial state
mov isr, osr
push noblock ; and use PUSH to put it on the receive FIFO
; extract - by shifting
in osr, {bit_to_extract} ; get n bits
in null, 31 ; keep only 1 bit
push noblock
"""
assembled = adafruit_pioasm.assemble(program)
## set up a statemachine
sm = rp2pio.StateMachine(
assembled,
frequency=2000,
)
buffer = array.array('I', [0])
sm.write(array.array('I', [0b01101000_00000000_00000000_00000000]))
# read the data
sm.readinto(buffer)
print("Initial Y: {0} 0b{0:032b} 0x{0:x}".format(buffer[0]))
sm.readinto(buffer)
print("Y bit extracted: {0} 0b{0:032b} 0x{0:x}".format(buffer[0]))