diff --git a/cores/arduino/Uart.cpp b/cores/arduino/Uart.cpp
index 0d3abb98e887940efb5b79d21ac1d6cb2e8b6a31..0fc77541dd54197c89b786135e1e029e811ab13b 100644
--- a/cores/arduino/Uart.cpp
+++ b/cores/arduino/Uart.cpp
@@ -2,11 +2,11 @@
 #include "WVariant.h"
 #include "wiring_digital.h"
 
-Uart::Uart(SERCOM *s, uint8_t pinRX, uint8_t pinTX)
+Uart::Uart(SERCOM *_s, uint8_t _pinRX, uint8_t _pinTX)
 {
-	sercom = s;
-	pinPeripheral(pinRX, g_APinDescription[pinRX].ulPinType);
-	pinPeripheral(pinTX, g_APinDescription[pinTX].ulPinType);
+	sercom = _s;
+	uc_pinRX = _pinRX;
+	uc_pinTX = _pinTX;
 }
 
 void Uart::begin(unsigned long baudrate)
@@ -16,6 +16,9 @@ void Uart::begin(unsigned long baudrate)
 
 void Uart::begin(unsigned long baudrate, uint8_t config)
 {
+  pinPeripheral(uc_pinRX, g_APinDescription[uc_pinRX].ulPinType);
+  pinPeripheral(uc_pinTX, g_APinDescription[uc_pinTX].ulPinType);
+
 	sercom->initUART(UART_INT_CLOCK, SAMPLE_RATE_x16, baudrate);
 	sercom->initFrame(extractCharSize(config), LSB_FIRST, extractParity(config), extractNbStopBit(config));
 	sercom->initPads(UART_TX_PAD_2, SERCOM_RX_PAD_3);
diff --git a/cores/arduino/Uart.h b/cores/arduino/Uart.h
index b8c64880880782d9fdb93184fa9d43797e34c4c1..a018b884cb1021f0130897b51ed194d4d01a520d 100644
--- a/cores/arduino/Uart.h
+++ b/cores/arduino/Uart.h
@@ -11,7 +11,7 @@
 class Uart : public HardwareSerial
 {
 	public:
-		Uart(SERCOM *s, uint8_t pinRX, uint8_t pinTX);
+		Uart(SERCOM *_s, uint8_t _pinRX, uint8_t _pinTX);
 		void begin(unsigned long baudRate);
 		void begin(unsigned long baudrate, uint8_t config);
 		void end();
@@ -29,6 +29,9 @@ class Uart : public HardwareSerial
 	private:
 		SERCOM *sercom;
 		RingBuffer rxBuffer;
+    
+    uint8_t uc_pinRX;
+    uint8_t uc_pinTX;
 
 		SercomNumberStopBit extractNbStopBit(uint8_t config);
 		SercomUartCharSize extractCharSize(uint8_t config);