Skip to content

Commit 8a7977f

Browse files
Fix SerialPIO receive interrupt on PIO1 (#490)
Fixes #489 Only the PIO0 IRQ handler was ever installed due to a hardcoding bug. Attach the IRQ handler to the PIO being started instead.
1 parent d689165 commit 8a7977f

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

cores/rp2040/SerialPIO.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,9 @@ void SerialPIO::begin(unsigned long baud, uint16_t config) {
238238
case 2: pio_set_irq0_source_enabled(_rxPIO, pis_sm2_rx_fifo_not_empty, true); break;
239239
case 3: pio_set_irq0_source_enabled(_rxPIO, pis_sm3_rx_fifo_not_empty, true); break;
240240
}
241-
irq_set_exclusive_handler(PIO0_IRQ_0, _fifoIRQ);
242-
irq_set_enabled(PIO0_IRQ_0, true);
241+
auto irqno = pio_get_index(_rxPIO) == 0 ? PIO0_IRQ_0 : PIO1_IRQ_0;
242+
irq_set_exclusive_handler(irqno, _fifoIRQ);
243+
irq_set_enabled(irqno, true);
243244

244245
pio_sm_set_enabled(_rxPIO, _rxSM, true);
245246
}

0 commit comments

Comments
 (0)