diff --git a/src/SoftwareSerial.cpp b/src/SoftwareSerial.cpp index f058954..3b824a8 100644 --- a/src/SoftwareSerial.cpp +++ b/src/SoftwareSerial.cpp @@ -52,10 +52,12 @@ __attribute__((always_inline)) inline void IRAM_ATTR UARTBase::restoreInterrupts constexpr uint8_t BYTE_ALL_BITS_SET = ~static_cast(0); UARTBase::UARTBase() { + m_isrOverflow = false; } UARTBase::UARTBase(int8_t rxPin, int8_t txPin, bool invert) { + m_isrOverflow = false; m_rxPin = rxPin; m_txPin = txPin; m_invert = invert; diff --git a/src/SoftwareSerial.h b/src/SoftwareSerial.h index d6f1a57..bd92f8a 100644 --- a/src/SoftwareSerial.h +++ b/src/SoftwareSerial.h @@ -292,7 +292,7 @@ class UARTBase : public Stream { // Member variables int8_t m_rxPin = -1; int8_t m_txPin = -1; - bool m_invert; + bool m_invert = false; private: // It's legal to exceed the deadline, for instance, @@ -367,7 +367,7 @@ class UARTBase : public Stream { // 1 = positive including 0, 0 = negative. std::unique_ptr > m_isrBuffer; const Delegate m_isrBufferForEachDel = { [](UARTBase* self, uint32_t&& isrTick) { self->rxBits(isrTick); }, this }; - std::atomic m_isrOverflow = false; + std::atomic m_isrOverflow; uint32_t m_isrLastTick; bool m_rxCurParity = false; Delegate m_rxHandler;