Skip to content

Commit 23bd1b1

Browse files
committed
Add support for .side_set ... pindirs
This also requires a core change to set the respective bit in the PIO hardware.
1 parent de37174 commit 23bd1b1

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

Diff for: adafruit_pioasm.py

+4
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ def __init__(self, text_program: str, *, build_debuginfo: bool = False) -> None:
7373
instructions: List[str] = []
7474
sideset_count = 0
7575
sideset_enable = 0
76+
sideset_pindirs = False
7677
wrap = None
7778
wrap_target = None
7879
offset = -1
@@ -144,6 +145,7 @@ def parse_rxfifo_brackets(arg, fifo_dir):
144145
elif line.startswith(".side_set"):
145146
sideset_count = int(line.split()[1], 0)
146147
sideset_enable = "opt" in line
148+
sideset_pindirs = "pindirs" in line
147149
elif line.startswith(".fifo"):
148150
require_before_instruction()
149151
fifo_type = line.split()[1]
@@ -470,6 +472,8 @@ def parse_rxfifo_brackets(arg, fifo_dir):
470472

471473
if sideset_count != 0:
472474
self.pio_kwargs["sideset_pin_count"] = sideset_count
475+
if sideset_pindirs:
476+
self.pio_kwargs["sideset_pindirs"] = sideset_pindirs
473477

474478
if wrap is not None:
475479
self.pio_kwargs["wrap"] = wrap

Diff for: tests/test_pseudo.py

+17
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,20 @@
1212
def test_offset() -> None:
1313
assert_pio_kwargs(".origin 7", offset=7, sideset_enable=False)
1414
assert_assembly_fails("nop\n.origin 7")
15+
16+
17+
def test_sideset_pindirs() -> None:
18+
assert_pio_kwargs(
19+
".side_set 2 opt pindirs",
20+
sideset_pin_count=2,
21+
sideset_enable=True,
22+
sideset_pindirs=True,
23+
)
24+
assert_pio_kwargs(
25+
".side_set 2 pindirs",
26+
sideset_pin_count=2,
27+
sideset_enable=False,
28+
sideset_pindirs=True,
29+
)
30+
# Setting not emitted (as =False) for backwards compat
31+
assert_pio_kwargs(".side_set 2", sideset_pin_count=2, sideset_enable=False)

0 commit comments

Comments
 (0)