From b7bed69113982a4d0bf950862df0baf6d9a059f6 Mon Sep 17 00:00:00 2001 From: ltigges <55837735+ltigges@users.noreply.github.com> Date: Wed, 6 Nov 2019 11:34:43 +0100 Subject: [PATCH] Add MY_RS485_DE_INVERSE define to invert the device enable pin polarity (#1358) * Add MY_RS485_DE_INVERSE define to invert the device enable pin polarity --- MyConfig.h | 8 ++++++++ hal/transport/RS485/MyTransportRS485.cpp | 18 +++++++++++++++++- keywords.txt | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/MyConfig.h b/MyConfig.h index 915d39490..e164f2063 100644 --- a/MyConfig.h +++ b/MyConfig.h @@ -249,6 +249,12 @@ */ //#define MY_RS485_DE_PIN (2) +/** + * @def MY_RS485_DE_INVERSE + * @brief Define this if RS485 driver enable pin polarity is inverted (low-active). + */ +//#define MY_RS485_DE_INVERSE + /** * @def MY_RS485_HWSERIAL * @brief Define this if RS485 is connected to a hardware serial port. @@ -2317,6 +2323,8 @@ #define MY_OTA_USE_I2C_EEPROM // RS485 #define MY_RS485 +#define MY_RS485_DE_PIN +#define MY_RS485_DE_INVERSE #define MY_RS485_HWSERIAL // RF24 #define MY_RADIO_RF24 diff --git a/hal/transport/RS485/MyTransportRS485.cpp b/hal/transport/RS485/MyTransportRS485.cpp index c774994a1..e0f3a8335 100644 --- a/hal/transport/RS485/MyTransportRS485.cpp +++ b/hal/transport/RS485/MyTransportRS485.cpp @@ -57,9 +57,13 @@ #endif #if defined(MY_RS485_DE_PIN) +#if !defined(MY_RS485_DE_INVERSE) #define assertDE() hwDigitalWrite(MY_RS485_DE_PIN, HIGH); delayMicroseconds(5) #define deassertDE() hwDigitalWrite(MY_RS485_DE_PIN, LOW) - +#else +#define assertDE() hwDigitalWrite(MY_RS485_DE_PIN, LOW); delayMicroseconds(5) +#define deassertDE() hwDigitalWrite(MY_RS485_DE_PIN, HIG) +#endif #else #define assertDE() #define deassertDE() @@ -264,7 +268,11 @@ bool transportSend(const uint8_t to, const void* data, const uint8_t len, const } #if defined(MY_RS485_DE_PIN) +#if !defined(MY_RS485_DE_INVERSE) hwDigitalWrite(MY_RS485_DE_PIN, HIGH); +#else + hwDigitalWrite(MY_RS485_DE_PIN, LOW); +#endif delayMicroseconds(5); #endif @@ -310,7 +318,11 @@ bool transportSend(const uint8_t to, const void* data, const uint8_t len, const _dev.flush(); #endif #endif +#if !defined(MY_RS485_DE_INVERSE) hwDigitalWrite(MY_RS485_DE_PIN, LOW); +#else + hwDigitalWrite(MY_RS485_DE_PIN, HIGH); +#endif #endif return true; } @@ -324,7 +336,11 @@ bool transportInit(void) _serialReset(); #if defined(MY_RS485_DE_PIN) hwPinMode(MY_RS485_DE_PIN, OUTPUT); +#if !defined(MY_RS485_DE_INVERSE) hwDigitalWrite(MY_RS485_DE_PIN, LOW); +#else + hwDigitalWrite(MY_RS485_DE_PIN, HIGH); +#endif #endif return true; } diff --git a/keywords.txt b/keywords.txt index feb2e6aaf..f245dbb54 100644 --- a/keywords.txt +++ b/keywords.txt @@ -233,6 +233,7 @@ MY_RFM69_TX_POWER_DBM LITERAL1 MY_RS485 LITERAL1 MY_RS485_BAUD_RATE LITERAL1 MY_RS485_DE_PIN LITERAL1 +MY_RS485_DE_INVERSE LITERAL1 MY_RS485_HWSERIAL LITERAL1 MY_RS485_MAX_MESSAGE_LENGTH LITERAL1 MY_RS485_SOH_COUNT LITERAL1