Skip to content

Commit 5ad078f

Browse files
committed
Fixing UART (sercom0)
1 parent 4ebee7d commit 5ad078f

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

Diff for: cores/arduino/Uart.cpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
#include "WVariant.h"
33
#include "wiring_digital.h"
44

5-
Uart::Uart(SERCOM *s, uint8_t pinRX, uint8_t pinTX)
5+
Uart::Uart(SERCOM *_s, uint8_t _pinRX, uint8_t _pinTX)
66
{
7-
sercom = s;
8-
pinPeripheral(pinRX, g_APinDescription[pinRX].ulPinType);
9-
pinPeripheral(pinTX, g_APinDescription[pinTX].ulPinType);
7+
sercom = _s;
8+
uc_pinRX = _pinRX;
9+
uc_pinTX = _pinTX;
1010
}
1111

1212
void Uart::begin(unsigned long baudrate)
@@ -16,6 +16,9 @@ void Uart::begin(unsigned long baudrate)
1616

1717
void Uart::begin(unsigned long baudrate, uint8_t config)
1818
{
19+
pinPeripheral(uc_pinRX, g_APinDescription[uc_pinRX].ulPinType);
20+
pinPeripheral(uc_pinTX, g_APinDescription[uc_pinTX].ulPinType);
21+
1922
sercom->initUART(UART_INT_CLOCK, SAMPLE_RATE_x16, baudrate);
2023
sercom->initFrame(extractCharSize(config), LSB_FIRST, extractParity(config), extractNbStopBit(config));
2124
sercom->initPads(UART_TX_PAD_2, SERCOM_RX_PAD_3);

Diff for: cores/arduino/Uart.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
class Uart : public HardwareSerial
1212
{
1313
public:
14-
Uart(SERCOM *s, uint8_t pinRX, uint8_t pinTX);
14+
Uart(SERCOM *_s, uint8_t _pinRX, uint8_t _pinTX);
1515
void begin(unsigned long baudRate);
1616
void begin(unsigned long baudrate, uint8_t config);
1717
void end();
@@ -29,6 +29,9 @@ class Uart : public HardwareSerial
2929
private:
3030
SERCOM *sercom;
3131
RingBuffer rxBuffer;
32+
33+
uint8_t uc_pinRX;
34+
uint8_t uc_pinTX;
3235

3336
SercomNumberStopBit extractNbStopBit(uint8_t config);
3437
SercomUartCharSize extractCharSize(uint8_t config);

0 commit comments

Comments
 (0)