From ce9b9285cbb4478c3103cdb7116b62deb9b5bcd6 Mon Sep 17 00:00:00 2001
From: Thibaut VIARD <thibaut.viard@atmel.com>
Date: Mon, 5 May 2014 11:37:53 +0200
Subject: [PATCH]  checkpoint

---
 cores/arduino/Arduino.h                       |  75 ++++----
 cores/arduino/IPAddress.h                     |   2 +-
 cores/arduino/RingBuffer.cpp                  |  14 +-
 cores/arduino/delay.h                         |   1 +
 .../build_gcc/debug_arduino_zero/IPAddress.o  | Bin 0 -> 16900 bytes
 .../build_gcc/debug_arduino_zero/Print.o      | Bin 0 -> 39712 bytes
 .../build_gcc/debug_arduino_zero/Reset.o      | Bin 0 -> 6344 bytes
 .../build_gcc/debug_arduino_zero/RingBuffer.o | Bin 0 -> 9396 bytes
 .../build_gcc/debug_arduino_zero/main.o       | Bin 0 -> 4396 bytes
 .../build_gcc/debug_arduino_zero/test.o       | Bin 0 -> 3420 bytes
 cores/arduino/wiring.c                        |  10 +-
 cores/arduino/wiring_analog.c.disabled        |  70 -------
 cores/arduino/wiring_digital.c.disabled       | 172 ++++++++++++------
 cores/arduino/wiring_private.h                |   4 +-
 cores/arduino/wiring_shift.c                  |  63 +++----
 variants/arduino_zero/variant.cpp             |  43 +++--
 16 files changed, 235 insertions(+), 219 deletions(-)
 create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/IPAddress.o
 create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/Print.o
 create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/Reset.o
 create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/RingBuffer.o
 create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/main.o
 create mode 100644 cores/arduino/validation/build_gcc/debug_arduino_zero/test.o

diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h
index e38ccd62..e270b158 100644
--- a/cores/arduino/Arduino.h
+++ b/cores/arduino/Arduino.h
@@ -101,44 +101,42 @@ typedef enum _EAnalogChannel
 
 #define ADC_CHANNEL_NUMBER_NONE 0xffffffff
 
-// Definitions for PWM channels
-typedef enum _EPWMChannel
-{
-  NOT_ON_PWM=-1,
- // PWM_CH0=0, // todo
- // PWM_CH1,
- // PWM_CH2,
- // PWM_CH3,
- // PWM_CH4,
- // PWM_CH5,
- // PWM_CH6,
- // PWM_CH7
-} EPWMChannel ;
-
 // Definitions for TC channels
 typedef enum _ETCChannel
 {
   NOT_ON_TIMER=-1,
- // TC0_CHA0=0, // todo
- // TC0_CHB0,
- // TC0_CHA1,
- // TC0_CHB1,
- // TC0_CHA2,
- // TC0_CHB2,
- // TC1_CHA3,
- // TC1_CHB3,
- // TC1_CHA4,
- // TC1_CHB4,
- // TC1_CHA5,
- // TC1_CHB5,
- // TC2_CHA6,
- // TC2_CHB6,
- // TC2_CHA7,
- // TC2_CHB7,
- // TC2_CHA8,
- // TC2_CHB8
+	TC3_CH0,
+	TC3_CH1,
+	TCC0_CH0,
+	TCC0_CH1,
+	TCC0_CH4,
+	TCC0_CH5,
+	TCC0_CH6,
+	TCC0_CH7,
+	TCC1_CH0,
+	TCC1_CH1,
+	TCC2_CH0,
+	TCC2_CH1
 } ETCChannel ;
 
+// Definitions for PWM channels
+typedef enum _EPWMChannel
+{
+  NOT_ON_PWM=-1,
+	PWM3_CH0=TC3_CH0,
+	PWM3_CH1=TC3_CH1,
+	PWM0_CH0=TCC0_CH0,
+	PWM0_CH1=TCC0_CH1,
+	PWM0_CH4=TCC0_CH4,
+	PWM0_CH5=TCC0_CH5,
+	PWM0_CH6=TCC0_CH6,
+	PWM0_CH7=TCC0_CH7,
+	PWM1_CH0=TCC1_CH0,
+	PWM1_CH1=TCC1_CH1,
+	PWM2_CH0=TCC2_CH0,
+	PWM2_CH1=TCC2_CH1
+} EPWMChannel ;
+
 typedef enum _EPortType
 {
 	NOT_A_PORT=-1,
@@ -153,8 +151,7 @@ typedef enum _EPortType
 
 typedef enum _EPioType
 {
-  PIO_NOT_A_PIN,  /* Not under control of a peripheral. */
-  PIO_DIGITAL,    /* The pin is controlled by PORT. */
+  PIO_NOT_A_PIN=-1,  /* Not under control of a peripheral. */
   PIO_EXTINT,     /* The pin is controlled by the associated signal of peripheral A. */
   PIO_ANALOG,     /* The pin is controlled by the associated signal of peripheral B. */
   PIO_SERCOM,     /* The pin is controlled by the associated signal of peripheral C. */
@@ -163,10 +160,13 @@ typedef enum _EPioType
   PIO_TIMER_ALT,  /* The pin is controlled by the associated signal of peripheral F. */
   PIO_COM,        /* The pin is controlled by the associated signal of peripheral G. */
   PIO_AC_CLK,     /* The pin is controlled by the associated signal of peripheral H. */
+  PIO_PWM=PIO_TIMER,
+  PIO_PWM_ALT=PIO_TIMER_ALT,
 
-  PIO_INPUT,      /* The pin is controlled by PORT and is an input. */
-  PIO_OUTPUT_0,   /* The pin is controlled by PORT and is an output with a default level of 0. */
-  PIO_OUTPUT_1    /* The pin is controlled by PORT and is an output with a default level of 1. */
+  PIO_DIGITAL,    /* The pin is controlled by PORT. */
+  PIO_INPUT,        /* The pin is controlled by PORT and is an input. */
+  PIO_INPUT_PULLUP, /* The pin is controlled by PORT and is an input with internal pull-up resistor enabled. */
+  PIO_OUTPUT,       /* The pin is controlled by PORT and is an output. */
 } EPioType ;
 
 /**
@@ -204,6 +204,7 @@ extern const PinDescription g_APinDescription[] ;
 #include "WMath.h"
 #include "HardwareSerial.h"
 #include "wiring_pulse.h"
+#include "delay.h"
 
 #endif // __cplusplus
 
diff --git a/cores/arduino/IPAddress.h b/cores/arduino/IPAddress.h
index 622efb76..c86089c3 100644
--- a/cores/arduino/IPAddress.h
+++ b/cores/arduino/IPAddress.h
@@ -42,7 +42,7 @@ public:
 
     // Overloaded cast operator to allow IPAddress objects to be used where a pointer
     // to a four-byte uint8_t array is expected
-    operator uint32_t() const { return *((uint32_t*)_address); };
+    operator uint32_t() const { return *((uint32_t*)_address+0); };
     bool operator==(const IPAddress& addr) const { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };
     bool operator==(const uint8_t* addr) const;
 
diff --git a/cores/arduino/RingBuffer.cpp b/cores/arduino/RingBuffer.cpp
index f35e5df3..c72060d6 100644
--- a/cores/arduino/RingBuffer.cpp
+++ b/cores/arduino/RingBuffer.cpp
@@ -8,7 +8,7 @@
 
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   See the GNU Lesser General Public License for more details.
 
   You should have received a copy of the GNU Lesser General Public
@@ -50,17 +50,17 @@ int RingBuffer::read_char()
 {
 	if(_iTail == _iHead)
 		return -1;
-	
+
 	int value = _aucBuffer[_iTail];
 	_iTail = nextIndex(_iTail);
-	
+
 	return value;
 }
 
 int RingBuffer::available()
 {
 	int delta = _iHead - _iTail;
-	
+
 	if(delta < 0)
 		return SERIAL_BUFFER_SIZE + delta;
 	else
@@ -71,7 +71,7 @@ int RingBuffer::peek()
 {
 	if(_iTail == _iHead)
 		return -1;
-		
+
 	return _aucBuffer[_iTail];
 }
 
@@ -80,7 +80,7 @@ int RingBuffer::nextIndex(int index)
 	return (uint32_t)(index + 1) % SERIAL_BUFFER_SIZE;
 }
 
-int RingBuffer::isFull()
+bool RingBuffer::isFull()
 {
 	return (nextIndex(_iTail) == _iHead);
-}
\ No newline at end of file
+}
diff --git a/cores/arduino/delay.h b/cores/arduino/delay.h
index e26ba81b..9382d2c4 100644
--- a/cores/arduino/delay.h
+++ b/cores/arduino/delay.h
@@ -24,6 +24,7 @@ extern "C" {
 #endif
 
 #include <stdint.h>
+#include "variant.h"
 
 /**
  * \brief Returns the number of milliseconds since the Arduino board began running the current program.
diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/IPAddress.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/IPAddress.o
new file mode 100644
index 0000000000000000000000000000000000000000..9e63f8d59ab2c5d332ec21f1fed0183b45766ab3
GIT binary patch
literal 16900
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
F{Xd`DtK|Ry

literal 0
HcmV?d00001

diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/Print.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/Print.o
new file mode 100644
index 0000000000000000000000000000000000000000..7bb921ed00cfc1357c4c3913e0924f911e72f1b9
GIT binary patch
literal 39712
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

literal 0
HcmV?d00001

diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/Reset.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/Reset.o
new file mode 100644
index 0000000000000000000000000000000000000000..c950d3a3ec4dbb3a4a1e0ec848fb0edd7c620ab9
GIT binary patch
literal 6344
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

literal 0
HcmV?d00001

diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/RingBuffer.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/RingBuffer.o
new file mode 100644
index 0000000000000000000000000000000000000000..4bd676669d25584711b5967f964b8797193a9392
GIT binary patch
literal 9396
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
Q(qE%Q-1AC*pAzx^12oB4h5!Hn

literal 0
HcmV?d00001

diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/main.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/main.o
new file mode 100644
index 0000000000000000000000000000000000000000..fde33e4e5f6cc1cfa607411de9a9ea91753925d6
GIT binary patch
literal 4396
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

literal 0
HcmV?d00001

diff --git a/cores/arduino/validation/build_gcc/debug_arduino_zero/test.o b/cores/arduino/validation/build_gcc/debug_arduino_zero/test.o
new file mode 100644
index 0000000000000000000000000000000000000000..6b21d4500e4bf0c52dfabd3538cfb5e2fa199473
GIT binary patch
literal 3420
zcmb_eO^6&-5PtnLyOZqhnB639{xq$uxXETZlg+AY%xX59AHhUJNDk^q=$Y=BZJ3!J
zyL)0H0fQctAOR05NWe?L927+&3KGmI2E>C0Z+h@1-U8k{#P92VZ|BV_>cN8Us`{#4
zRlRyY-LD-!cEm6Yp~w)^qOS>YyO3E5a~Yc!_lYgy;uqr68%HkQAVlBQ`gLG7jlwp*
z<@-l?ZOwrG%QS|r0XB`|Re+{h_>P)6{4SYY_>!PKe3q=3)nFEf--2e@g|L&-R?1y|
z$)kLpdD=HK(7s8qXkX84=7#|7E?&lVyhM@G75f&9#zG$u#<=lNY5j;*+FCk2Ic}_*
zM2smhGV&xKB$gsZ+pc(OvsKzR^2ErvF)?&t)B6WEBhC~alkw#2DKQsG@m%ZcI(`gB
zQ#{DG@keP)U|momTWko|-JJ$W>ejoQ2dI!`vbG!6m}{EwRmg&2ZOD;U)M+}|iyiBA
zlCaqce22>6ebvR-?}eSnnXT-ZQ_2fL995US*nh=~gDN;Zs)^V3tMw=jk`?Hz*9v_v
z4WmxA)(czynP$B%k|6DMMV4?NS-*|}xE4jNepPj(71?X0Vn6EDT7fwF>}h9dX2zLw
z=iR+oxs}=3d1pEfT7j1YJDe96PafYLv}=Ly2Yz|(%zU{Pd!72S69;F*1T|vN{NCBw
zmz;9D-t8@5Drs=8+^%$6y#!dg+-ujsnYdi{S}lN0r~F*SDJQAFP@kE3eBLQH8of@P
zGcG4V#^KdK4?ImTcfHtaJ8kb=IqbB;P5_p4l5!Gunyp~rkxE4*%gF8wG(xURfAVtT
zjaKBP=x5ZGqquVVMo7X}gY<ki5aQ_4(mrRJojQfCCQc)Y9dyMxEW6^Ih@*OtBvG8~
z_#YZ67WZHadVyC9h4C<V<5J$!<CPgPG&+2IjWJ<wFg6;K)+S@KvBkK52u`DT?t%<q
zUMP)@iA~TI@f<9cif@{ijm5EH@sBp)Cg<C!R|8MuoG&X03yU6cS%h0l65*l?E-<g=
z(&XlQ)WzPBme4;pU|Hp#b^q_&`vyO#^_pkGP9s9%O!jIuY(0?;lL$6sGe9{^oI`&_
zxM5TX%tyHOsND{@<}Auf(>Sd4a0}>B8rW}G|Nl(9hIy%QJxKYzp38ja_m>b4K&GEX
z5VYElHWC+~Yxi${kHTklUj6RNzZXL6l76a={m^w%d5-{u+<jdd>Bo2~j^YP_t&u)t
z+pr1g$3CzJ^rPOuqt|yx;$Ru6cvWchQ}yxA)=AaZ1E|+WKjz^>Qt@7ftk*ZC)wfpq
zam-~rDmFxM3eQ&*Bq`e^=z6?eh<6(p=L>OVz8^qVV<3uAC<iD=QnrtwE19NaP^P61
znX+Ajtmpk5$#}k*_Z~c|&)+~+V<3tYihd6$+t;w^@o-%T2N>gx<5BT`fUL$q6mLU0
zK|zwTeGgraw+r#s0b{)NcvQTfA#+Rx59uc;zo{V5Df0PMa^-gm2Y_p-Ncr6X08>}t
zk0H^lQovQ{0t6+~+=AcJnjh;U@sB{C$9}CZ?4z0od!)`J$6beELQ9}Ta<!M~cLJO4
zGl1J5^Ph(C*eB-H<8d>wcZyUzr7N!EwzzXw;pEo9jH&CDP#?$$%@#ZpeNtV?5liGh
ztIBTSgrhwgsar3HES$!{cty>Z`SngyU%M*a;Aks5Vf_%6;4f;Qtn4J{I#;PrR<;v$
zePfo7{m)51DXeF;ey?)OxFsgDwc{FaW)tWiJ^DJ(mA}fVR809R|8V%{$Y`f*=}t_Q
z-7`@P?-6rDeh$euN}c<~oXEc&CJxoK#CJ>1Zvg%I&rN<v@@FJJDf#n~Hzn^#&O4Rk
zE=c}{<d-CWNAmY1ze0}sKa%<<<Z2$cl-O6=*+t?c>fBZ2>>2TFzTnwBfG<iMr3e!Z
N&Bg<-NPSM){{%^Dn{faD

literal 0
HcmV?d00001

diff --git a/cores/arduino/wiring.c b/cores/arduino/wiring.c
index 1bb8e2ab..182e5e1c 100644
--- a/cores/arduino/wiring.c
+++ b/cores/arduino/wiring.c
@@ -28,7 +28,7 @@ extern "C" {
  */
 extern uint32_t SystemCoreClock=1000000ul ;
 
-void __libc_init_array(void);
+//void __libc_init_array(void);
 
 /*
  * Arduino Zero board initialization
@@ -40,6 +40,8 @@ void __libc_init_array(void);
  */
 void init( void )
 {
+  uint32_t ul ;
+
   // Set Systick to 1ms interval, common to all Cortex-M variants
   if ( SysTick_Config( SystemCoreClock / 1000 ) )
   {
@@ -53,6 +55,12 @@ void init( void )
   // Setup PORT for Digital I/O
 	PM->APBBMASK.bit.PORT=1 ;
 
+	// Setup all pins (digital and analog) in INPUT mode (default is nothing)
+	for ( ul = 0 ; ul < NUM_DIGITAL_PINS ; ul++ )
+	{
+	  pinMode( ul, INPUT ) ;
+	}
+
   // Initialize Serial port U(S)ART pins
 	// Todo
 
diff --git a/cores/arduino/wiring_analog.c.disabled b/cores/arduino/wiring_analog.c.disabled
index ffdc4e2f..bdc7de87 100644
--- a/cores/arduino/wiring_analog.c.disabled
+++ b/cores/arduino/wiring_analog.c.disabled
@@ -59,76 +59,6 @@ uint32_t analogRead(uint32_t ulPin)
 
   ulChannel = g_APinDescription[ulPin].ulADCChannelNumber ;
 
-#if defined __SAM3U4E__
-	switch ( g_APinDescription[ulPin].ulAnalogChannel )
-	{
-		// Handling ADC 10 bits channels
-		case ADC0 :
-		case ADC1 :
-		case ADC2 :
-		case ADC3 :
-		case ADC4 :
-		case ADC5 :
-		case ADC6 :
-		case ADC7 :
-			// Enable the corresponding channel
-			adc_enable_channel( ADC, ulChannel );
-
-			// Start the ADC
-			adc_start( ADC );
-
-			// Wait for end of conversion
-			while ((adc_get_status(ADC) & ADC_SR_DRDY) != ADC_SR_DRDY)
-				;
-
-			// Read the value
-			ulValue = adc_get_latest_value(ADC);
-			ulValue = mapResolution(ulValue, 10, _readResolution);
-
-			// Disable the corresponding channel
-			adc_disable_channel( ADC, ulChannel );
-
-			// Stop the ADC
-			//      adc_stop( ADC ) ; // never do adc_stop() else we have to reconfigure the ADC each time
-			break;
-
-		// Handling ADC 12 bits channels
-		case ADC8 :
-		case ADC9 :
-		case ADC10 :
-		case ADC11 :
-		case ADC12 :
-		case ADC13 :
-		case ADC14 :
-		case ADC15 :
-			// Enable the corresponding channel
-			adc12b_enable_channel( ADC12B, ulChannel );
-
-			// Start the ADC12B
-			adc12b_start( ADC12B );
-
-			// Wait for end of conversion
-			while ((adc12b_get_status(ADC12B) & ADC12B_SR_DRDY) != ADC12B_SR_DRDY)
-				;
-
-			// Read the value
-			ulValue = adc12b_get_latest_value(ADC12B) >> 2;
-			ulValue = mapResolution(ulValue, 12, _readResolution);
-
-			// Stop the ADC12B
-			//      adc12_stop( ADC12B ) ; // never do adc12_stop() else we have to reconfigure the ADC12B each time
-
-			// Disable the corresponding channel
-			adc12b_disable_channel( ADC12B, ulChannel );
-			break;
-
-		// Compiler could yell because we don't handle DAC pins
-		default :
-			ulValue=0;
-			break;
-	}
-#endif
-
 #if defined __SAM3X8E__ || defined __SAM3X8H__
 	static uint32_t latestSelectedChannel = -1;
 	switch ( g_APinDescription[ulPin].ulAnalogChannel )
diff --git a/cores/arduino/wiring_digital.c.disabled b/cores/arduino/wiring_digital.c.disabled
index 7c958de8..091350b3 100644
--- a/cores/arduino/wiring_digital.c.disabled
+++ b/cores/arduino/wiring_digital.c.disabled
@@ -1,5 +1,5 @@
 /*
-  Copyright (c) 2011 Arduino.  All right reserved.
+  Copyright (c) 2014 Arduino.  All right reserved.
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
@@ -22,57 +22,120 @@
  extern "C" {
 #endif
 
-extern void pinMode( uint32_t ulPin, uint32_t ulMode )
+int pinPeripheral( uint32_t ulPin, EPioType ulPeripheral )
 {
 	if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN )
-    {
-        return ;
-    }
+	{
+		return ;
+	}
+
+	switch ( ulPeripheral )
+	{
+		case PIO_DIGITAL:
+		case PIO_INPUT:
+		case PIO_OUTPUT_0:
+		case PIO_OUTPUT_1:
+		  // Disable peripheral muxing
+			PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].bit.PMUXEN = 1 ;
+
+      // Configure pin mode, if requested
+			switch ( ulPeripheral )
+			{
+				case PIO_INPUT:
+				  pinMode( ulPin, INPUT ) ;
+				break ;
+
+				case PIO_INPUT_PULLUP:
+				  pinMode( ulPin, INPUT_PULLUP ) ;
+				break ;
+
+				case PIO_OUTPUT:
+				  pinMode( ulPin, OUTPUT ) ;
+				break ;
+			}
+		break ;
+
+		case PIO_ANALOG:
+			PORT->Group[g_APinDescription[ulPin].ulPort]->PMUX[g_APinDescription[ulPin].ulPin].
+			PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].bit.PMUXEN = 1 ;
+
+			if ( g_APinDescription[ulPin].ulPin < 16 )
+			{
+				PORT->Group[g_APinDescription[ulPin].ulPort]->WRCONFIG.reg=PORT_WRCONFIG_PMUXEN|PORT_WRCONFIG_PINMASK( g_APinDescription[ulPin].ulPin ) ;
+			}
+			else
+			{
+				PORT->Group[g_APinDescription[ulPin].ulPort]->WRCONFIG.reg=PORT_WRCONFIG_HWSEL|PORT_WRCONFIG_PMUXEN|  |PORT_WRCONFIG_PINMASK( g_APinDescription[ulPin].ulPin >> 16 ) ;
+			}
+			PORT_WRCONFIG_PMUX()
+			PORT_WRCONFIG_WRPINCFG
+			PORT_WRCONFIG_WRPMUX
+			PORT_WRCONFIG_PINMASK()
+		break ;
+
+		case PIO_EXTINT:
+		break ;
+
+		case PIO_SERCOM:
+		break ;
+
+		case PIO_SERCOM_ALT:
+		break ;
+
+		case PIO_TIMER:
+		break ;
+
+		case PIO_TIMER_ALT:
+		break ;
+
+		case PIO_COM:
+		break ;
+
+		case PIO_AC_CLK:
+		break ;
+
+		case PIO_NOT_A_PIN:
+			return -1 ;
+		break ;
+	}
+}
+
+void pinMode( uint32_t ulPin, uint32_t ulMode )
+{
+	if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN )
+	{
+		return ;
+	}
 
 	switch ( ulMode )
-    {
-        case INPUT:
-            /* Enable peripheral for clocking input */
-            pmc_enable_periph_clk( g_APinDescription[ulPin].ulPeripheralId ) ;
-            PIO_Configure(
-            	g_APinDescription[ulPin].pPort,
-            	PIO_INPUT,
-            	g_APinDescription[ulPin].ulPin,
-            	0 ) ;
-        break ;
-
-        case INPUT_PULLUP:
-            /* Enable peripheral for clocking input */
-            pmc_enable_periph_clk( g_APinDescription[ulPin].ulPeripheralId ) ;
-            PIO_Configure(
-            	g_APinDescription[ulPin].pPort,
-            	PIO_INPUT,
-            	g_APinDescription[ulPin].ulPin,
-            	PIO_PULLUP ) ;
-        break ;
-
-        case OUTPUT:
-            PIO_Configure(
-            	g_APinDescription[ulPin].pPort,
-            	PIO_OUTPUT_1,
-            	g_APinDescription[ulPin].ulPin,
-            	g_APinDescription[ulPin].ulPinConfiguration ) ;
-
-            /* if all pins are output, disable PIO Controller clocking, reduce power consumption */
-            if ( g_APinDescription[ulPin].pPort->PIO_OSR == 0xffffffff )
-            {
-                pmc_disable_periph_clk( g_APinDescription[ulPin].ulPeripheralId ) ;
-            }
-        break ;
-
-        default:
-        break ;
-    }
+	{
+		case INPUT:
+		  // Set pin to input mode
+			PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].reg=(uint8_t)(PORT_PINCFG_INEN) ;
+		  PORT->Group[g_APinDescription[ulPin].ulPort]->DIRCLR.reg = (uint32_t)(1<<g_APinDescription[ulPin].ulPin) ;
+		break ;
+
+		case INPUT_PULLUP:
+		  // Set pin to input mode with pull-up resistor enabled
+			PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].reg=(uint8_t)(PORT_PINCFG_INEN|PORT_PINCFG_PULLEN) ;
+		  PORT->Group[g_APinDescription[ulPin].ulPort]->DIRCLR.reg = (uint32_t)(1<<g_APinDescription[ulPin].ulPin) ;
+		break ;
+
+		case OUTPUT:
+		  // Set pin to output mode
+			PORT->Group[g_APinDescription[ulPin].ulPort]->PINCFG[g_APinDescription[ulPin].ulPin].reg&=~(uint8_t)(PORT_PINCFG_INEN) ;
+		  PORT->Group[g_APinDescription[ulPin].ulPort]->DIRSET.reg = (uint32_t)(1<<g_APinDescription[ulPin].ulPin) ;
+		break ;
+
+		default:
+		  // do nothing
+		break ;
+	}
 }
 
-extern void digitalWrite( uint32_t ulPin, uint32_t ulVal )
+void digitalWrite( uint32_t ulPin, uint32_t ulVal )
 {
-  /* Handle */
+  /* Handle the case the pin isn't usable as PIO */
 	if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN )
   {
     return ;
@@ -88,17 +151,18 @@ extern void digitalWrite( uint32_t ulPin, uint32_t ulVal )
   }
 }
 
-extern int digitalRead( uint32_t ulPin )
+int digitalRead( uint32_t ulPin )
 {
+  /* Handle the case the pin isn't usable as PIO */
 	if ( g_APinDescription[ulPin].ulPinType == PIO_NOT_A_PIN )
-    {
-        return LOW ;
-    }
-
-	if ( PIO_Get( g_APinDescription[ulPin].pPort, PIO_INPUT, g_APinDescription[ulPin].ulPin ) == 1 )
-    {
-        return HIGH ;
-    }
+	{
+		return LOW ;
+	}
+
+	if ( (PORT->Group[g_APinDescription[ulPin].ulPort]->IN.reg & g_APinDescription[ulPin].ulPin) != 0 )
+	{
+		return HIGH ;
+	}
 
 	return LOW ;
 }
diff --git a/cores/arduino/wiring_private.h b/cores/arduino/wiring_private.h
index 573da03d..6200593c 100644
--- a/cores/arduino/wiring_private.h
+++ b/cores/arduino/wiring_private.h
@@ -8,7 +8,7 @@
 
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   See the GNU Lesser General Public License for more details.
 
   You should have received a copy of the GNU Lesser General Public
@@ -28,7 +28,7 @@ extern "C"{
 #endif
 
 // Includes Atmel CMSIS
-#include <chip.h>
+#include "sam.h"
 
 #include "wiring_constants.h"
 
diff --git a/cores/arduino/wiring_shift.c b/cores/arduino/wiring_shift.c
index 302f0b5f..1a8e1a48 100644
--- a/cores/arduino/wiring_shift.c
+++ b/cores/arduino/wiring_shift.c
@@ -8,7 +8,7 @@
 
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   See the GNU Lesser General Public License for more details.
 
   You should have received a copy of the GNU Lesser General Public
@@ -16,7 +16,8 @@
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#include "Arduino.h"
+//#include "Arduino.h"
+#include "wiring_private.h"
 
 #ifdef __cplusplus
 extern "C"{
@@ -24,46 +25,46 @@ extern "C"{
 
 uint32_t shiftIn( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder )
 {
-	uint8_t value = 0 ;
-	uint8_t i ;
+  uint8_t value = 0 ;
+  uint8_t i ;
 
-	for ( i=0 ; i < 8 ; ++i )
-    {
-		digitalWrite( ulClockPin, HIGH ) ;
+  for ( i=0 ; i < 8 ; ++i )
+  {
+    digitalWrite( ulClockPin, HIGH ) ;
 
-		if ( ulBitOrder == LSBFIRST )
-        {
-			value |= digitalRead( ulDataPin ) << i ;
-        }
-		else
-        {
-			value |= digitalRead( ulDataPin ) << (7 - i) ;
-        }
+    if ( ulBitOrder == LSBFIRST )
+    {
+      value |= digitalRead( ulDataPin ) << i ;
+    }
+    else
+    {
+      value |= digitalRead( ulDataPin ) << (7 - i) ;
+    }
 
-		digitalWrite( ulClockPin, LOW ) ;
-	}
+    digitalWrite( ulClockPin, LOW ) ;
+  }
 
-	return value ;
+  return value ;
 }
 
 void shiftOut( uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder, uint32_t ulVal )
 {
-	uint8_t i ;
+  uint8_t i ;
 
-	for ( i=0 ; i < 8 ; i++ )
+  for ( i=0 ; i < 8 ; i++ )
+  {
+    if ( ulBitOrder == LSBFIRST )
+    {
+      digitalWrite( ulDataPin, !!(ulVal & (1 << i)) ) ;
+    }
+    else
     {
-		if ( ulBitOrder == LSBFIRST )
-        {
-			digitalWrite( ulDataPin, !!(ulVal & (1 << i)) ) ;
-        }
-		else	
-        {
-			digitalWrite( ulDataPin, !!(ulVal & (1 << (7 - i))) ) ;
-        }
+      digitalWrite( ulDataPin, !!(ulVal & (1 << (7 - i))) ) ;
+    }
 
-		digitalWrite( ulClockPin, HIGH ) ;
-		digitalWrite( ulClockPin, LOW ) ;		
-	}
+    digitalWrite( ulClockPin, HIGH ) ;
+    digitalWrite( ulClockPin, LOW ) ;
+  }
 }
 
 #ifdef __cplusplus
diff --git a/variants/arduino_zero/variant.cpp b/variants/arduino_zero/variant.cpp
index 61b556a3..711ba180 100644
--- a/variants/arduino_zero/variant.cpp
+++ b/variants/arduino_zero/variant.cpp
@@ -26,8 +26,8 @@
  * | 1          | 1 <- TX          |  PA11  |                 | EIC/EXTINT[11] ADC/AIN[19] *SERCOM0/PAD[3] SERCOM2/PAD[3] TCC1/WO[1] TCC0/WO[3]
  * | 2          | ~2               |  PA08  |                 | EIC/NMI ADC/AIN[16] SERCOM0/PAD[0] SERCOM2/PAD[0] *TCC0/WO[0] TCC1/WO[2]
  * | 3          | ~3               |  PA09  |                 | EIC/EXTINT[9] ADC/AIN[17] SERCOM0/PAD[1] SERCOM2/PAD[1] *TCC0/WO[1] TCC1/WO[3]
- * | 4          | ~4               |  PA14  |                 | EIC/EXTINT[14] SERCOM2/PAD[2] SERCOM4/PAD[2] *TC3/WO[0] TCC0/WO[4]
- * | 5          | ~5               |  PA15  |                 | EIC/EXTINT[15] SERCOM2/PAD[3] SERCOM4/PAD[3] *TC3/WO[1] TCC0/WO[5]
+ * | 4          | ~4               |  PA14  |                 | EIC/EXTINT[14] SERCOM2/PAD[2] SERCOM4/PAD[2] TC3/WO[0] *TCC0/WO[4]
+ * | 5          | ~5               |  PA15  |                 | EIC/EXTINT[15] SERCOM2/PAD[3] SERCOM4/PAD[3] TC3/WO[1] *TCC0/WO[5]
  * | 6          | ~6               |  PA20  |                 | EIC/EXTINT[4] SERCOM5/PAD[2] SERCOM3/PAD[2] TC7/WO[0] *TCC0/WO[6]
  * | 7          | ~7               |  PA21  |                 | EIC/EXTINT[5] SERCOM5/PAD[3] SERCOM3/PAD[3] TC7/WO[1] *TCC0/WO[7]
  * +------------+------------------+--------+-----------------+------------------------------
@@ -90,22 +90,33 @@ extern const PinDescription g_APinDescription[]=
   // 0/1 - SERCOM/UART (Serial)
   { PORTA, 10, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // RX: SERCOM0/PAD[2]
   { PORTA, 11, PIO_SERCOM, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TX: SERCOM0/PAD[3]
+	=TC3_CH0,
+	=TC3_CH1,
+	=TCC0_CH1,
+	=TCC0_CH4,
+	=TCC0_CH5,
+	=TCC0_CH6,
+	=TCC0_CH7,
+	=TCC1_CH0,
+	=TCC1_CH1,
+	=TCC2_CH0,
+	PWM2_CH1=TCC2_CH1
 
 	// 2..12
-	{ PORTA, 8, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[0]
-	{ PORTA, 9, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[1]
-	{ PORTA, 14, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[0]
-	{ PORTA, 15, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[1]
-	{ PORTA, 20, PIO_TIMER_ALT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[6]
-	{ PORTA, 21, PIO_TIMER_ALT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC0/WO[7]
-	{ PORTA, 6, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC1/WO[0]
-	{ PORTA, 7, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC1/WO[1]
-	{ PORTA, 18, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[0]
-	{ PORTA, 16, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC2/WO[0]
-	{ PORTA, 19, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TC3/WO[1]
+	{ PORTA, 8, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH0, TCC0_CH0 }, // TCC0/WO[0]
+	{ PORTA, 9, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH1, TCC0_CH1 }, // TCC0/WO[1]
+	{ PORTA, 14, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH4, TCC0_CH4 }, // TCC0/WO[4]
+	{ PORTA, 15, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH5, TCC0_CH5 }, // TCC0/WO[5]
+	{ PORTA, 20, PIO_TIMER_ALT, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH6, TCC0_CH6 }, // TCC0/WO[6]
+	{ PORTA, 21, PIO_TIMER_ALT, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM0_CH7, TCC0_CH7 }, // TCC0/WO[7]
+	{ PORTA, 6, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM1_CH0, TCC1_CH0 }, // TCC1/WO[0]
+	{ PORTA, 7, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM1_CH1, TCC1_CH1 }, // TCC1/WO[1]
+	{ PORTA, 18, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM3_CH0, TC3_CH0 }, // TC3/WO[0]
+	{ PORTA, 16, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM2_CH0, TCC2_CH0 }, // TCC2/WO[0]
+	{ PORTA, 19, PIO_TIMER, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), NO_ADC, NO_ADC, PWM3_CH1, TC3_CH1 }, // TC3/WO[1]
 
 	// 13 (LED)
-	{ PORTA, 17, PIO_TIMER, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // TCC2/WO[1]
+	{ PORTA, 17, PIO_PWM, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), NO_ADC, NO_ADC, PWM2_CH1, NOT_ON_TIMER }, // TCC2/WO[1]
 
 	// 14 (GND)
 	{ NOT_A_PORT, 0, PIO_NOT_A_PIN, 0, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
@@ -138,8 +149,8 @@ extern const PinDescription g_APinDescription[]=
   { PORTA, 2, PIO_ANALOG, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC10, A5, NOT_ON_PWM, NOT_ON_TIMER }, // ADC/AIN[10]
 
 	// 30..31 - RX/TX LEDS (PB03/PA27)
-	{ PORTB, 3, PIO_DIGITAL, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output
-	{ PORTA, 27, PIO_DIGITAL, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output
+	{ PORTB, 3, PIO_OUTPUT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output
+	{ PORTA, 27, PIO_OUTPUT, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // use as pure output
 
 	// 32..33 - USB
 	{ PORTA, 28, PIO_COM, PIO_DEFAULT, 0, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // USB/SOF
-- 
GitLab