diff --git a/cores/rp2040/SerialPIO.cpp b/cores/rp2040/SerialPIO.cpp index f4657e168..8ff270c91 100644 --- a/cores/rp2040/SerialPIO.cpp +++ b/cores/rp2040/SerialPIO.cpp @@ -201,7 +201,6 @@ void SerialPIO::begin(unsigned long baud, uint16_t config) { digitalWrite(_tx, HIGH); pinMode(_tx, OUTPUT); - gpio_set_outover(_tx, _invertTX); pio_tx_program_init(_txPIO, _txSM, off, _tx); pio_sm_clear_fifos(_txPIO, _txSM); // Remove any existing data @@ -212,6 +211,7 @@ void SerialPIO::begin(unsigned long baud, uint16_t config) { pio_sm_exec(_txPIO, _txSM, pio_encode_mov(pio_isr, pio_osr)); // Start running! + gpio_set_outover(_tx, _invertTX); pio_sm_set_enabled(_txPIO, _txSM, true); } if (_rx != NOPIN) { diff --git a/cores/rp2040/SoftwareSerial.h b/cores/rp2040/SoftwareSerial.h index deaf4a97d..d1857aa1f 100644 --- a/cores/rp2040/SoftwareSerial.h +++ b/cores/rp2040/SoftwareSerial.h @@ -37,8 +37,8 @@ class SoftwareSerial : public SerialPIO { }; void begin(unsigned long baud, uint16_t config) override { - setInvertTX(invert); - setInvertRX(invert); + setInvertTX(_invert); + setInvertRX(_invert); SerialPIO::begin(baud, config); } diff --git a/keywords.txt b/keywords.txt index 1516ef562..7a6c8de20 100644 --- a/keywords.txt +++ b/keywords.txt @@ -13,6 +13,7 @@ Dir KEYWORD1 File KEYWORD1 timeval KEYWORD1 time_t KEYWORD1 +SoftwareSerial KEYWORD1 ####################################### # Methods and Functions (KEYWORD2)