docs/rp2/quickref.rst: Add section on PIO.
This commit is contained in:
parent
01f1c3aac2
commit
e538d8a5a6
|
@ -92,6 +92,37 @@ Use the :ref:`machine.Pin <machine.Pin>` class::
|
||||||
p4 = Pin(4, Pin.IN, Pin.PULL_UP) # enable internal pull-up resistor
|
p4 = Pin(4, Pin.IN, Pin.PULL_UP) # enable internal pull-up resistor
|
||||||
p5 = Pin(5, Pin.OUT, value=1) # set pin high on creation
|
p5 = Pin(5, Pin.OUT, value=1) # set pin high on creation
|
||||||
|
|
||||||
|
Programmable IO (PIO)
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
PIO is useful to build low-level IO interfaces from scratch. See the :mod:`rp2` module
|
||||||
|
for detailed explaination of the assembly instructions.
|
||||||
|
|
||||||
|
Example using PIO to blink an LED at 1Hz::
|
||||||
|
|
||||||
|
from machine import Pin
|
||||||
|
import rp2
|
||||||
|
|
||||||
|
@rp2.asm_pio(set_init=rp2.PIO.OUT_LOW)
|
||||||
|
def blink_1hz():
|
||||||
|
# Cycles: 1 + 7 + 32 * (30 + 1) = 1000
|
||||||
|
set(pins, 1)
|
||||||
|
set(x, 31) [6]
|
||||||
|
label("delay_high")
|
||||||
|
nop() [29]
|
||||||
|
jmp(x_dec, "delay_high")
|
||||||
|
|
||||||
|
# Cycles: 1 + 7 + 32 * (30 + 1) = 1000
|
||||||
|
set(pins, 0)
|
||||||
|
set(x, 31) [6]
|
||||||
|
label("delay_low")
|
||||||
|
nop() [29]
|
||||||
|
jmp(x_dec, "delay_low")
|
||||||
|
|
||||||
|
# Create and start a StateMachine with blink_1hz, outputting on Pin(25)
|
||||||
|
sm = rp2.StateMachine(0, blink_1hz, freq=2000, set_base=Pin(25))
|
||||||
|
sm.active(1)
|
||||||
|
|
||||||
UART (serial bus)
|
UART (serial bus)
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue