Skip to content

Commit b7bed69

Browse files
ltiggesmfalkvidd
authored andcommitted
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
1 parent b9798e4 commit b7bed69

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

MyConfig.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,12 @@
249249
*/
250250
//#define MY_RS485_DE_PIN (2)
251251

252+
/**
253+
* @def MY_RS485_DE_INVERSE
254+
* @brief Define this if RS485 driver enable pin polarity is inverted (low-active).
255+
*/
256+
//#define MY_RS485_DE_INVERSE
257+
252258
/**
253259
* @def MY_RS485_HWSERIAL
254260
* @brief Define this if RS485 is connected to a hardware serial port.
@@ -2317,6 +2323,8 @@
23172323
#define MY_OTA_USE_I2C_EEPROM
23182324
// RS485
23192325
#define MY_RS485
2326+
#define MY_RS485_DE_PIN
2327+
#define MY_RS485_DE_INVERSE
23202328
#define MY_RS485_HWSERIAL
23212329
// RF24
23222330
#define MY_RADIO_RF24

hal/transport/RS485/MyTransportRS485.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,13 @@
5757
#endif
5858

5959
#if defined(MY_RS485_DE_PIN)
60+
#if !defined(MY_RS485_DE_INVERSE)
6061
#define assertDE() hwDigitalWrite(MY_RS485_DE_PIN, HIGH); delayMicroseconds(5)
6162
#define deassertDE() hwDigitalWrite(MY_RS485_DE_PIN, LOW)
62-
63+
#else
64+
#define assertDE() hwDigitalWrite(MY_RS485_DE_PIN, LOW); delayMicroseconds(5)
65+
#define deassertDE() hwDigitalWrite(MY_RS485_DE_PIN, HIG)
66+
#endif
6367
#else
6468
#define assertDE()
6569
#define deassertDE()
@@ -264,7 +268,11 @@ bool transportSend(const uint8_t to, const void* data, const uint8_t len, const
264268
}
265269

266270
#if defined(MY_RS485_DE_PIN)
271+
#if !defined(MY_RS485_DE_INVERSE)
267272
hwDigitalWrite(MY_RS485_DE_PIN, HIGH);
273+
#else
274+
hwDigitalWrite(MY_RS485_DE_PIN, LOW);
275+
#endif
268276
delayMicroseconds(5);
269277
#endif
270278

@@ -310,7 +318,11 @@ bool transportSend(const uint8_t to, const void* data, const uint8_t len, const
310318
_dev.flush();
311319
#endif
312320
#endif
321+
#if !defined(MY_RS485_DE_INVERSE)
313322
hwDigitalWrite(MY_RS485_DE_PIN, LOW);
323+
#else
324+
hwDigitalWrite(MY_RS485_DE_PIN, HIGH);
325+
#endif
314326
#endif
315327
return true;
316328
}
@@ -324,7 +336,11 @@ bool transportInit(void)
324336
_serialReset();
325337
#if defined(MY_RS485_DE_PIN)
326338
hwPinMode(MY_RS485_DE_PIN, OUTPUT);
339+
#if !defined(MY_RS485_DE_INVERSE)
327340
hwDigitalWrite(MY_RS485_DE_PIN, LOW);
341+
#else
342+
hwDigitalWrite(MY_RS485_DE_PIN, HIGH);
343+
#endif
328344
#endif
329345
return true;
330346
}

keywords.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ MY_RFM69_TX_POWER_DBM LITERAL1
233233
MY_RS485 LITERAL1
234234
MY_RS485_BAUD_RATE LITERAL1
235235
MY_RS485_DE_PIN LITERAL1
236+
MY_RS485_DE_INVERSE LITERAL1
236237
MY_RS485_HWSERIAL LITERAL1
237238
MY_RS485_MAX_MESSAGE_LENGTH LITERAL1
238239
MY_RS485_SOH_COUNT LITERAL1

0 commit comments

Comments
 (0)