From 1d251a33b950c4a7930bc828eb774e35a1bde434 Mon Sep 17 00:00:00 2001 From: Thibaut VIARD <thibaut.viard@atmel.com> Date: Mon, 17 Nov 2014 20:02:22 +0100 Subject: [PATCH] PWM pins 4-13 working Signed-off-by: Thibaut VIARD <thibaut.viard@atmel.com> --- cores/arduino/WVariant.h | 10 +- cores/arduino/wiring_analog.c | 58 ++-- .../validation_PWM/build_as6/test.cppproj | 276 ++++++++---------- cores/validation/validation_PWM/test.cpp | 11 +- variants/arduino_zero/variant.cpp | 147 +++++----- 5 files changed, 232 insertions(+), 270 deletions(-) diff --git a/cores/arduino/WVariant.h b/cores/arduino/WVariant.h index a1156fc3..e7301163 100644 --- a/cores/arduino/WVariant.h +++ b/cores/arduino/WVariant.h @@ -54,10 +54,10 @@ typedef enum _ETCChannel TCC0_CH1 = (0<<8)|(1), TCC0_CH2 = (0<<8)|(2), TCC0_CH3 = (0<<8)|(3), - TCC0_CH4 = (0<<8)|(4), - TCC0_CH5 = (0<<8)|(5), - TCC0_CH6 = (0<<8)|(6), - TCC0_CH7 = (0<<8)|(7), + TCC0_CH4 = (0<<8)|(0), // Channel 4 is 0! + TCC0_CH5 = (0<<8)|(1), // Channel 5 is 1! + TCC0_CH6 = (0<<8)|(2), // Channel 6 is 2! + TCC0_CH7 = (0<<8)|(3), // Channel 7 is 3! TCC1_CH0 = (1<<8)|(0), TCC1_CH1 = (1<<8)|(1), TCC2_CH0 = (2<<8)|(0), @@ -69,7 +69,7 @@ typedef enum _ETCChannel extern const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM] ; #define GetTCNumber( x ) ( (x) >> 8 ) -#define GetTCChannelNumber( x ) ( (x) && 0xff ) +#define GetTCChannelNumber( x ) ( (x) & 0xff ) #define GetTC( x ) ( g_apTCInstances[(x) >> 8] ) // Definitions for PWM channels diff --git a/cores/arduino/wiring_analog.c b/cores/arduino/wiring_analog.c index 317ac8b8..ff356b41 100644 --- a/cores/arduino/wiring_analog.c +++ b/cores/arduino/wiring_analog.c @@ -193,8 +193,8 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue ) // uint32_t pwm_name = g_APinDescription[ulPin].ulTCChannel ; uint8_t isTC = 0 ; uint8_t Channelx ; - Tc* TCx ; - Tcc* TCCx ; + Tc* TCx = 0 ; + Tcc* TCCx = 0 ; if ( (attr & PIN_ATTR_ANALOG) == PIN_ATTR_ANALOG ) { @@ -234,59 +234,45 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue ) switch ( GetTCNumber( g_APinDescription[ulPin].ulPWMChannel ) ) { case 0: // TCC0 - //Enable GCLK for TCC0 (timer counter input clock) - GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC0_TCC1 )) ; - break ; - case 1: // TCC1 - //Enable GCLK for TCC1 (timer counter input clock) + // Enable GCLK for TCC0 and TCC1 (timer counter input clock) GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC0_TCC1 )) ; - break ; - case 2: // TCC2 - //Enable GCLK for TCC2 (timer counter input clock) - GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC2_TC3 )) ; + while ( GCLK->STATUS.bit.SYNCBUSY == 1 ) ; break ; + case 2: // TCC2 case 3: // TC3 - //Enable GCLK for TC3 (timer counter input clock) - GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC2_TC3 )); + // Enable GCLK for TCC2 and TC3 (timer counter input clock) + GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC2_TC3 )) ; break ; case 4: // TC4 - //Enable GCLK for TC4 (timer counter input clock) - GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TC4_TC5 )); - break ; - case 5: // TC5 - //Enable GCLK for TC5 (timer counter input clock) - GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TC4_TC5 )) ; + // Enable GCLK for TC4 and TC5 (timer counter input clock) + GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TC4_TC5 )); break ; - case 6: // TC6 - //Enable GCLK for TC6 (timer counter input clock) + case 6: // TC6 (not available on Zero) + case 7: // TC7 (not available on Zero) + // Enable GCLK for TC6 and TC7 (timer counter input clock) GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TC6_TC7 )); break ; - - case 7: // TC7 - //Enable GCLK for TC7 (timer counter input clock) - GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TC6_TC7 )) ; - break ; } // Set PORT if ( isTC ) { // -- Configure TC - //DISABLE TCx + // DISABLE TCx TCx->COUNT8.CTRLA.reg &=~(TC_CTRLA_ENABLE); - //Set Timer counter Mode to 8 bits + // Set Timer counter Mode to 8 bits TCx->COUNT8.CTRLA.reg |= TC_CTRLA_MODE_COUNT8; - //Set TCx as normal PWM + // Set TCx as normal PWM TCx->COUNT8.CTRLA.reg |= TC_CTRLA_WAVEGEN_NPWM; - //Set TCx in waveform mode Normal PWM + // Set TCx in waveform mode Normal PWM TCx->COUNT8.CC[Channelx].reg = (uint8_t) ulValue; - //Set PER to maximum counter value (resolution : 0xFF) + // Set PER to maximum counter value (resolution : 0xFF) TCx->COUNT8.PER.reg = 0xFF; // Enable TCx TCx->COUNT8.CTRLA.reg |= TC_CTRLA_ENABLE; @@ -295,15 +281,15 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue ) { // -- Configure TCC - //DISABLE TCCx + // DISABLE TCCx TCCx->CTRLA.reg &=~(TCC_CTRLA_ENABLE); - //Set TCx as normal PWM + // Set TCx as normal PWM TCCx->WAVE.reg |= TCC_WAVE_WAVEGEN_NPWM; - //Set TCx in waveform mode Normal PWM + // Set TCx in waveform mode Normal PWM TCCx->CC[Channelx].reg = (uint32_t)ulValue; - //Set PER to maximum counter value (resolution : 0xFF) + // Set PER to maximum counter value (resolution : 0xFF) TCCx->PER.reg = 0xFF; - //ENABLE TCCx + // ENABLE TCCx TCCx->CTRLA.reg |= TCC_CTRLA_ENABLE ; } diff --git a/cores/validation/validation_PWM/build_as6/test.cppproj b/cores/validation/validation_PWM/build_as6/test.cppproj index 9b7f4395..83bb0abc 100644 --- a/cores/validation/validation_PWM/build_as6/test.cppproj +++ b/cores/validation/validation_PWM/build_as6/test.cppproj @@ -53,173 +53,145 @@ <com_atmel_avrdbg_tool_edbg> <ToolOptions> <InterfaceProperties> - <SwdClock>4000000</SwdClock> + <SwdClock>2000000</SwdClock> </InterfaceProperties> <InterfaceName>SWD</InterfaceName> </ToolOptions> <ToolType>com.atmel.avrdbg.tool.edbg</ToolType> - <ToolNumber>ATML2320021800000009</ToolNumber> + <ToolNumber>ATML2320021800000003</ToolNumber> <ToolName>EDBG</ToolName> </com_atmel_avrdbg_tool_edbg> + <preserveEEPROM>true</preserveEEPROM> </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> + <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>False</armgcc.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcc.compiler.symbols.DefSymbols><ListValues> + <Value>F_CPU=48000000</Value> + <Value>NDEBUG</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.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcc.compiler.optimization.PrepareDataForGarbageCollection>False</armgcc.compiler.optimization.PrepareDataForGarbageCollection> + <armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings> + <armgcc.compiler.miscellaneous.OtherFlags>False</armgcc.compiler.miscellaneous.OtherFlags> + <armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>False</armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcccpp.compiler.symbols.DefSymbols><ListValues> + <Value>F_CPU=48000000</Value> + <Value>NDEBUG</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.PrepareFunctionsForGarbageCollection>True</armgcccpp.compiler.optimization.PrepareFunctionsForGarbageCollection> + <armgcccpp.compiler.optimization.PrepareDataForGarbageCollection>False</armgcccpp.compiler.optimization.PrepareDataForGarbageCollection> + <armgcccpp.compiler.warnings.AllWarnings>True</armgcccpp.compiler.warnings.AllWarnings> + <armgcccpp.linker.general.UseNewlibNano>False</armgcccpp.linker.general.UseNewlibNano> + <armgcccpp.linker.libraries.Libraries><ListValues><Value>libm</Value></ListValues></armgcccpp.linker.libraries.Libraries> + <armgcccpp.linker.optimization.GarbageCollectUnusedSections>True</armgcccpp.linker.optimization.GarbageCollectUnusedSections> + <armgcccpp.linker.memorysettings.ExternalRAM>False</armgcccpp.linker.memorysettings.ExternalRAM> + <armgcccpp.linker.miscellaneous.LinkerFlags>--specs=nosys.specs -Tflash_without_bootloader.ld</armgcccpp.linker.miscellaneous.LinkerFlags> + <armgcccpp.preprocessingassembler.general.DefaultIncludePath>False</armgcccpp.preprocessingassembler.general.DefaultIncludePath> + <armgcc.compiler.optimization.level>Optimize for size (-Os)</armgcc.compiler.optimization.level> + <armgcccpp.compiler.optimization.level>Optimize for size (-Os)</armgcccpp.compiler.optimization.level> + <armgcccpp.linker.libraries.LibrarySearchPaths><ListValues><Value>../cmsis/linkerScripts</Value></ListValues></armgcccpp.linker.libraries.LibrarySearchPaths> + <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>--specs=nosys.specs -Tflash_with_bootloader.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> + <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>F_CPU=48000000</Value> + <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.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 -fno-common</armgcc.compiler.miscellaneous.OtherFlags> + <armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</armgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned> + <armgcccpp.compiler.symbols.DefSymbols> + <ListValues> + <Value>F_CPU=48000000</Value> + <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 -fno-common</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>--specs=nosys.specs -Tflash_without_bootloader.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> diff --git a/cores/validation/validation_PWM/test.cpp b/cores/validation/validation_PWM/test.cpp index 9e119362..a8d7e2a1 100644 --- a/cores/validation/validation_PWM/test.cpp +++ b/cores/validation/validation_PWM/test.cpp @@ -23,21 +23,24 @@ static int fadeAmount = 5; // how many points to fade the LED by void setup( void ) { - for ( int i=2 ; i < 14 ; i++ ) + for ( int i=4 ; i < 14 ; i++ ) { pinMode( i, OUTPUT ) ; } +/* SERIAL_PORT_MONITOR.begin( 115200 ) ; // Output to EDBG Virtual COM Port SERIAL_PORT_MONITOR.println( "test") ; SERIAL_PORT_MONITOR.println( brightness ) ; +*/ } void loop( void ) { - SERIAL_PORT_MONITOR.println( brightness ) ; + int i ; +// SERIAL_PORT_MONITOR.println( brightness ) ; - for ( int i=2 ; i < 14 ; i++ ) + for ( i=4 ; i < 14 ; i++ ) { analogWrite( i, brightness ) ; } @@ -50,7 +53,7 @@ void loop( void ) { fadeAmount = -fadeAmount ; } - + // wait for 30 milliseconds to see the dimming effect delay( 30 ) ; } diff --git a/variants/arduino_zero/variant.cpp b/variants/arduino_zero/variant.cpp index 699969a2..2bacbe5f 100644 --- a/variants/arduino_zero/variant.cpp +++ b/variants/arduino_zero/variant.cpp @@ -17,93 +17,94 @@ */ /* - * + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * + Pin number + ZERO Board pin | PIN | Label/Name | Comments (* is for default peripheral in use) - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | Digital Low | | | - * +------------+------------------+--------+-----------------+------------------------------ - * | 0 | 0 -> RX | PA10 | | EIC/EXTINT[10] ADC/AIN[18] PTC/X[2] *SERCOM0/PAD[2] TCC1/WO[0] TCC0/WO[2] - * | 1 | 1 <- TX | PA11 | | EIC/EXTINT[11] ADC/AIN[19] PTC/X[3] *SERCOM0/PAD[3] SERCOM2/PAD[3] TCC1/WO[1] TCC0/WO[3] - * | 2 | ~2 | PA08 | | EIC/NMI ADC/AIN[16] PTC/X[0] SERCOM0/PAD[0] SERCOM2/PAD[0] *TCC0/WO[0] TCC1/WO[2] - * | 3 | ~3 | PA09 | | EIC/EXTINT[9] ADC/AIN[17] PTC/X[1] 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] - * | 6 | ~6 | PA20 | | EIC/EXTINT[4] PTC/X[8] SERCOM5/PAD[2] SERCOM3/PAD[2] - *TCC0/WO[6] - * | 7 | ~7 | PA21 | | EIC/EXTINT[5] PTC/X[9] SERCOM5/PAD[3] SERCOM3/PAD[3] - *TCC0/WO[7] - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 0 | 0 -> RX | PA10 | | EIC/EXTINT[10] ADC/AIN[18] PTC/X[2] *SERCOM0/PAD[2] TCC0/WO[2] TCC1/WO[0] + * | 1 | 1 <- TX | PA11 | | EIC/EXTINT[11] ADC/AIN[19] PTC/X[3] *SERCOM0/PAD[3] SERCOM2/PAD[3] TCC0/WO[3] TCC1/WO[1] + * | 2 | ~2 | PA08 | | EIC/NMI ADC/AIN[16] PTC/X[0] SERCOM0/PAD[0] SERCOM2/PAD[0] *TCC0/WO[0] TCC1/WO[2] + * | 3 | ~3 | PA09 | | EIC/EXTINT[9] ADC/AIN[17] PTC/X[1] 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] + * | 6 | ~6 | PA20 | | EIC/EXTINT[4] PTC/X[8] SERCOM5/PAD[2] SERCOM3/PAD[2] *TCC0/WO[6] + * | 7 | ~7 | PA21 | | EIC/EXTINT[5] PTC/X[9] SERCOM5/PAD[3] SERCOM3/PAD[3] *TCC0/WO[7] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | Digital High | | | - * +------------+------------------+--------+-----------------+------------------------------ - * | 8 | ~8 | PA06 | | EIC/EXTINT[6] PTC/Y[4] ADC/AIN[6] AC/AIN[2] SERCOM0/PAD[2] *TCC1/WO[0] - * | 9 | ~9 | PA07 | | EIC/EXTINT[7] PTC/Y[5] ADC/AIN[7] AC/AIN[3] SERCOM0/PAD[3] *TCC1/WO[1] - * | 10 | ~10 | PA18 | | EIC/EXTINT[2] PTC/X[6] SERCOM1/PAD[2] SERCOM3/PAD[2] TC3/WO[0] *TCC0/WO[2] - * | 11 | ~11 | PA16 | | EIC/EXTINT[0] PTC/X[4] SERCOM1/PAD[0] SERCOM3/PAD[0] *TCC2/WO[0] TCC0/WO[6] - * | 12 | ~12 | PA19 | | EIC/EXTINT[3] PTC/X[7] SERCOM1/PAD[3] SERCOM3/PAD[3] TC3/WO[1] *TCC0/WO[3] - * | 13 | ~13 | PA17 | LED | EIC/EXTINT[1] PTC/X[5] SERCOM1/PAD[1] SERCOM3/PAD[1] *TCC2/WO[1] TCC0/WO[7] - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 8 | ~8 | PA06 | | EIC/EXTINT[6] ADC/AIN[6] AC/AIN[2] PTC/Y[4] SERCOM0/PAD[2] *TCC1/WO[0] + * | 9 | ~9 | PA07 | | EIC/EXTINT[7] ADC/AIN[7] AC/AIN[3] PTC/Y[5] SERCOM0/PAD[3] *TCC1/WO[1] + * | 10 | ~10 | PA18 | | EIC/EXTINT[2] PTC/X[6] +SERCOM1/PAD[2] SERCOM3/PAD[2] *TC3/WO[0] TCC0/WO[2] + * | 11 | ~11 | PA16 | | EIC/EXTINT[0] PTC/X[4] +SERCOM1/PAD[0] SERCOM3/PAD[0] *TCC2/WO[0] TCC0/WO[6] + * | 12 | ~12 | PA19 | | EIC/EXTINT[3] PTC/X[7] +SERCOM1/PAD[3] SERCOM3/PAD[3] *TC3/WO[1] TCC0/WO[3] + * | 13 | ~13 | PA17 | LED | EIC/EXTINT[1] PTC/X[5] +SERCOM1/PAD[1] SERCOM3/PAD[1] *TCC2/WO[1] TCC0/WO[7] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | Analog Connector | | | - * +------------+------------------+--------+-----------------+------------------------------ - * | 14 | A0 | PA02 | | EIC/EXTINT[2] *ADC/AIN[0] PTC/Y[0] DAC/VOUT - * | 15 | A1 | PB08 | | EIC/EXTINT[8] *ADC/AIN[2] PTC/Y[14] SERCOM4/PAD[0] TC4/WO[0] - * | 16 | A2 | PB09 | | EIC/EXTINT[9] *ADC/AIN[3] PTC/Y[15] SERCOM4/PAD[1] TC4/WO[1] - * | 17 | A3 | PA04 | | EIC/EXTINT[4] *ADC/AIN[4] AC/AIN[0] PTC/Y[2] SERCOM0/PAD[0] TCC0/WO[0] - * | 18 | A4 | PA05 | | EIC/EXTINT[5] *ADC/AIN[5] AC/AIN[1] PTC/Y[5] SERCOM0/PAD[1] TCC0/WO[1] - * | 19 | A5 | PB02 | | EIC/EXTINT[2] *ADC/AIN[10] PTC/Y[8] SERCOM5/PAD[0] - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 14 | A0 | PA02 | A0 | EIC/EXTINT[2] *ADC/AIN[0] DAC/VOUT PTC/Y[0] + * | 15 | A1 | PB08 | A1 | EIC/EXTINT[8] *ADC/AIN[2] PTC/Y[14] SERCOM4/PAD[0] TC4/WO[0] + * | 16 | A2 | PB09 | A2 | EIC/EXTINT[9] *ADC/AIN[3] PTC/Y[15] SERCOM4/PAD[1] TC4/WO[1] + * | 17 | A3 | PA04 | A3 | EIC/EXTINT[4] *ADC/AIN[4] AC/AIN[0] PTC/Y[2] SERCOM0/PAD[0] TCC0/WO[0] + * | 18 | A4 | PA05 | A4 | EIC/EXTINT[5] *ADC/AIN[5] AC/AIN[1] PTC/Y[5] SERCOM0/PAD[1] TCC0/WO[1] + * | 19 | A5 | PB02 | A5 | EIC/EXTINT[2] *ADC/AIN[10] PTC/Y[8] SERCOM5/PAD[0] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | Wire | | | - * +------------+------------------+--------+-----------------+------------------------------ - * | 20 | SDA | PA22 | | EIC/EXTINT[6] PTC/X[10] *SERCOM3/PAD[0] SERCOM5/PAD[0] TC4/WO[0] TCC0/WO[4] - * | 21 | SCL | PA23 | | EIC/EXTINT[7] PTC/X[11] *SERCOM3/PAD[1] SERCOM5/PAD[1] TC4/WO[1] TCC0/WO[5] - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 20 | SDA | PA22 | SDA | EIC/EXTINT[6] PTC/X[10] *SERCOM3/PAD[0] SERCOM5/PAD[0] TC4/WO[0] TCC0/WO[4] + * | 21 | SCL | PA23 | SCL | EIC/EXTINT[7] PTC/X[11] *SERCOM3/PAD[1] SERCOM5/PAD[1] TC4/WO[1] TCC0/WO[5] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | |SPI (Legacy ICSP) | | | - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | 22 | 1 | PA12 | MISO | EIC/EXTINT[12] SERCOM2/PAD[0] *SERCOM4/PAD[0] TCC2/WO[0] TCC0/WO[6] * | | 2 | | 5V0 | - * | 23 | 3 | PB11 | SCK | EIC/EXTINT[11] *SERCOM4/PAD[3] TC5/WO[1] TCC0/WO[5] - * | 24 | 4 | PB10 | MOSI | EIC/EXTINT[10] *SERCOM4/PAD[2] TC5/WO[0] TCC0/WO[4] + * | 23 | 3 | PB11 | SCK | EIC/EXTINT[11] *SERCOM4/PAD[3] TC5/WO[1] TCC0/WO[5] + * | 24 | 4 | PB10 | MOSI | EIC/EXTINT[10] *SERCOM4/PAD[2] TC5/WO[0] TCC0/WO[4] * | | 5 | | RESET | * | | 6 | | GND | - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | LEDs | | | - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | 25 | | PB03 | RX | * | 26 | | PA27 | TX | - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | USB | | | - * +------------+------------------+--------+-----------------+------------------------------ - * | 27 | | PA28 | USB_HOST_ENABLE | - * | 28 | | PA24 | USB_NEGATIVE | USB/DM - * | 29 | | PA25 | USB_POSITIVE | USB/DP - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 27 | | PA28 | USB_HOST_ENABLE | EIC/EXTINT[8] + * | 28 | | PA24 | USB_NEGATIVE | *USB/DM + * | 29 | | PA25 | USB_POSITIVE | *USB/DP + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | EDBG | | | - * +------------+------------------+--------+-----------------+------------------------------ - * | 30 | | PB22 | EDBG_UART TX | SERCOM5/PAD[2] - * | 31 | | PB23 | EDBG_UART RX | SERCOM5/PAD[3] - * +------------+------------------+--------+-----------------+------------------------------ - * | 32 | | PA22 | EDBG_SDA | SERCOM3/PAD[0] - * | 33 | | PA23 | EDBG_SCL | SERCOM3/PAD[1] - * +------------+------------------+--------+-----------------+------------------------------ - * | 34 | | PA19 | EDBG_MISO | SERCOM1/PAD[3] - * | 35 | | PA16 | EDBG_MOSI | SERCOM1/PAD[0] - * | 36 | | PA18 | EDBG_SS | SERCOM1/PAD[2] - * | 37 | | PA17 | EDBG_SCK | SERCOM1/PAD[1] - * +------------+------------------+--------+-----------------+------------------------------ - * | 38 | | PA13 | EDBG_GPIO0 | EIC/EXTINT[13] *TCC2/WO[1] TCC0/WO[7] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 30 | | PB22 | EDBG_UART TX | *SERCOM5/PAD[2] + * | 31 | | PB23 | EDBG_UART RX | *SERCOM5/PAD[3] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 32 | | PA22 | EDBG_SDA | Pin 20 (SDA) + * | 33 | | PA23 | EDBG_SCL | Pin 21 (SCL) + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 34 | | PA19 | EDBG_MISO | EIC/EXTINT[3] *SERCOM1/PAD[3] SERCOM3/PAD[3] TC3/WO[1] TCC0/WO[3] + * | 35 | | PA16 | EDBG_MOSI | EIC/EXTINT[0] *SERCOM1/PAD[0] SERCOM3/PAD[0] TCC2/WO[0] TCC0/WO[6] + * | 36 | | PA18 | EDBG_SS | EIC/EXTINT[2] *SERCOM1/PAD[2] SERCOM3/PAD[2] TC3/WO[0] TCC0/WO[2] + * | 37 | | PA17 | EDBG_SCK | EIC/EXTINT[1] *SERCOM1/PAD[1] SERCOM3/PAD[1] TCC2/WO[1] TCC0/WO[7] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | 38 | | PA13 | EDBG_GPIO0 | EIC/EXTINT[13] SERCOM2/PAD[1] SERCOM4/PAD[1] *TCC2/WO[1] TCC0/WO[7] * | 39 | | PA21 | EDBG_GPIO1 | Pin 7 * | 40 | | PA06 | EDBG_GPIO2 | Pin 8 * | 41 | | PA07 | EDBG_GPIO3 | Pin 9 - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | | | | - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | | GND | | | - * | 42 | AREF | PA03 | | EXTINT[3] *ADC+DAC/VREFA PTC/Y[1] - * +------------+------------------+--------+-----------------+------------------------------ + * | 42 | AREF | PA03 | | EIC/EXTINT[3] *[ADC|DAC]/VREFA ADC/AIN[1] PTC/Y[1] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * | |32.768KHz Crystal | | | - * +------------+------------------+--------+-----------------+------------------------------ - * | | | PA00 | XIN32 | EXTINT[0] SERCOM1/PAD[0] TCC2/WO[0] - * | | | PA01 | XOUT32 | EXTINT[1] SERCOM1/PAD[1] TCC2/WO[1] - * +------------+------------------+--------+-----------------+------------------------------ + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- + * | | | PA00 | XIN32 | EIC/EXTINT[0] SERCOM1/PAD[0] TCC2/WO[0] + * | | | PA01 | XOUT32 | EIC/EXTINT[1] SERCOM1/PAD[1] TCC2/WO[1] + * +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- */ + #include "variant.h" /* @@ -121,17 +122,17 @@ const PinDescription g_APinDescription[]= // Digital Low { PORTA, 8, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_NMI }, // TCC0/WO[0] { PORTA, 9, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, // TCC0/WO[1] - { PORTA, 14, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH0, TC3_CH0, EXTERNAL_INT_14 }, // TC3/WO[0] - { PORTA, 15, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, TC3_CH1, EXTERNAL_INT_15 }, // TC3/WO[1] - { PORTA, 20, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // TC7/WO[0] - { PORTA, 21, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH7, TCC0_CH7, EXTERNAL_INT_5 }, // TC7/WO[1] + { PORTA, 14, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_14 }, // TCC0//WO[4] + { PORTA, 15, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH5, TCC0_CH5, EXTERNAL_INT_15 }, // TCC0//WO[5] + { PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // TCC0/WO[6] + { PORTA, 21, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH7, TCC0_CH7, EXTERNAL_INT_5 }, // TCC0/WO[7] // Digital High - { PORTA, 6, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_4 }, // TCC1/WO[0] - { PORTA, 7, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_5 }, // TCC1/WO[1] - { PORTA, 18, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_2 }, // TCC0/WO[2] + { PORTA, 6, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_4 }, // TCC1/WO[0] + { PORTA, 7, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_5 }, // TCC1/WO[1] + { PORTA, 18, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH0, TC3_CH0, EXTERNAL_INT_2 }, // TC3/WO[0] { PORTA, 16, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_0 }, // TCC2/WO[0] - { PORTA, 19, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_3 }, // TCC0/WO[3] + { PORTA, 19, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, TC3_CH1, EXTERNAL_INT_3 }, // TC3/WO[1] // 13 (LED) { PORTA, 17, PIO_PWM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM2_CH1, NOT_ON_TIMER, EXTERNAL_INT_1 }, // TCC2/WO[1] @@ -143,7 +144,7 @@ const PinDescription g_APinDescription[]= { PORTB, 9, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel3, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_9 }, // ADC/AIN[3] { PORTA, 4, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel4, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, // ADC/AIN[4] { PORTA, 5, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel5, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, // ADC/AIN[5] - { PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel10, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // ADC/AIN[10] + { PORTB, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel10, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // ADC/AIN[10] // 20..21 I2C pins (SDA/SCL and also EDBG:SDA/SCL) // ---------------------- -- GitLab