From 2bda7154cb3d06281f05d93d5da4a3c3c3a28137 Mon Sep 17 00:00:00 2001 From: gicking Date: Wed, 4 Feb 2026 16:46:59 +0100 Subject: [PATCH] set Rx edge sensitivity to recover from framing error or BREAK --- libraries/SoftwareSerial/src/SoftwareSerial.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/SoftwareSerial/src/SoftwareSerial.cpp b/libraries/SoftwareSerial/src/SoftwareSerial.cpp index 7917c993b..5058ccfe0 100644 --- a/libraries/SoftwareSerial/src/SoftwareSerial.cpp +++ b/libraries/SoftwareSerial/src/SoftwareSerial.cpp @@ -241,7 +241,14 @@ int SoftwareSerial::begin(uint32_t baudrate, uint32_t sconfig, bool inverted) indexes in the NVIC */ int irq_index = getIrqIndexFromPin(_rx_pin); if(irq_index == -1) { - rx_descr.irq_chan = attachIrq2Link(_rx_pin, CHANGE); // Enable RX pin IRQ. + if (inverted == false) + { + rx_descr.irq_chan = attachIrq2Link(_rx_pin, FALLING); // Enable RX pin IRQ on falling edge (normal polarity). + } + else + { + rx_descr.irq_chan = attachIrq2Link(_rx_pin, RISING); // Enable RX pin IRQ on rising edge (inverted polarity). + } } else { R_BSP_IrqEnable ((IRQn_Type)irq_index); }