Skip to content

Commit 46564d6

Browse files
committed
Add compatibility to arduino DUE
1 parent 22829af commit 46564d6

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

src/RS485.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
#ifdef __MBED__
2323
#include "pinDefinitions.h"
24-
RS485Class::RS485Class(HardwareSerial& hwSerial, PinName txPin, PinName dePin, PinName rePin) :
24+
RS485Class::RS485Class(SERIAL_HARDWARE_CLASS& hwSerial, PinName txPin, PinName dePin, PinName rePin) :
2525
_serial(&hwSerial),
2626
_txPin(PinNameToIndex(txPin)),
2727
_dePin(PinNameToIndex(dePin)),
@@ -31,7 +31,7 @@ RS485Class::RS485Class(HardwareSerial& hwSerial, PinName txPin, PinName dePin, P
3131
}
3232
#endif
3333

34-
RS485Class::RS485Class(HardwareSerial& hwSerial, int txPin, int dePin, int rePin) :
34+
RS485Class::RS485Class(SERIAL_HARDWARE_CLASS& hwSerial, int txPin, int dePin, int rePin) :
3535
_serial(&hwSerial),
3636
_txPin(txPin),
3737
_dePin(dePin),
@@ -50,12 +50,12 @@ void RS485Class::begin(unsigned long baudrate, int predelay, int postdelay)
5050
begin(baudrate, SERIAL_8N1, predelay, postdelay);
5151
}
5252

53-
void RS485Class::begin(unsigned long baudrate, uint16_t config)
53+
void RS485Class::begin(unsigned long baudrate, SERIAL_MODE_TYPE config)
5454
{
5555
begin(baudrate, config, RS485_DEFAULT_PRE_DELAY, RS485_DEFAULT_POST_DELAY);
5656
}
5757

58-
void RS485Class::begin(unsigned long baudrate, uint16_t config, int predelay, int postdelay)
58+
void RS485Class::begin(unsigned long baudrate, SERIAL_MODE_TYPE config, int predelay, int postdelay)
5959
{
6060
_baudrate = baudrate;
6161
_config = config;
@@ -206,5 +206,5 @@ void RS485Class::setDelays(int predelay, int postdelay)
206206
#ifdef RS485_SERIAL_PORT
207207
RS485Class RS485(RS485_SERIAL_PORT, RS485_DEFAULT_TX_PIN, RS485_DEFAULT_DE_PIN, RS485_DEFAULT_RE_PIN);
208208
#else
209-
RS485Class RS485(SERIAL_PORT_HARDWARE, RS485_DEFAULT_TX_PIN, RS485_DEFAULT_DE_PIN, RS485_DEFAULT_RE_PIN);
209+
RS485Class RS485(SERIAL_PORT_HARDWARE_DEFAULT, RS485_DEFAULT_TX_PIN, RS485_DEFAULT_DE_PIN, RS485_DEFAULT_RE_PIN);
210210
#endif

src/RS485.h

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,18 @@
2222

2323
#include <Arduino.h>
2424

25+
#ifdef ARDUINO_SAM_DUE
26+
#define SERIAL_HARDWARE_CLASS USARTClass
27+
#define SERIAL_MODE_TYPE UARTClass::UARTModes
28+
#else
29+
#define SERIAL_HARDWARE_CLASS HardwareSerial
30+
#define SERIAL_MODE_TYPE uint16_t
31+
#endif
32+
33+
#ifdef ARDUINO_ARCH_SAM
34+
#define PIN_SERIAL1_TX 18
35+
#endif
36+
2537
#ifndef RS485_DEFAULT_TX_PIN
2638
#ifdef PIN_SERIAL1_TX
2739
#define RS485_DEFAULT_TX_PIN PIN_SERIAL1_TX
@@ -39,10 +51,15 @@
3951
#elif ARDUINO_SAMD_ZERO
4052
#define RS485_DEFAULT_DE_PIN A4
4153
#define RS485_DEFAULT_RE_PIN A5
54+
//#elif defined(ARDUINO_UNOR4_WIFI) || defined(ARDUINO_UNOR4_MINIMA)
4255
#elif defined(ARDUINO_UNOR4_WIFI) || defined(ARDUINO_UNOR4_MINIMA)
43-
#define SERIAL_PORT_HARDWARE Serial1
56+
#define SERIAL_PORT_HARDWARE_DEFAULT Serial1
4457
#define RS485_DEFAULT_DE_PIN 8
4558
#define RS485_DEFAULT_RE_PIN 7
59+
#elif defined(ARDUINO_ARCH_SAM)
60+
#define SERIAL_PORT_HARDWARE_DEFAULT Serial1
61+
#define RS485_DEFAULT_DE_PIN 23
62+
#define RS485_DEFAULT_RE_PIN -1
4663
#else
4764
#ifndef RS485_DEFAULT_DE_PIN
4865
#define RS485_DEFAULT_DE_PIN A6
@@ -64,14 +81,14 @@
6481
class RS485Class : public Stream {
6582
public:
6683
#ifdef __MBED__
67-
RS485Class(HardwareSerial& hwSerial, PinName txPin, PinName dePin, PinName rePin);
84+
RS485Class(SERIAL_HARDWARE_LIB& hwSerial, PinName txPin, PinName dePin, PinName rePin);
6885
#endif
69-
RS485Class(HardwareSerial& hwSerial, int txPin, int dePin, int rePin);
86+
RS485Class(SERIAL_HARDWARE_CLASS& hwSerial, int txPin, int dePin, int rePin);
7087

7188
virtual void begin(unsigned long baudrate);
72-
virtual void begin(unsigned long baudrate, uint16_t config);
7389
virtual void begin(unsigned long baudrate, int predelay, int postdelay);
74-
virtual void begin(unsigned long baudrate, uint16_t config, int predelay, int postdelay);
90+
virtual void begin(unsigned long baudrate, SERIAL_MODE_TYPE config);
91+
virtual void begin(unsigned long baudrate, SERIAL_MODE_TYPE config, int predelay, int postdelay);
7592
virtual void end();
7693
virtual int available();
7794
virtual int peek();
@@ -94,7 +111,7 @@ class RS485Class : public Stream {
94111
void setDelays(int predelay, int postdelay);
95112

96113
private:
97-
HardwareSerial* _serial;
114+
SERIAL_HARDWARE_CLASS* _serial;
98115
int _txPin;
99116
int _dePin;
100117
int _rePin;
@@ -103,9 +120,9 @@ class RS485Class : public Stream {
103120

104121
bool _transmisionBegun;
105122
unsigned long _baudrate;
106-
uint16_t _config;
123+
SERIAL_MODE_TYPE _config;
107124
};
108125

109126
extern RS485Class RS485;
110127

111-
#endif
128+
#endif

0 commit comments

Comments
 (0)