summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/library/rp2.rst8
-rw-r--r--ports/rp2/modules/rp2.py9
2 files changed, 10 insertions, 7 deletions
diff --git a/docs/library/rp2.rst b/docs/library/rp2.rst
index f0189327d..a215e98b5 100644
--- a/docs/library/rp2.rst
+++ b/docs/library/rp2.rst
@@ -23,7 +23,7 @@ The ``rp2`` module includes functions for assembling PIO programs.
For running PIO programs, see :class:`rp2.StateMachine`.
-.. function:: asm_pio(*, out_init=None, set_init=None, sideset_init=None, in_shiftdir=0, out_shiftdir=0, autopush=False, autopull=False, push_thresh=32, pull_thresh=32, fifo_join=PIO.JOIN_NONE)
+.. function:: asm_pio(*, out_init=None, set_init=None, sideset_init=None, side_pindir=False, in_shiftdir=PIO.SHIFT_LEFT, out_shiftdir=PIO.SHIFT_LEFT, autopush=False, autopull=False, push_thresh=32, pull_thresh=32, fifo_join=PIO.JOIN_NONE)
Assemble a PIO program.
@@ -35,8 +35,10 @@ For running PIO programs, see :class:`rp2.StateMachine`.
- *out_init* configures the pins used for ``out()`` instructions.
- *set_init* configures the pins used for ``set()`` instructions. There can
be at most 5.
- - *sideset_init* configures the pins used side-setting. There can be at
- most 5.
+ - *sideset_init* configures the pins used for ``.side()`` modifiers. There
+ can be at most 5.
+ - *side_pindir* when set to ``True`` configures ``.side()`` modifiers to be
+ used for pin directions, instead of pin values (the default, when ``False``).
The following parameters are used by default, but can be overridden in
`StateMachine.init()`:
diff --git a/ports/rp2/modules/rp2.py b/ports/rp2/modules/rp2.py
index 9d13bf1b5..e9be7dac8 100644
--- a/ports/rp2/modules/rp2.py
+++ b/ports/rp2/modules/rp2.py
@@ -26,20 +26,21 @@ class PIOASMEmit:
out_init=None,
set_init=None,
sideset_init=None,
- in_shiftdir=0,
- out_shiftdir=0,
+ side_pindir=False,
+ in_shiftdir=PIO.SHIFT_LEFT,
+ out_shiftdir=PIO.SHIFT_LEFT,
autopush=False,
autopull=False,
push_thresh=32,
pull_thresh=32,
- fifo_join=0,
+ fifo_join=PIO.JOIN_NONE,
):
# array is a built-in module so importing it here won't require
# scanning the filesystem.
from array import array
self.labels = {}
- execctrl = 0
+ execctrl = side_pindir << 29
shiftctrl = (
fifo_join << 30
| (pull_thresh & 0x1F) << 25