From d9a6408a88dd0755a5d865e5d5da03b1a8a4d0cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20SEMETTE?= <jerome.semette@atmel.com>
Date: Fri, 9 May 2014 16:11:33 +0200
Subject: [PATCH]  Following modification done in zero project :

- Update test.cpp
- Add support of wiring_analog.c in AS6 test project
- Modify variant for PWM generation on LED (pin 13)
---
 cores/arduino/validation/build_as6/test.atsuo | Bin 25088 -> 26112 bytes
 .../arduino/validation/build_as6/test.cppproj | 181 +++++++++---------
 cores/arduino/validation/test.cpp             |  27 ++-
 cores/arduino/wiring_analog.c                 |  21 +-
 variants/arduino_zero/variant.cpp             |   2 +-
 5 files changed, 136 insertions(+), 95 deletions(-)

diff --git a/cores/arduino/validation/build_as6/test.atsuo b/cores/arduino/validation/build_as6/test.atsuo
index 26b524b33b54fad372b5784431c9893881c36c82..3a782617a392448667aa0aa645718027d4129c0f 100644
GIT binary patch
delta 3320
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

delta 2058
zcmaJ?eN0nV6o2>G*Os<G3$%QHE0zNFwaik!Uu{L;p{4PQF;P&6k^y$m8b8og=aOY=
zqCLs{V@pKiJ~DACZzKLOU72RV#i34T%%W41nW#&qTlhm=Hg;}X7@5oN%X#no&OPVc
zbIv{YzQAP?xJV8PggxUZVr73#O-+H9tshxmPlB?ZxS=fzJhIoXkU0#)1ZrWs?2?>8
zl_?IYJBuKsl)+Z6iBsZidRQ{a-PSBbWJ4-Lg4^;G4Ru<JfPRCD733VORGiSJ2FCr&
z?~UTyqbIMq-z_kMN6CYr+{?wI>IS$Xityc16)fWOBq8Q3VJA6wq1r{R!!~uJoX{W=
zB1@_t5*ggll#*CU7b~%IhH+WXyz-#dsUULng&7I!OyJYH<wS>AOU<}s<j%r#ZKIr-
zhip;Umru8X6jDx|j<Od>IN+<|1_<Swz?&eKwkC+IoW!8m5LrE`nbRXmjM(d&xne}I
z6b0AIq-T1O1!qz<1X7&z8%%Y=1(^kWsaH9gLMBy|ccaN?YS^CEASX2Yq^LPOOA{mN
z>3bC{PT&AtvPI%Ew1hA)W~hZgri@&~d{2NmD=Q|d#Ega|#f7S1ww!!ULHu&2nQ36w
zM7%IxqO3HSbAh_&%qX0Yp64hC^yhB{zRf@)4xY9p!Pi+<5VD(~DLVy@&C7sLwg7=P
zlVr+!j|2;Rqz3#2Q$&#b^VKX|6KmMcF07UiG&$uY6&<rQ8OdkbPe$ejh!iLZv2%Jl
zwt=H8k$7;Mt?<N?1^aBNQi$I}6rZRWMuG8PUCl$^GBqkJhs;-vP%l&?FL0e*)cB3s
zqNHKss^Ib2v8c4pzOdZkDp_oiLZtx~9JXvYSCb1r+mhi_nGWuXJUp#@1Y>3UA|2jr
zuOi3cfW1g}3L`v?bOvbzNrFrE`AXWU=Mlj(d%c!|?-5)_qC7O0=jiW5!Cm~`L%L7#
zAy0bDBV-;U{Rz3|#6#`&aQCBCc#KrwzOkUIJO%f~#Bhw7>J)fTJpw&drJ(i1!5T3I
z4%c+UEwK;_lM5<Q2NPl!_{3Hu2UwS;YItjj#p1G**zILJc$OJyVH5+tj((rti>28}
zv8=bFyAR%Ul)wkIRaAf#ki)k^5s_xqHd6d8?n3g#zoZRuguxz*jBeqj4dDhAjO)``
zMzgjChTH~2ZqybJT&O(CyM}|VabgU2#H33@W}DASpoluq{W9YKOG|m!<q<Fw8gm2m
zt~MCx8IBBPC<7T2l4~YC)#8dZj{Z)6ci-k<y^AZr$sD>e`0ATE4OI`L$$EF>j5W9w
z1e-5<UuYg8`wbEuFxFTHSf%i)JrNncl_77GcfC{}IO0w=7-v*5FyyIw*NNF#Pwz^&
zWV5sx3xcGV)c@I4tWd0W#vmh<21ng`?tQvra3*sn^jI?BR-qBv^V_BN;v53@IulGR
zj03xK9ER%F!$he@>Z=n-qSre(xWm4v)NaM6#AfBKLD+5Foj<_%m=2~N-+so+n3)aC
z1N}<Dm9Xx&UQ<`b53Bg&S+vLLU5H~-$3bev_A;<{c@3~F`$4nPsNRe>&H%dUWsbpa
z^U=gj%z>C?4ZJEZ;D|r6v8}1;avF64ywgrTLI;N-Wt9<(W(^EgRDpJh9Bw#^r{jgb
zIypIrH&+)7F0m@CWj2e&`U-rw+7u&AUk1UJP_X5g?q=K*+W@&a>i7R~{QSp)O&MNg
z*kXWo<y`c!+gKZH#T!b6p_^$RaMzGK3)@;naLwnr8;C~Xc`N=NN|0R;X`I*a7eWs*
zPoerpoES&K0b`lY++NJHo9PRe%8Mm)t$n<)?k#=lo?lO<zcZHokc-BkBL82DNR)Zg
z^;jFJ2bJb1voLnjazIbF!?tDTSpU8w@%OZqY~1O)mD4$@@P8*jduJfn?&E&K=q`h&
RQv{(?2IC!eoN)aY|2GeYmID9)

diff --git a/cores/arduino/validation/build_as6/test.cppproj b/cores/arduino/validation/build_as6/test.cppproj
index fdb1f72b..a2a5d05e 100644
--- a/cores/arduino/validation/build_as6/test.cppproj
+++ b/cores/arduino/validation/build_as6/test.cppproj
@@ -26,14 +26,14 @@
     <BootSegment>2</BootSegment>
     <eraseonlaunchrule>1</eraseonlaunchrule>
     <AsfFrameworkConfig>
-      <framework-data xmlns="">
+      <framework-data>
         <options />
         <configurations />
         <files />
         <documentation help="" />
         <offline-documentation help="" />
         <dependencies>
-          <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.17.0" />
+          <content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.6.0" />
         </dependencies>
       </framework-data>
     </AsfFrameworkConfig>
@@ -53,13 +53,14 @@
     <com_atmel_avrdbg_tool_edbg>
       <ToolOptions>
         <InterfaceProperties>
+          <JtagEnableExtResetOnStartSession>false</JtagEnableExtResetOnStartSession>
           <SwdClock>4000000</SwdClock>
         </InterfaceProperties>
         <InterfaceName>SWD</InterfaceName>
       </ToolOptions>
       <ToolType>com.atmel.avrdbg.tool.edbg</ToolType>
-      <ToolNumber>ATML2320021800000010</ToolNumber>
-      <ToolName>EDBG</ToolName>
+      <ToolNumber>ATML2320021800000009</ToolNumber>
+      <ToolName>XPRO-EDBG</ToolName>
     </com_atmel_avrdbg_tool_edbg>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
@@ -131,89 +132,87 @@
   <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>../../..</Value>
-            <Value>../../../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>../../..</Value>
-            <Value>../../../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>../../..</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>../../..</Value>
-          </ListValues>
-        </armgcccpp.preprocessingassembler.general.IncludePaths>
-        <armgcccpp.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcccpp.preprocessingassembler.debugging.DebugLevel>
-      </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>../../..</Value>
+      <Value>../../../USB</Value>
+      <Value>../../../../../variants/arduino_zero</Value>
+      <Value>../../../../../libraries/SPI</Value>
+      <Value>../../../../../libraries/Wire</Value>
+    </ListValues>
+  </armgcc.compiler.directories.IncludePaths>
+  <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>../../..</Value>
+      <Value>../../../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.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.miscellaneous.LinkerFlags>-Tflash.ld</armgcccpp.linker.miscellaneous.LinkerFlags>
+  <armgcccpp.linker.memorysettings.ExternalRAM />
+  <armgcccpp.assembler.general.IncludePaths>
+    <ListValues>
+      <Value>../../..</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>../../..</Value>
+    </ListValues>
+  </armgcccpp.preprocessingassembler.general.IncludePaths>
+  <armgcccpp.preprocessingassembler.debugging.DebugLevel>Default (-Wa,-g)</armgcccpp.preprocessingassembler.debugging.DebugLevel>
+</ArmGccCpp>
     </ToolchainSettings>
   </PropertyGroup>
   <ItemGroup>
@@ -391,6 +390,10 @@
       <SubType>compile</SubType>
       <Link>core\wiring.h</Link>
     </Compile>
+    <Compile Include="..\..\wiring_analog.c">
+      <SubType>compile</SubType>
+      <Link>core\wiring_analog.c</Link>
+    </Compile>
     <Compile Include="..\..\wiring_analog.h">
       <SubType>compile</SubType>
       <Link>core\wiring_analog.h</Link>
@@ -461,10 +464,6 @@
       <SubType>compile</SubType>
       <Link>core\WInterrupts.c.disabled</Link>
     </None>
-    <None Include="..\..\wiring_analog.c.disabled">
-      <SubType>compile</SubType>
-      <Link>core\wiring_analog.c.disabled</Link>
-    </None>
     <None Include="..\..\wiring_digital.c.old">
       <SubType>compile</SubType>
       <Link>core\wiring_digital.c.old</Link>
diff --git a/cores/arduino/validation/test.cpp b/cores/arduino/validation/test.cpp
index 3c7e0b2e..25e92e69 100644
--- a/cores/arduino/validation/test.cpp
+++ b/cores/arduino/validation/test.cpp
@@ -61,13 +61,38 @@ 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 )
 {
   led_step1() ;
   delay( 1000 ) ;              // wait for a second
   led_step2() ;
   delay( 1000 ) ;              // wait for a second
-
+  
+  analog_write_step();
+	
 /*
   Serial1.write( '-' ) ;   // send a char
   Serial1.write( "test1\n" ) ;   // send a string
diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c
index 0b1f4c9b..7aa3c7f5 100644
--- a/cores/arduino/wiring_analog.c
+++ b/cores/arduino/wiring_analog.c
@@ -242,12 +242,29 @@ void analogWrite(uint32_t ulPin, uint32_t ulValue) {
 
 	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
+		 } 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].ulTCChannel) 
 		{
 			case  TC3_CH0 :
diff --git a/variants/arduino_zero/variant.cpp b/variants/arduino_zero/variant.cpp
index 76c9a386..4b572d6f 100644
--- a/variants/arduino_zero/variant.cpp
+++ b/variants/arduino_zero/variant.cpp
@@ -107,7 +107,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_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM2_CH1, TCC2_CH1 }, // 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 },
-- 
GitLab