diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c
new file mode 100644
index 0000000000000000000000000000000000000000..a54e428b365bf81290d377a912114c0018913b66
--- /dev/null
+++ b/cores/arduino/wiring_analog.c
@@ -0,0 +1,435 @@
+/*
+ Copyright (c) 2011 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
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ 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.
+ See the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include "Arduino.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// static int _readResolution = 10;
+// static int _writeResolution = 8;
+
+// void analogReadResolution(int res) {
+	// _readResolution = res;
+// }
+
+// void analogWriteResolution(int res) {
+	// _writeResolution = res;
+// }
+
+// static inline uint32_t mapResolution(uint32_t value, uint32_t from, uint32_t to) {
+	// if (from == to)
+		// return value;
+	// if (from > to)
+		// return value >> (from-to);
+	// else
+		// return value << (to-from);
+// }
+
+// eAnalogReference analog_reference = AR_DEFAULT;
+
+// void analogReference(eAnalogReference ulMode)
+// {
+	// analog_reference = ulMode;
+// }
+
+// uint32_t analogRead(uint32_t ulPin)
+// {
+  // uint32_t ulValue = 0;
+  // uint32_t ulChannel;
+
+  // if (ulPin < A0)
+    // ulPin += A0;
+
+  // 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 )
+	// {
+		// // Handling ADC 12 bits channels
+		// case ADC0 :
+		// case ADC1 :
+		// case ADC2 :
+		// case ADC3 :
+		// case ADC4 :
+		// case ADC5 :
+		// case ADC6 :
+		// case ADC7 :
+		// case ADC8 :
+		// case ADC9 :
+		// case ADC10 :
+		// case ADC11 :
+
+			// // Enable the corresponding channel
+			// if (ulChannel != latestSelectedChannel) {
+				// adc_enable_channel( ADC, ulChannel );
+				// if ( latestSelectedChannel != -1 )
+					// adc_disable_channel( ADC, latestSelectedChannel );
+				// latestSelectedChannel = ulChannel;
+			// }
+
+			// // Start the ADC
+			// adc_start( ADC );
+
+			// // Wait for end of conversion
+			// while ((adc_get_status(ADC) & ADC_ISR_DRDY) != ADC_ISR_DRDY)
+				// ;
+
+			// // Read the value
+			// ulValue = adc_get_latest_value(ADC);
+			// ulValue = mapResolution(ulValue, ADC_RESOLUTION, _readResolution);
+
+			// break;
+
+		// // Compiler could yell because we don't handle DAC pins
+		// default :
+			// ulValue=0;
+			// break;
+	// }
+// #endif
+
+	// return ulValue;
+// }
+
+
+// Right now, PWM output only works on the pins with
+// hardware support.  These are defined in the appropriate
+// pins_*.c file.  For the rest of the pins, we default
+// to digital output.
+
+void analogWrite(uint32_t ulPin, uint32_t ulValue) {
+
+	 uint32_t attr = g_APinDescription[ulPin].ulPinAttribute;
+	 uint32_t pwm_name = g_APinDescription[ulPin].ulTCChannel;
+	 uint8_t isTC = 0; 
+	 uint8_t Channelx;
+	 Tc* TCx;
+	 Tcc* TCCx;
+
+	// if ((attr & PIN_ATTR_ANALOG) == PIN_ATTR_ANALOG) {
+		// EAnalogChannel channel = g_APinDescription[ulPin].ulADCChannelNumber;
+		// if (channel == DA0 || channel == DA1) {
+			// uint32_t chDACC = ((channel == DA0) ? 0 : 1);
+			// if (dacc_get_channel_status(DACC_INTERFACE) == 0) {
+				// /* Enable clock for DACC_INTERFACE */
+				// pmc_enable_periph_clk(DACC_INTERFACE_ID);
+
+				// /* Reset DACC registers */
+				// dacc_reset(DACC_INTERFACE);
+
+				// /* Half word transfer mode */
+				// dacc_set_transfer_mode(DACC_INTERFACE, 0);
+
+				// /* Power save:
+				 // * sleep mode  - 0 (disabled)
+				 // * fast wakeup - 0 (disabled)
+				 // */
+				// dacc_set_power_save(DACC_INTERFACE, 0, 0);
+				// /* Timing:
+				 // * refresh        - 0x08 (1024*8 dacc clocks)
+				 // * max speed mode -    0 (disabled)
+				 // * startup time   - 0x10 (1024 dacc clocks)
+				 // */
+				// dacc_set_timing(DACC_INTERFACE, 0x08, 0, 0x10);
+
+				// /* Set up analog current */
+				// dacc_set_analog_control(DACC_INTERFACE, DACC_ACR_IBCTLCH0(0x02) |
+											// DACC_ACR_IBCTLCH1(0x02) |
+											// DACC_ACR_IBCTLDACCORE(0x01));
+			// }
+
+			// /* Disable TAG and select output channel chDACC */
+			// dacc_set_channel_selection(DACC_INTERFACE, chDACC);
+
+			// if ((dacc_get_channel_status(DACC_INTERFACE) & (1 << chDACC)) == 0) {
+				// dacc_enable_channel(DACC_INTERFACE, chDACC);
+			// }
+
+			// // Write user value
+			// ulValue = mapResolution(ulValue, _writeResolution, DACC_RESOLUTION);
+			// dacc_write_conversion_data(DACC_INTERFACE, ulValue);
+			// while ((dacc_get_interrupt_status(DACC_INTERFACE) & DACC_ISR_EOC) == 0);
+			// return;
+		// }
+	// }
+
+	if ((attr & PIN_ATTR_PWM) == PIN_ATTR_PWM) {
+	 
+	 if (g_APinDescription[ulPin].ulPinType == PIO_TIMER)
+	 {
+		 // Set selected Pin as TC/TCC Waveform out (PMUX : E ) 
+		 if(g_APinDescription[ulPin].ulPin <= 15)
+		 {
+			PORT->Group[g_APinDescription[ulPin].ulPort].WRCONFIG.reg = (uint32_t)(PORT_WRCONFIG_WRPINCFG |PORT_WRCONFIG_WRPMUX| 1 << (g_APinDescription[ulPin].ulPin)|(PORT_WRCONFIG_PMUXEN)|(0x4 << PORT_WRCONFIG_PMUX_Pos) );
+		 } else {
+		    PORT->Group[g_APinDescription[ulPin].ulPort].WRCONFIG.reg = (uint32_t)(PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_WRPMUX| PORT_WRCONFIG_HWSEL| 1 << (g_APinDescription[ulPin].ulPin - 16)|(PORT_WRCONFIG_PMUXEN)|(0x4 << PORT_WRCONFIG_PMUX_Pos) );
+		 }
+	 }
+	 
+	 if (g_APinDescription[ulPin].ulPinType == PIO_TIMER_ALT)
+	 {
+		  // Set selected Pin as TC/TCC Waveform out (PMUX : F )
+		  if(g_APinDescription[ulPin].ulPin <= 15)
+		  {
+			PORT->Group[g_APinDescription[ulPin].ulPort].WRCONFIG.reg = (uint32_t)(PORT_WRCONFIG_WRPINCFG |PORT_WRCONFIG_WRPMUX| 1 << (g_APinDescription[ulPin].ulPin)|(PORT_WRCONFIG_PMUXEN)|(0x5 << PORT_WRCONFIG_PMUX_Pos) );
+		  } else {
+			PORT->Group[g_APinDescription[ulPin].ulPort].WRCONFIG.reg = (uint32_t)(PORT_WRCONFIG_WRPINCFG | PORT_WRCONFIG_WRPMUX| PORT_WRCONFIG_HWSEL| 1 << (g_APinDescription[ulPin].ulPin - 16)|(PORT_WRCONFIG_PMUXEN)|(0x5 << PORT_WRCONFIG_PMUX_Pos) );
+		  }
+	  }
+	 
+	 
+		switch (g_APinDescription[ulPin].ulPWMChannel) 
+		{
+			case  PWM3_CH0 :
+			TCx = TC3;
+			Channelx = 0;
+			isTC = 1;
+			break;
+		
+			case  PWM3_CH1:
+			TCx = TC3 ;
+			Channelx = 1;
+			isTC = 1;
+			break;
+	
+			case  PWM0_CH0 :
+			TCCx = TCC0;
+			Channelx = 0;
+			break;
+			
+			case  PWM0_CH1 :
+			TCCx = TCC0;
+			Channelx = 1;
+			break;
+			
+			case  PWM0_CH4 :
+			TCCx = TCC0;
+			//Channelx = 4;
+			Channelx = 0;
+			break;
+			
+			case  PWM0_CH5 :
+			TCCx = TCC0;
+			//Channelx = 5;
+			Channelx = 1;
+			break;
+			
+			case  PWM0_CH6 :
+			TCCx = TCC0;
+			//Channelx = 6;
+			Channelx = 2;
+			break;
+			
+			case  PWM0_CH7 :
+			TCCx = TCC0;
+			//Channelx = 7;
+			Channelx = 3;
+			break;
+			
+			case  PWM1_CH0 :
+			TCCx = TCC1;
+			Channelx = 0;
+			break;
+			
+			case  PWM1_CH1 :
+			TCCx = TCC1;
+			Channelx = 1;
+			break;
+			
+			case  PWM2_CH0 :
+			TCCx = TCC2;
+			Channelx = 0;
+			break;
+			
+			case  PWM2_CH1 :
+			TCCx = TCC2;
+			Channelx = 1;
+			break;
+		}
+		
+		// --Set PORT  
+		
+		if (isTC)
+		{
+			// -- Enable clocks according to TCCx instance to use
+			 switch ((uint32_t) TCx)
+			{
+				case (uint32_t) TC3 :
+				//Enable TCx Bus clock (Timer counter control clock)
+				PM->APBCMASK.reg |= PM_APBCMASK_TC3;
+				//Enable GCLK for TC3 (timer counter input clock)
+				GCLK->CLKCTRL.reg = (uint16_t) ((GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | ( 0x1B << GCLK_CLKCTRL_ID_Pos)));
+				break;
+			
+				case (uint32_t) TC4 :
+				//Enable TCx Bus clock (Timer counter control clock)
+				PM->APBCMASK.reg |= PM_APBCMASK_TC4;
+				//Enable GCLK for TC4 (timer counter input clock)
+				GCLK->CLKCTRL.reg = (uint16_t) ((GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | ( 0x1C << GCLK_CLKCTRL_ID_Pos)));
+				break;
+			
+				case (uint32_t) TC5 :
+				//Enable TCx Bus clock (Timer counter control clock)
+				PM->APBCMASK.reg |= PM_APBCMASK_TC5;
+				//Enable GCLK for TC5 (timer counter input clock)
+				GCLK->CLKCTRL.reg = (uint16_t) ((GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | ( 0x1C << GCLK_CLKCTRL_ID_Pos)));
+				break;
+			
+			}
+			
+			// -- Configure TC
+			//DISABLE TCx
+			TCx->COUNT8.CTRLA.reg &=~(TC_CTRLA_ENABLE);
+			//Set Timer counter Mode to 8 bits
+			TCx->COUNT8.CTRLA.reg |= TC_CTRLA_MODE_COUNT8;
+			//Set TCx as normal PWM
+			TCx->COUNT8.CTRLA.reg |= TC_CTRLA_WAVEGEN_NPWM;
+			//Set TCx in waveform mode Normal PWM
+			TCx->COUNT8.CC[Channelx].reg = (uint8_t) ulValue;
+			//Set PER to maximum counter value (resolution : 0xFF)
+			TCx->COUNT8.PER.reg = 0xFF;
+			// Enable TCx
+			TCx->COUNT8.CTRLA.reg |= TC_CTRLA_ENABLE;
+		
+		} else {
+		
+		// -- Enable clocks according to TCCx instance to use
+			 switch ((uint32_t) TCCx)
+			 {
+				case (uint32_t) TCC0 :
+				//Enable TCC0 Bus clock (Timer counter control clock)
+				PM->APBCMASK.reg |= PM_APBCMASK_TCC0;
+				//Enable GCLK for TCC0 (timer counter input clock)
+				GCLK->CLKCTRL.reg = (uint16_t) ((GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | ( 0x1A << GCLK_CLKCTRL_ID_Pos)));
+				break;
+				
+				case (uint32_t) TCC1 :
+				//Enable TCC1 Bus clock (Timer counter control clock)
+				PM->APBCMASK.reg |= PM_APBCMASK_TCC1;
+				//Enable GCLK for TCC1 (timer counter input clock)
+				GCLK->CLKCTRL.reg = (uint16_t) ((GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | ( 0x1A << GCLK_CLKCTRL_ID_Pos)));
+				break;
+				
+				case (uint32_t) TCC2 :
+				//Enable TCC2 Bus clock (Timer counter control clock)
+				PM->APBCMASK.reg |= PM_APBCMASK_TCC2;
+				//Enable GCLK for TCC2 (timer counter input clock)
+				GCLK->CLKCTRL.reg = (uint16_t) ((GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | ( 0x1B << GCLK_CLKCTRL_ID_Pos)));
+				break;
+			}
+			
+			// -- Configure TCC
+			
+			//DISABLE TCCx 
+			TCCx->CTRLA.reg &=~(TCC_CTRLA_ENABLE);
+			//Set TCx as normal PWM
+			TCCx->WAVE.reg |= TCC_WAVE_WAVEGEN_NPWM;
+			//Set TCx in waveform mode Normal PWM
+			TCCx->CC[Channelx].reg = (uint32_t)ulValue;
+			//Set PER to maximum counter value (resolution : 0xFF)
+			TCCx->PER.reg = 0xFF;
+			//ENABLE TCCx 
+			TCCx->CTRLA.reg |= TCC_CTRLA_ENABLE ;
+		}
+		return;
+	}
+
+	// -- Defaults to digital write
+	pinMode(ulPin, OUTPUT);
+	//ulValue = mapResolution(ulValue, _writeResolution, 8);
+	if (ulValue < 128)
+		digitalWrite(ulPin, LOW);
+	else
+		digitalWrite(ulPin, HIGH);
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/cores/arduino/wiring_analog.c.disabled b/cores/arduino/wiring_analog.c.disabled
deleted file mode 100644
index bdc7de8788a32866ba84d3e5163ee9bd33951d43..0000000000000000000000000000000000000000
--- a/cores/arduino/wiring_analog.c.disabled
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- Copyright (c) 2011 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
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- 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.
- See the GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "Arduino.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static int _readResolution = 10;
-static int _writeResolution = 8;
-
-void analogReadResolution(int res) {
-	_readResolution = res;
-}
-
-void analogWriteResolution(int res) {
-	_writeResolution = res;
-}
-
-static inline uint32_t mapResolution(uint32_t value, uint32_t from, uint32_t to) {
-	if (from == to)
-		return value;
-	if (from > to)
-		return value >> (from-to);
-	else
-		return value << (to-from);
-}
-
-eAnalogReference analog_reference = AR_DEFAULT;
-
-void analogReference(eAnalogReference ulMode)
-{
-	analog_reference = ulMode;
-}
-
-uint32_t analogRead(uint32_t ulPin)
-{
-  uint32_t ulValue = 0;
-  uint32_t ulChannel;
-
-  if (ulPin < A0)
-    ulPin += A0;
-
-  ulChannel = g_APinDescription[ulPin].ulADCChannelNumber ;
-
-#if defined __SAM3X8E__ || defined __SAM3X8H__
-	static uint32_t latestSelectedChannel = -1;
-	switch ( g_APinDescription[ulPin].ulAnalogChannel )
-	{
-		// Handling ADC 12 bits channels
-		case ADC0 :
-		case ADC1 :
-		case ADC2 :
-		case ADC3 :
-		case ADC4 :
-		case ADC5 :
-		case ADC6 :
-		case ADC7 :
-		case ADC8 :
-		case ADC9 :
-		case ADC10 :
-		case ADC11 :
-
-			// Enable the corresponding channel
-			if (ulChannel != latestSelectedChannel) {
-				adc_enable_channel( ADC, ulChannel );
-				if ( latestSelectedChannel != -1 )
-					adc_disable_channel( ADC, latestSelectedChannel );
-				latestSelectedChannel = ulChannel;
-			}
-
-			// Start the ADC
-			adc_start( ADC );
-
-			// Wait for end of conversion
-			while ((adc_get_status(ADC) & ADC_ISR_DRDY) != ADC_ISR_DRDY)
-				;
-
-			// Read the value
-			ulValue = adc_get_latest_value(ADC);
-			ulValue = mapResolution(ulValue, ADC_RESOLUTION, _readResolution);
-
-			break;
-
-		// Compiler could yell because we don't handle DAC pins
-		default :
-			ulValue=0;
-			break;
-	}
-#endif
-
-	return ulValue;
-}
-
-static void TC_SetCMR_ChannelA(Tc *tc, uint32_t chan, uint32_t v)
-{
-	tc->TC_CHANNEL[chan].TC_CMR = (tc->TC_CHANNEL[chan].TC_CMR & 0xFFF0FFFF) | v;
-}
-
-static void TC_SetCMR_ChannelB(Tc *tc, uint32_t chan, uint32_t v)
-{
-	tc->TC_CHANNEL[chan].TC_CMR = (tc->TC_CHANNEL[chan].TC_CMR & 0xF0FFFFFF) | v;
-}
-
-static uint8_t PWMEnabled = 0;
-static uint8_t pinEnabled[PINS_COUNT];
-static uint8_t TCChanEnabled[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-void analogOutputInit(void) {
-	uint8_t i;
-	for (i=0; i<PINS_COUNT; i++)
-		pinEnabled[i] = 0;
-}
-
-// Right now, PWM output only works on the pins with
-// hardware support.  These are defined in the appropriate
-// pins_*.c file.  For the rest of the pins, we default
-// to digital output.
-void analogWrite(uint32_t ulPin, uint32_t ulValue) {
-	uint32_t attr = g_APinDescription[ulPin].ulPinAttribute;
-
-	if ((attr & PIN_ATTR_ANALOG) == PIN_ATTR_ANALOG) {
-		EAnalogChannel channel = g_APinDescription[ulPin].ulADCChannelNumber;
-		if (channel == DA0 || channel == DA1) {
-			uint32_t chDACC = ((channel == DA0) ? 0 : 1);
-			if (dacc_get_channel_status(DACC_INTERFACE) == 0) {
-				/* Enable clock for DACC_INTERFACE */
-				pmc_enable_periph_clk(DACC_INTERFACE_ID);
-
-				/* Reset DACC registers */
-				dacc_reset(DACC_INTERFACE);
-
-				/* Half word transfer mode */
-				dacc_set_transfer_mode(DACC_INTERFACE, 0);
-
-				/* Power save:
-				 * sleep mode  - 0 (disabled)
-				 * fast wakeup - 0 (disabled)
-				 */
-				dacc_set_power_save(DACC_INTERFACE, 0, 0);
-				/* Timing:
-				 * refresh        - 0x08 (1024*8 dacc clocks)
-				 * max speed mode -    0 (disabled)
-				 * startup time   - 0x10 (1024 dacc clocks)
-				 */
-				dacc_set_timing(DACC_INTERFACE, 0x08, 0, 0x10);
-
-				/* Set up analog current */
-				dacc_set_analog_control(DACC_INTERFACE, DACC_ACR_IBCTLCH0(0x02) |
-											DACC_ACR_IBCTLCH1(0x02) |
-											DACC_ACR_IBCTLDACCORE(0x01));
-			}
-
-			/* Disable TAG and select output channel chDACC */
-			dacc_set_channel_selection(DACC_INTERFACE, chDACC);
-
-			if ((dacc_get_channel_status(DACC_INTERFACE) & (1 << chDACC)) == 0) {
-				dacc_enable_channel(DACC_INTERFACE, chDACC);
-			}
-
-			// Write user value
-			ulValue = mapResolution(ulValue, _writeResolution, DACC_RESOLUTION);
-			dacc_write_conversion_data(DACC_INTERFACE, ulValue);
-			while ((dacc_get_interrupt_status(DACC_INTERFACE) & DACC_ISR_EOC) == 0);
-			return;
-		}
-	}
-
-	if ((attr & PIN_ATTR_PWM) == PIN_ATTR_PWM) {
-		ulValue = mapResolution(ulValue, _writeResolution, PWM_RESOLUTION);
-
-		if (!PWMEnabled) {
-			// PWM Startup code
-		    pmc_enable_periph_clk(PWM_INTERFACE_ID);
-		    PWMC_ConfigureClocks(PWM_FREQUENCY * PWM_MAX_DUTY_CYCLE, 0, VARIANT_MCK);
-			PWMEnabled = 1;
-		}
-
-		uint32_t chan = g_APinDescription[ulPin].ulPWMChannel;
-		if (!pinEnabled[ulPin]) {
-			// Setup PWM for this pin
-			PIO_Configure(g_APinDescription[ulPin].pPort,
-					g_APinDescription[ulPin].ulPinType,
-					g_APinDescription[ulPin].ulPin,
-					g_APinDescription[ulPin].ulPinConfiguration);
-			PWMC_ConfigureChannel(PWM_INTERFACE, chan, PWM_CMR_CPRE_CLKA, 0, 0);
-			PWMC_SetPeriod(PWM_INTERFACE, chan, PWM_MAX_DUTY_CYCLE);
-			PWMC_SetDutyCycle(PWM_INTERFACE, chan, ulValue);
-			PWMC_EnableChannel(PWM_INTERFACE, chan);
-			pinEnabled[ulPin] = 1;
-		}
-
-		PWMC_SetDutyCycle(PWM_INTERFACE, chan, ulValue);
-		return;
-	}
-
-	if ((attr & PIN_ATTR_TIMER) == PIN_ATTR_TIMER) {
-		// We use MCLK/2 as clock.
-		const uint32_t TC = VARIANT_MCK / 2 / TC_FREQUENCY;
-
-		// Map value to Timer ranges 0..255 => 0..TC
-		ulValue = mapResolution(ulValue, _writeResolution, TC_RESOLUTION);
-		ulValue = ulValue * TC;
-		ulValue = ulValue / TC_MAX_DUTY_CYCLE;
-
-		// Setup Timer for this pin
-		ETCChannel channel = g_APinDescription[ulPin].ulTCChannel;
-		static const uint32_t channelToChNo[] = { 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2 };
-		static const uint32_t channelToAB[]   = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
-		static const Tc *channelToTC[] = {
-			TC0, TC0, TC0, TC0, TC0, TC0,
-			TC1, TC1, TC1, TC1, TC1, TC1,
-			TC2, TC2, TC2, TC2, TC2, TC2 };
-		static const uint32_t channelToId[] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8 };
-		uint32_t chNo = channelToChNo[channel];
-		uint32_t chA  = channelToAB[channel];
-		Tc *chTC = channelToTC[channel];
-		uint32_t interfaceID = channelToId[channel];
-
-		if (!TCChanEnabled[interfaceID]) {
-			pmc_enable_periph_clk(TC_INTERFACE_ID + interfaceID);
-			TC_Configure(chTC, chNo,
-				TC_CMR_TCCLKS_TIMER_CLOCK1 |
-				TC_CMR_WAVE |         // Waveform mode
-				TC_CMR_WAVSEL_UP_RC | // Counter running up and reset when equals to RC
-				TC_CMR_EEVT_XC0 |     // Set external events from XC0 (this setup TIOB as output)
-				TC_CMR_ACPA_CLEAR | TC_CMR_ACPC_CLEAR |
-				TC_CMR_BCPB_CLEAR | TC_CMR_BCPC_CLEAR);
-			TC_SetRC(chTC, chNo, TC);
-		}
-		if (ulValue == 0) {
-			if (chA)
-				TC_SetCMR_ChannelA(chTC, chNo, TC_CMR_ACPA_CLEAR | TC_CMR_ACPC_CLEAR);
-			else
-				TC_SetCMR_ChannelB(chTC, chNo, TC_CMR_BCPB_CLEAR | TC_CMR_BCPC_CLEAR);
-		} else {
-			if (chA) {
-				TC_SetRA(chTC, chNo, ulValue);
-				TC_SetCMR_ChannelA(chTC, chNo, TC_CMR_ACPA_CLEAR | TC_CMR_ACPC_SET);
-			} else {
-				TC_SetRB(chTC, chNo, ulValue);
-				TC_SetCMR_ChannelB(chTC, chNo, TC_CMR_BCPB_CLEAR | TC_CMR_BCPC_SET);
-			}
-		}
-		if (!pinEnabled[ulPin]) {
-			PIO_Configure(g_APinDescription[ulPin].pPort,
-					g_APinDescription[ulPin].ulPinType,
-					g_APinDescription[ulPin].ulPin,
-					g_APinDescription[ulPin].ulPinConfiguration);
-			pinEnabled[ulPin] = 1;
-		}
-		if (!TCChanEnabled[interfaceID]) {
-			TC_Start(chTC, chNo);
-			TCChanEnabled[interfaceID] = 1;
-		}
-		return;
-	}
-
-	// Defaults to digital write
-	pinMode(ulPin, OUTPUT);
-	ulValue = mapResolution(ulValue, _writeResolution, 8);
-	if (ulValue < 128)
-		digitalWrite(ulPin, LOW);
-	else
-		digitalWrite(ulPin, HIGH);
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/cores/validation/validation_core/build_as6/test.cppproj b/cores/validation/validation_core/build_as6/test.cppproj
deleted file mode 100644
index 402e9aae3a17a7fa2ce4b9ea098a30b12095fe23..0000000000000000000000000000000000000000
--- a/cores/validation/validation_core/build_as6/test.cppproj
+++ /dev/null
@@ -1,458 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectVersion>6.2</ProjectVersion>
-    <ToolchainName>com.Atmel.ARMGCC.CPP</ToolchainName>
-    <ProjectGuid>{b3f859ad-e162-4c2f-9684-eac6932fec80}</ProjectGuid>
-    <avrdevice>ATSAMD21G18A</avrdevice>
-    <avrdeviceseries>none</avrdeviceseries>
-    <OutputType>Executable</OutputType>
-    <Language>CPP</Language>
-    <OutputFileName>$(MSBuildProjectName)</OutputFileName>
-    <OutputFileExtension>.elf</OutputFileExtension>
-    <OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
-    <AssemblyName>test</AssemblyName>
-    <Name>test</Name>
-    <RootNamespace>test</RootNamespace>
-    <ToolchainFlavour>Native</ToolchainFlavour>
-    <KeepTimersRunning>true</KeepTimersRunning>
-    <OverrideVtor>false</OverrideVtor>
-    <CacheFlash>false</CacheFlash>
-    <ProgFlashFromRam>true</ProgFlashFromRam>
-    <RamSnippetAddress>0x20000000</RamSnippetAddress>
-    <UncachedRange />
-    <OverrideVtorValue>exception_table</OverrideVtorValue>
-    <BootSegment>2</BootSegment>
-    <eraseonlaunchrule>1</eraseonlaunchrule>
-    <AsfFrameworkConfig>
-      <framework-data xmlns="">
-        <options />
-        <configurations />
-        <files />
-        <documentation help="" />
-        <offline-documentation help="" />
-        <dependencies>
-          <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.17.0" />
-        </dependencies>
-      </framework-data>
-    </AsfFrameworkConfig>
-    <avrtool>com.atmel.avrdbg.tool.edbg</avrtool>
-    <avrtoolinterface>SWD</avrtoolinterface>
-    <com_atmel_avrdbg_tool_samice>
-      <ToolOptions>
-        <InterfaceProperties>
-        </InterfaceProperties>
-        <InterfaceName>SWD</InterfaceName>
-      </ToolOptions>
-      <ToolType>com.atmel.avrdbg.tool.samice</ToolType>
-      <ToolNumber>28001042</ToolNumber>
-      <ToolName>SAM-ICE</ToolName>
-    </com_atmel_avrdbg_tool_samice>
-    <UseGdb>True</UseGdb>
-    <com_atmel_avrdbg_tool_edbg>
-      <ToolOptions>
-        <InterfaceProperties>
-          <SwdClock>4000000</SwdClock>
-        </InterfaceProperties>
-        <InterfaceName>SWD</InterfaceName>
-      </ToolOptions>
-      <ToolType>com.atmel.avrdbg.tool.edbg</ToolType>
-      <ToolNumber>ATML2320021800000012</ToolNumber>
-      <ToolName>EDBG</ToolName>
-    </com_atmel_avrdbg_tool_edbg>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
-    <ToolchainSettings>
-      <ArmGccCpp>
-        <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex>
-        <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss>
-        <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep>
-        <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin>
-        <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec>
-        <armgcc.compiler.symbols.DefSymbols>
-          <ListValues>
-            <Value>NDEBUG</Value>
-          </ListValues>
-        </armgcc.compiler.symbols.DefSymbols>
-        <armgcc.compiler.directories.IncludePaths>
-          <ListValues>
-            <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value>
-            <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value>
-            <Value>../../../../arduino</Value>
-            <Value>../../../../arduino/USB</Value>
-            <Value>../../../../../variants/arduino_zero</Value>
-            <Value>../../../../../libraries/SPI</Value>
-            <Value>../../../../../libraries/Wire</Value>
-          </ListValues>
-        </armgcc.compiler.directories.IncludePaths>
-        <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level>
-        <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>
-        <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>
-        <armgcccpp.compiler.symbols.DefSymbols>
-          <ListValues>
-            <Value>NDEBUG</Value>
-          </ListValues>
-        </armgcccpp.compiler.symbols.DefSymbols>
-        <armgcccpp.compiler.directories.IncludePaths>
-          <ListValues>
-            <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value>
-            <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value>
-            <Value>../../../../arduino</Value>
-            <Value>../../../../arduino/USB</Value>
-            <Value>../../../../../variants/arduino_zero</Value>
-            <Value>../../../../../libraries/SPI</Value>
-            <Value>../../../../../libraries/Wire</Value>
-          </ListValues>
-        </armgcccpp.compiler.directories.IncludePaths>
-        <armgcccpp.compiler.optimization.level>Optimize for size (-Os)</armgcccpp.compiler.optimization.level>
-        <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>
-        <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings>
-        <armgcccpp.linker.libraries.Libraries>
-          <ListValues>
-            <Value>libm</Value>
-          </ListValues>
-        </armgcccpp.linker.libraries.Libraries>
-        <armgcccpp.linker.libraries.LibrarySearchPaths>
-          <ListValues>
-            <Value>../cmsis/linkerScripts</Value>
-          </ListValues>
-        </armgcccpp.linker.libraries.LibrarySearchPaths>
-        <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections>
-        <armgcccpp.linker.miscellaneous.LinkerFlags>-Tsamd21g18a_flash.ld</armgcccpp.linker.miscellaneous.LinkerFlags>
-        <armgcccpp.preprocessingassembler.general.IncludePaths>
-          <ListValues>
-            <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value>
-            <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value>
-            <Value>../../../../arduino</Value>
-            <Value>../../../../arduino/USB</Value>
-            <Value>../../../../../variants/arduino_zero</Value>
-            <Value>../../../../../libraries/SPI</Value>
-            <Value>../../../../../libraries/Wire</Value>
-          </ListValues>
-        </armgcccpp.preprocessingassembler.general.IncludePaths>
-      </ArmGccCpp>
-    </ToolchainSettings>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
-    <ToolchainSettings>
-      <ArmGccCpp>
-        <armgcc.common.outputfiles.hex>True</armgcc.common.outputfiles.hex>
-        <armgcc.common.outputfiles.lss>True</armgcc.common.outputfiles.lss>
-        <armgcc.common.outputfiles.eep>True</armgcc.common.outputfiles.eep>
-        <armgcc.common.outputfiles.bin>True</armgcc.common.outputfiles.bin>
-        <armgcc.common.outputfiles.srec>True</armgcc.common.outputfiles.srec>
-        <armgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
-        <armgcc.compiler.symbols.DefSymbols>
-          <ListValues>
-            <Value>DEBUG</Value>
-          </ListValues>
-        </armgcc.compiler.symbols.DefSymbols>
-        <armgcc.compiler.directories.DefaultIncludePath>False</armgcc.compiler.directories.DefaultIncludePath>
-        <armgcc.compiler.directories.IncludePaths>
-          <ListValues>
-            <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value>
-            <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value>
-            <Value>../../../../arduino</Value>
-            <Value>../../../../arduino/USB</Value>
-            <Value>../../../../../variants/arduino_zero</Value>
-            <Value>../../../../../libraries/SPI</Value>
-            <Value>../../../../../libraries/Wire</Value>
-          </ListValues>
-        </armgcc.compiler.directories.IncludePaths>
-        <armgcc.compiler.optimization.level>Optimize (-O1)</armgcc.compiler.optimization.level>
-        <armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>
-        <armgcc.compiler.optimization.PrepareDataForGarbageCollection>True</armgcc.compiler.optimization.PrepareDataForGarbageCollection>
-        <armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel>
-        <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>
-        <armgcc.compiler.miscellaneous.OtherFlags>-std=c99</armgcc.compiler.miscellaneous.OtherFlags>
-        <armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>
-        <armgcccpp.compiler.symbols.DefSymbols>
-          <ListValues>
-            <Value>DEBUG</Value>
-            <Value>USB_VID=0x2341</Value>
-            <Value>USB_PID=0x004d</Value>
-          </ListValues>
-        </armgcccpp.compiler.symbols.DefSymbols>
-        <armgcccpp.compiler.directories.DefaultIncludePath>False</armgcccpp.compiler.directories.DefaultIncludePath>
-        <armgcccpp.compiler.directories.IncludePaths>
-          <ListValues>
-            <Value>../../../../../../../tools/CMSIS/Device/ATMEL</Value>
-            <Value>../../../../../../../tools/CMSIS/CMSIS/Include</Value>
-            <Value>../../../../arduino</Value>
-            <Value>../../../../arduino/USB</Value>
-            <Value>../../../../../variants/arduino_zero</Value>
-            <Value>../../../../../libraries/SPI</Value>
-            <Value>../../../../../libraries/Wire</Value>
-          </ListValues>
-        </armgcccpp.compiler.directories.IncludePaths>
-        <armgcccpp.compiler.optimization.level>Optimize (-O1)</armgcccpp.compiler.optimization.level>
-        <armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection>
-        <armgcccpp.compiler.optimization.PrepareDataForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareDataForGarbageCollection>
-        <armgcccpp.compiler.optimization.DebugLevel>Maximum (-g3)</armgcccpp.compiler.optimization.DebugLevel>
-        <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings>
-        <armgcccpp.compiler.miscellaneous.OtherFlags>-std=c++98</armgcccpp.compiler.miscellaneous.OtherFlags>
-        <armgcccpp.linker.general.UseNewlibNano>True</armgcccpp.linker.general.UseNewlibNano>
-        <armgcccpp.linker.libraries.Libraries>
-          <ListValues>
-            <Value>libm</Value>
-          </ListValues>
-        </armgcccpp.linker.libraries.Libraries>
-        <armgcccpp.linker.libraries.LibrarySearchPaths>
-          <ListValues>
-            <Value>../../../../../variants/arduino_zero/linker_scripts/gcc</Value>
-          </ListValues>
-        </armgcccpp.linker.libraries.LibrarySearchPaths>
-        <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections>
-        <armgcccpp.linker.memorysettings.ExternalRAM />
-        <armgcccpp.linker.miscellaneous.LinkerFlags>-Tflash.ld</armgcccpp.linker.miscellaneous.LinkerFlags>
-        <armgcccpp.assembler.general.IncludePaths>
-          <ListValues>
-            <Value>../../../arduino</Value>
-          </ListValues>
-        </armgcccpp.assembler.general.IncludePaths>
-        <armgcccpp.assembler.debugging.DebugLevel>Default (-g)</armgcccpp.assembler.debugging.DebugLevel>
-        <armgcccpp.preprocessingassembler.general.DefaultIncludePath>False</armgcccpp.preprocessingassembler.general.DefaultIncludePath>
-        <armgcccpp.preprocessingassembler.general.IncludePaths>
-          <ListValues>
-            <Value>../../../arduino</Value>
-          </ListValues>
-        </armgcccpp.preprocessingassembler.general.IncludePaths>
-        <armgcccpp.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcccpp.preprocessingassembler.debugging.DebugLevel>
-      </ArmGccCpp>
-    </ToolchainSettings>
-  </PropertyGroup>
-  <ItemGroup>
-    <Folder Include="core" />
-    <Folder Include="Wire" />
-    <Folder Include="SPI" />
-    <Folder Include="variant" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\..\..\libraries\SPI\SPI.cpp">
-      <SubType>compile</SubType>
-      <Link>SPI\SPI.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\..\libraries\SPI\SPI.h">
-      <SubType>compile</SubType>
-      <Link>SPI\SPI.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\..\libraries\Wire\Wire.cpp">
-      <SubType>compile</SubType>
-      <Link>Wire\Wire.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\..\libraries\Wire\Wire.h">
-      <SubType>compile</SubType>
-      <Link>Wire\Wire.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\..\variants\arduino_zero\pins_arduino.h">
-      <SubType>compile</SubType>
-      <Link>variant\pins_arduino.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\..\variants\arduino_zero\variant.cpp">
-      <SubType>compile</SubType>
-      <Link>variant\variant.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\..\variants\arduino_zero\variant.h">
-      <SubType>compile</SubType>
-      <Link>variant\variant.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Arduino.h">
-      <SubType>compile</SubType>
-      <Link>core\Arduino.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\binary.h">
-      <SubType>compile</SubType>
-      <Link>core\binary.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Client.h">
-      <SubType>compile</SubType>
-      <Link>core\Client.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\delay.c">
-      <SubType>compile</SubType>
-      <Link>core\delay.c</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\delay.h">
-      <SubType>compile</SubType>
-      <Link>core\delay.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\HardwareSerial.h">
-      <SubType>compile</SubType>
-      <Link>core\HardwareSerial.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\hooks.c">
-      <SubType>compile</SubType>
-      <Link>core\hooks.c</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\IPAddress.cpp">
-      <SubType>compile</SubType>
-      <Link>core\IPAddress.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\IPAddress.h">
-      <SubType>compile</SubType>
-      <Link>core\IPAddress.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\itoa.c">
-      <SubType>compile</SubType>
-      <Link>core\itoa.c</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\itoa.h">
-      <SubType>compile</SubType>
-      <Link>core\itoa.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\main.cpp">
-      <SubType>compile</SubType>
-      <Link>core\main.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Print.cpp">
-      <SubType>compile</SubType>
-      <Link>core\Print.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Print.h">
-      <SubType>compile</SubType>
-      <Link>core\Print.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Printable.h">
-      <SubType>compile</SubType>
-      <Link>core\Printable.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Reset.cpp">
-      <SubType>compile</SubType>
-      <Link>core\Reset.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Reset.h">
-      <SubType>compile</SubType>
-      <Link>core\Reset.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\RingBuffer.cpp">
-      <SubType>compile</SubType>
-      <Link>core\RingBuffer.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\RingBuffer.h">
-      <SubType>compile</SubType>
-      <Link>core\RingBuffer.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\SERCOM.cpp">
-      <SubType>compile</SubType>
-      <Link>core\SERCOM.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\SERCOM.h">
-      <SubType>compile</SubType>
-      <Link>core\SERCOM.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Server.h">
-      <SubType>compile</SubType>
-      <Link>core\Server.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\startup.c">
-      <SubType>compile</SubType>
-      <Link>core\startup.c</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Stream.cpp">
-      <SubType>compile</SubType>
-      <Link>core\Stream.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Stream.h">
-      <SubType>compile</SubType>
-      <Link>core\Stream.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\syscalls.c">
-      <SubType>compile</SubType>
-      <Link>core\syscalls.c</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\syscalls.h">
-      <SubType>compile</SubType>
-      <Link>core\syscalls.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Tone.h">
-      <SubType>compile</SubType>
-      <Link>core\Tone.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Uart.cpp">
-      <SubType>compile</SubType>
-      <Link>core\Uart.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Uart.h">
-      <SubType>compile</SubType>
-      <Link>core\Uart.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\Udp.h">
-      <SubType>compile</SubType>
-      <Link>core\Udp.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\WCharacter.h">
-      <SubType>compile</SubType>
-      <Link>core\WCharacter.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\WInterrupts.h">
-      <SubType>compile</SubType>
-      <Link>core\WInterrupts.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring.c">
-      <SubType>compile</SubType>
-      <Link>core\wiring.c</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring.h">
-      <SubType>compile</SubType>
-      <Link>core\wiring.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring_analog.h">
-      <SubType>compile</SubType>
-      <Link>core\wiring_analog.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring_constants.h">
-      <SubType>compile</SubType>
-      <Link>core\wiring_constants.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring_digital.c">
-      <SubType>compile</SubType>
-      <Link>core\wiring_digital.c</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring_digital.h">
-      <SubType>compile</SubType>
-      <Link>core\wiring_digital.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring_private.h">
-      <SubType>compile</SubType>
-      <Link>core\wiring_private.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring_pulse.h">
-      <SubType>compile</SubType>
-      <Link>core\wiring_pulse.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring_shift.c">
-      <SubType>compile</SubType>
-      <Link>core\wiring_shift.c</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\wiring_shift.h">
-      <SubType>compile</SubType>
-      <Link>core\wiring_shift.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\WMath.cpp">
-      <SubType>compile</SubType>
-      <Link>core\WMath.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\WMath.h">
-      <SubType>compile</SubType>
-      <Link>core\WMath.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\WString.cpp">
-      <SubType>compile</SubType>
-      <Link>core\WString.cpp</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\WString.h">
-      <SubType>compile</SubType>
-      <Link>core\WString.h</Link>
-    </Compile>
-    <Compile Include="..\..\..\arduino\WVariant.h">
-      <SubType>compile</SubType>
-      <Link>core\WVariant.h</Link>
-    </Compile>
-    <Compile Include="..\test.cpp">
-      <SubType>compile</SubType>
-      <Link>test.cpp</Link>
-    </Compile>
-  </ItemGroup>
-  <Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
-</Project>
\ No newline at end of file
diff --git a/cores/validation/validation_core/test.cpp b/cores/validation/validation_core/test.cpp
index ac1e28d118977b68b6f0d2cfde6713da1873cb3a..e3387a8bd366896c665964f1878396e92458e0e1 100644
--- a/cores/validation/validation_core/test.cpp
+++ b/cores/validation/validation_core/test.cpp
@@ -62,6 +62,29 @@ static void led_step2( void )
   digitalWrite( PIN_LED3, LOW ) ;  // set the red LED on
 }
 
+static void analog_write_step (void)
+{
+	// test PWM generation on all PWM pins (duty cycle from 0x00 to 0xFF)
+	for( uint8_t duty_cycle = 0x00;duty_cycle<=0xFF;duty_cycle++)
+	{
+		analogWrite(13,duty_cycle);
+		analogWrite(12,duty_cycle);
+		analogWrite(11,duty_cycle);
+		analogWrite(10,duty_cycle);
+		analogWrite(9,duty_cycle);
+		analogWrite(8,duty_cycle);
+		analogWrite(7,duty_cycle);
+		analogWrite(6,duty_cycle);
+		analogWrite(5,duty_cycle);
+		analogWrite(4,duty_cycle);
+		analogWrite(3,duty_cycle);
+		analogWrite(2,duty_cycle);
+		delay( 10 ) ;
+	}
+
+
+}
+
 void loop( void )
 {
   volatile int pin_value=0 ;
@@ -83,6 +106,7 @@ void loop( void )
   Serial.write( (pin_value == LOW)?"LOW\n":"HIGH\n" ) ;
   delay( 1000 ) ;              // wait for a second
 
+  analog_write_step();
 
 /*
   Serial.print("Analog pins: ");
diff --git a/variants/arduino_zero/variant.cpp b/variants/arduino_zero/variant.cpp
index 879255343204d11dd445b2cd2fb73c29cc62138e..34ed553d9c3429447f43c5b63973f6dce9f22938 100644
--- a/variants/arduino_zero/variant.cpp
+++ b/variants/arduino_zero/variant.cpp
@@ -125,7 +125,7 @@ const PinDescription g_APinDescription[]=
 	{ PORTA, 19, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, TC3_CH1 }, // TC3/WO[1]
 
 	// 13 (LED)
-	{ PORTA, 17, PIO_PWM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM2_CH1, NOT_ON_TIMER }, // TCC2/WO[1]
+	{ PORTA, 17, PIO_PWM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM2_CH1, NOT_ON_TIMER }, // TCC2/WO[1]
 
 	// 14 (GND)
 	{ NOT_A_PORT, 0, PIO_NOT_A_PIN, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER },