From f2695b14ef8f2cccba298a672f205f8ad5fad19b Mon Sep 17 00:00:00 2001 From: Nico Date: Tue, 17 Feb 2015 20:26:14 +0100 Subject: [PATCH] Applied last SoftSerial fix --- avr/libraries/SoftwareSerial/SoftwareSerial.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/avr/libraries/SoftwareSerial/SoftwareSerial.cpp b/avr/libraries/SoftwareSerial/SoftwareSerial.cpp index b28e6e4..8ccbbb4 100644 --- a/avr/libraries/SoftwareSerial/SoftwareSerial.cpp +++ b/avr/libraries/SoftwareSerial/SoftwareSerial.cpp @@ -266,8 +266,12 @@ SoftwareSerial::~SoftwareSerial() void SoftwareSerial::setTX(uint8_t tx) { + // First write, then set output. If we do this the other way around, + // the pin would be output low for a short while before switching to + // output hihg. Now, it is input with pullup for a short while, which + // is fine. With inverse logic, either order is fine. + digitalWrite(tx, _inverse_logic ? LOW : HIGH); pinMode(tx, OUTPUT); - digitalWrite(tx, HIGH); _transmitBitMask = digitalPinToBitMask(tx); uint8_t port = digitalPinToPort(tx); _transmitPortRegister = portOutputRegister(port);