summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/rp2/pio_uart_rx.py1
-rw-r--r--ports/rp2/modules/rp2.py6
-rw-r--r--ports/rp2/rp2_pio.c4
3 files changed, 9 insertions, 2 deletions
diff --git a/examples/rp2/pio_uart_rx.py b/examples/rp2/pio_uart_rx.py
index 41dfde3da..080b6bd63 100644
--- a/examples/rp2/pio_uart_rx.py
+++ b/examples/rp2/pio_uart_rx.py
@@ -22,6 +22,7 @@ PIO_RX_PIN = Pin(3, Pin.IN, Pin.PULL_UP)
autopush=True,
push_thresh=8,
in_shiftdir=rp2.PIO.SHIFT_RIGHT,
+ fifo_join=PIO.JOIN_RX,
)
def uart_rx_mini():
# fmt: off
diff --git a/ports/rp2/modules/rp2.py b/ports/rp2/modules/rp2.py
index 17e35c73b..c7e4d1fdd 100644
--- a/ports/rp2/modules/rp2.py
+++ b/ports/rp2/modules/rp2.py
@@ -31,7 +31,8 @@ class PIOASMEmit:
autopush=False,
autopull=False,
push_thresh=32,
- pull_thresh=32
+ pull_thresh=32,
+ fifo_join=0
):
# uarray is a built-in module so importing it here won't require
# scanning the filesystem.
@@ -40,7 +41,8 @@ class PIOASMEmit:
self.labels = {}
execctrl = 0
shiftctrl = (
- (pull_thresh & 0x1F) << 25
+ fifo_join << 30
+ | (pull_thresh & 0x1F) << 25
| (push_thresh & 0x1F) << 20
| out_shiftdir << 19
| in_shiftdir << 18
diff --git a/ports/rp2/rp2_pio.c b/ports/rp2/rp2_pio.c
index 5f93f10c2..44928c0a8 100644
--- a/ports/rp2/rp2_pio.c
+++ b/ports/rp2/rp2_pio.c
@@ -360,6 +360,10 @@ STATIC const mp_rom_map_elem_t rp2_pio_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_SHIFT_LEFT), MP_ROM_INT(0) },
{ MP_ROM_QSTR(MP_QSTR_SHIFT_RIGHT), MP_ROM_INT(1) },
+ { MP_ROM_QSTR(MP_QSTR_JOIN_NONE), MP_ROM_INT(0) },
+ { MP_ROM_QSTR(MP_QSTR_JOIN_TX), MP_ROM_INT(1) },
+ { MP_ROM_QSTR(MP_QSTR_JOIN_RX), MP_ROM_INT(2) },
+
{ MP_ROM_QSTR(MP_QSTR_IRQ_SM0), MP_ROM_INT(0x100) },
{ MP_ROM_QSTR(MP_QSTR_IRQ_SM1), MP_ROM_INT(0x200) },
{ MP_ROM_QSTR(MP_QSTR_IRQ_SM2), MP_ROM_INT(0x400) },