Merge branch 'samd51' of github.com:adafruit/ArduinoCore-samd into samd51

This commit is contained in:
dean 2017-08-04 14:47:29 -04:00
commit dd7d17e642
2 changed files with 115 additions and 100 deletions

View file

@ -152,26 +152,17 @@ adafruit_circuitplayground_m0.build.pid=0x8018
adafruit_circuitplayground_m0.bootloader.tool=openocd adafruit_circuitplayground_m0.bootloader.tool=openocd
adafruit_circuitplayground_m0.bootloader.file=circuitplay/circuitplay_m0_samd21g18_sam_ba.bin adafruit_circuitplayground_m0.bootloader.file=circuitplay/circuitplay_m0_samd21g18_sam_ba.bin
# Adafruit Metro M4
# Adafruit Metro M4 (SAMD51)
# ------------------------------ # ------------------------------
adafruit_metro_m4.name=Adafruit Metro M4 adafruit_metro_m4.name=Adafruit Metro M4 (SAMD51)
adafruit_metro_m4.vid.0=0x2341 adafruit_metro_m4.vid.0=0x239A
adafruit_metro_m4.pid.0=0x804d adafruit_metro_m4.pid.0=0x8020
adafruit_metro_m4.vid.1=0x2341 adafruit_metro_m4.vid.1=0x239A
adafruit_metro_m4.pid.1=0x004d adafruit_metro_m4.pid.1=0x0020
adafruit_metro_m4.vid.2=0x2341
adafruit_metro_m4.pid.2=0x824d
# If the board is a 2341:824d use 2341:824d for build and set other parameters as well
adafruit_metro_m4.vid.2.build.vid=0x2341
adafruit_metro_m4.vid.2.build.pid=0x824d
adafruit_metro_m4.vid.2.build.usb_product="Adafruit Metro M4"
adafruit_metro_m4.vid.2.bootloader.file=metroM4/samdx1_sam_ba.bin
adafruit_metro_m4.upload.tool=bossac adafruit_metro_m4.upload.tool=bossac
adafruit_metro_m4.upload.protocol=sam-ba adafruit_metro_m4.upload.protocol=sam-ba
#TODO: fix adafruit_metro_m4.upload.maximum_size=1048576
adafruit_metro_m4.upload.maximum_size=262144
adafruit_metro_m4.upload.use_1200bps_touch=true adafruit_metro_m4.upload.use_1200bps_touch=true
adafruit_metro_m4.upload.wait_for_upload_port=true adafruit_metro_m4.upload.wait_for_upload_port=true
adafruit_metro_m4.upload.native_usb=true adafruit_metro_m4.upload.native_usb=true
@ -179,7 +170,7 @@ adafruit_metro_m4.build.mcu=cortex-m4
adafruit_metro_m4.build.f_cpu=48000000L adafruit_metro_m4.build.f_cpu=48000000L
adafruit_metro_m4.build.usb_product="Adafruit Metro M4" adafruit_metro_m4.build.usb_product="Adafruit Metro M4"
adafruit_metro_m4.build.usb_manufacturer="Adafruit LLC" adafruit_metro_m4.build.usb_manufacturer="Adafruit LLC"
adafruit_metro_m4.build.board=SAMD_METRO_M4 adafruit_metro_m4.build.board=SAMD_51
adafruit_metro_m4.build.core=arduino adafruit_metro_m4.build.core=arduino
adafruit_metro_m4.build.extra_flags=-D__SAMD51J20A__ -D__SAMD51__ {build.usb_flags} adafruit_metro_m4.build.extra_flags=-D__SAMD51J20A__ -D__SAMD51__ {build.usb_flags}
adafruit_metro_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld adafruit_metro_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
@ -189,4 +180,4 @@ adafruit_metro_m4.build.variant_system_lib=
adafruit_metro_m4.build.vid=0x2341 adafruit_metro_m4.build.vid=0x2341
adafruit_metro_m4.build.pid=0x804d adafruit_metro_m4.build.pid=0x804d
adafruit_metro_m4.bootloader.tool=openocd adafruit_metro_m4.bootloader.tool=openocd
adafruit_metro_m4.bootloader.file=metroM4/samdx1_sam_ba.bin adafruit_metro_m4.bootloader.file=metroM4/samdx1_sam_ba.bin

View file

@ -21,70 +21,89 @@
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | | Digital Low | | | * | | Digital Low | | |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | 0 | 0 -> RX | PA23 | | EIC/EXTINT[7] PTCXY[17] *SERCOM3/PAD[1] SERCOM5/PAD[0] TC4/WO[1] TCC1/WO[7] * | 0 | 0 -> RX | PA11 | | EIC/EXTINT[11] ADC/AIN[19] PTC/X[3] *SERCOM0/PAD[3] SERCOM2/PAD[3] TCC0/WO[3] TCC1/WO[1]
* | 1 | 1 <- TX | PA22 | | EIC/EXTINT[6] PTCXY[16] *SERCOM3/PAD[0] SERCOM5/PAD[1] TC4/WO[0] TCC1/WO[6] * | 1 | 1 <- TX | PA10 | | EIC/EXTINT[10] ADC/AIN[18] PTC/X[2] *SERCOM0/PAD[2] TCC0/WO[2] TCC1/WO[0]
* | 2 | ~2 | PA08 | | EIC/NMI ADC0/AIN[8] PTCXY[6] SERCOM0/PAD[0] SERCOM2/PAD[1] TC0/WO[0] *TCC1/WO[4] * | 2 | 2 | PA14 | | EIC/EXTINT[14] SERCOM2/PAD[2] SERCOM4/PAD[2] TC3/WO[0] TCC0/WO[4]
* | 3 | ~3 | PA10 | | EIC/EXTINT[10] ADC0/AIN[10] PTCXY[8] SERCOM0/PAD[2] SERCOM2/PAD[2] TC1/WO[0] *TCC0/WO[2] * | 3 | ~3 | PA09 | | EIC/EXTINT[9] ADC/AIN[17] PTC/X[1] SERCOM0/PAD[1] SERCOM2/PAD[1] TC0/WO[1] *TCC0/WO[1]
* | 4 | ~4 | PB12 | | EIC/EXTINT[12] PTCXY[26] SERCOM4/PAD[0] TC4/WO[0] *TCC3/WO[0] * | 4 | ~4 | PA08 | | EIC/NMI ADC/AIN[16] PTC/X[0] SERCOM0/PAD[0] SERCOM2/PAD[0] TC0/WO[0] *TCC0/WO[0]
* | 5 | ~5 | PB14 | | EIC/EXTINT[14] PTCXY[28] SERCOM4/PAD[2] *TC5/WO[0] TCC4/WO[0] * | 5 | ~5 | PA15 | | EIC/EXTINT[15] SERCOM2/PAD[3] SERCOM4/PAD[3] *TC3/WO[1] TCC0/WO[5]
* | 6 | ~6 | PB15 | | EIC/EXTINT[15] PTCXY[29] SERCOM4/PAD[3] *TC5/WO[1] TCC4/WO[1] * | 6 | ~6 | PA20 | | EIC/EXTINT[4] PTC/X[8] SERCOM5/PAD[2] SERCOM3/PAD[2] *TCC1/WO[4]
* | 7 | ~7 | PA14 | | EIC/EXTINT[14] SERCOM2/PAD[2] SERCOM4/PAD[2] TC3/WO[0] TCC2/WO[0] * | 7 | ~7 | PA21 | | EIC/EXTINT[5] PTC/X[9] SERCOM5/PAD[3] SERCOM3/PAD[3] TCC0/WO[7]
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | | Digital High | | | * | | Digital High | | |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | 8 | 8 | PA16 | | EIC/EXTINT[0] PTCXY[10] SERCOM1/PAD[0] SERCOM3/PAD[1] TC2/WO[2] TCC1/WO[1] * | 8 | 8 | PA06 | | EIC/EXTINT[6] ADC/AIN[6] AC/AIN[2] PTC/Y[4] SERCOM0/PAD[2]
* | 9 | 9 | PA17 | | EIC/EXTINT[7] PTCXY[11] SERCOM1/PAD[1] SERCOM3/PAD[0] TC2/WO[1] TCC1/WO[1] * | 9 | 9 | PA07 | | EIC/EXTINT[7] ADC/AIN[7] AC/AIN[3] PTC/Y[5] SERCOM0/PAD[3]
* | 10 | ~10 | PA18 | | EIC/EXTINT[2] PTCXY[12] SERCOM1/PAD[2] SERCOM3/PAD[2] TC3/WO[0] TCC1/WO[2] * | 10 | ~10 | PA18 | | EIC/EXTINT[2] PTC/X[6] +SERCOM1/PAD[2] SERCOM3/PAD[2] *TC3/WO[0] TCC0/WO[6]
* | 11 | ~11 | PA19 | | EIC/EXTINT[3] PTCXY[13] SERCOM1/PAD[3] SERCOM3/PAD[3] TC3/WO[1] TCC1/WO[3] * | 11 | ~11 | PA16 | | EIC/EXTINT[0] PTC/X[4] +SERCOM1/PAD[0] SERCOM3/PAD[0] *TCC1/WO[0]
* | 12 | ~12 | PA20 | | EIC/EXTINT[4] PTCXY[14] SERCOM5/PAD[2] SERCOM3/PAD[2] TCC1/WO[4] * | 12 | ~12 | PA19 | | EIC/EXTINT[3] PTC/X[7] +SERCOM1/PAD[3] SERCOM3/PAD[3] *TC3/WO[1] TCC1/WO[3]
* | 13 | ~13 | PA21 | LED | EIC/EXTINT[5] PTCXY[15] SERCOM5/PAD[3] SERCOM3/PAD[3] TCC1/WO[5] * | 13 | ~13 | PA17 | LED | EIC/EXTINT[1] PTC/X[5] +SERCOM1/PAD[1] SERCOM3/PAD[1] *TCC1/WO[1] TCC0/WO[5]
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | | Analog Connector | | | * | | Analog Connector | | |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | 14 | A0 | PA02 | A0 | EIC/EXTINT[2] *ADC/AIN[0] DAC[0]/VOUT * | 14 | A0 | PA02 | A0 | EIC/EXTINT[2] *ADC/AIN[0] DAC/VOUT PTC/Y[0]
* | 15 | A1 | PA05 | A1 | EIC/EXTINT[5] *ADC/AIN[5] DAC[1]/VOUT SERCOM0/PAD[1] TC0/WO[1] * | 15 | A1 | PB08 | A1 | EIC/EXTINT[8] *ADC/AIN[2] PTC/Y[14] SERCOM4/PAD[0] TC4/WO[0]
* | 16 | A2 | PA06 | A2 | EIC/EXTINT[6] *ADC/AIN[3] PTCXY[4] SERCOM4/PAD[1] TC1/WO[0] * | 16 | A2 | PB09 | A2 | EIC/EXTINT[9] *ADC/AIN[3] PTC/Y[15] SERCOM4/PAD[1] TC4/WO[1]
* | 17 | A3 | PA07 | A3 | EIC/EXTINT[7] *ADC/AIN[7] PTCXY[5] SERCOM0/PAD[3] TC1/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 | PA11 | A4 | EIC/EXTINT[11] *ADC/AIN[11] PTCXY[9] SERCOM0/PAD[3] SERCOM2/PAD[3] TC1/WO[1] TCC0/WO[3] * | 18 | A4 | PA05 | A4 | EIC/EXTINT[5] *ADC/AIN[5] AC/AIN[1] PTC/Y[5] SERCOM0/PAD[1] TCC0/WO[1]
* | 19 | A5 | PA04 | A5 | EIC/EXTINT[4] *ADC/AIN[4] PTCXY[3] SERCOM0/PAD[0] TC0/WO[0] * | 19 | A5 | PB02 | A5 | EIC/EXTINT[2] *ADC/AIN[10] PTC/Y[8] SERCOM5/PAD[0]
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | | Wire | | | * | | Wire | | |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | 20 | SDA | PB02 | SDA | EIC/EXTINT[6] ADC/AIN[14] PTCXY[20] *SERCOM5/PAD[0] TCC2/WO[2] * | 20 | SDA | PA22 | SDA | EIC/EXTINT[6] PTC/X[10] *SERCOM3/PAD[0] SERCOM5/PAD[0] TC4/WO[0] TCC0/WO[4]
* | 21 | SCL | PB03 | SCL | EIC/EXTINT[3] ADC/AIN[15] PTCXY[21] *SERCOM5/PAD[1] * | 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) | | | * | |SPI (Legacy ICSP) | | |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | 22 | 1 | PA15 | MISO | EIC/EXTINT[15] SERCOM2/PAD[3] *SERCOM4/PAD[3] TC3/WO[1] TCC2/WO[1] * | 22 | 1 | PA12 | MISO | EIC/EXTINT[12] SERCOM2/PAD[0] *SERCOM4/PAD[0] TCC2/WO[0] TCC0/WO[6]
* | | 2 | | 5V0 | * | | 2 | | 5V0 |
* | 23 | 4 | PA13 | MOSI | EIC/EXTINT[13] SERCOM2/PAD[1] *SERCOM4/PAD[0] TC2/WO[1] TCC0/WO[7] * | 23 | 4 | PB10 | MOSI | EIC/EXTINT[10] *SERCOM4/PAD[2] TC5/WO[0] TCC0/WO[4]
* | 24 | 3 | PA12 | SCK | EIC/EXTINT[12] SERCOM2/PAD[0] *SERCOM4/PAD[1] TC2/WO[0] TCC0/WO[6] * | 24 | 3 | PB11 | SCK | EIC/EXTINT[11] *SERCOM4/PAD[3] TC5/WO[1] TCC0/WO[5]
* | | 5 | | RESET | * | | 5 | | RESET |
* | | 6 | | GND | * | | 6 | | GND |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | | LEDs | | | * | | LEDs | | |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | 25 | | PB06 | RX | * | 25 | | PB03 | RX |
* | 26 | | PA27 | TX | * | 26 | | PA27 | TX |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | | USB | | | * | | USB | | |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | 27 | | PB07 | USB_HOST_ENABLE | EIC/EXTINT[7] * | 27 | | PA28 | USB_HOST_ENABLE | EIC/EXTINT[8]
* | 28 | | PA24 | USB_NEGATIVE | *USB/DM * | 28 | | PA24 | USB_NEGATIVE | *USB/DM
* | 29 | | PA25 | USB_POSITIVE | *USB/DP * | 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 | 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 | ATN | 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 | | | * | | GND | | |
* | 42 | AREF | PA03 | | EIC/EXTINT[3] *[ADC|DAC]/VREFA ADC/AIN[1] PTCXY[0] * | 42 | AREF | PA03 | | EIC/EXTINT[3] *[ADC|DAC]/VREFA ADC/AIN[1] PTC/Y[1]
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | |32.768KHz Crystal | | | * | |32.768KHz Crystal | | |
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
* | | | PA00 | XIN32 | EIC/EXTINT[0] * | | | PA00 | XIN32 | EIC/EXTINT[0] SERCOM1/PAD[0] TCC2/WO[0]
* | | | PA01 | XOUT32 | EIC/EXTINT[1] * | | | PA01 | XOUT32 | EIC/EXTINT[1] SERCOM1/PAD[1] TCC2/WO[1]
* +------------+------------------+--------+-----------------+-------------------------------------------------------------------------------------------------------- * +------------+------------------+--------+-----------------+--------------------------------------------------------------------------------------------------------
*/ */
#include "variant.h" #include "variant.h"
/* /*
@ -95,86 +114,91 @@ const PinDescription g_APinDescription[]=
// 0..13 - Digital pins // 0..13 - Digital pins
// ---------------------- // ----------------------
// 0/1 - SERCOM/UART (Serial1) // 0/1 - SERCOM/UART (Serial1)
{ PORTA, 23, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH7, NOT_ON_TIMER, EXTERNAL_INT_7 }, // RX: SERCOM3/PAD[1] { PORTA, 11, PIO_SERCOM, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 }, // RX: SERCOM0/PAD[3]
{ PORTA, 22, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH6, NOT_ON_TIMER, EXTERNAL_INT_6 }, // TX: SERCOM3/PAD[0] { PORTA, 10, PIO_SERCOM, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_10 }, // TX: SERCOM0/PAD[2]
// 2..12 // 2..12
// Digital Low // Digital Low
{ PORTA, 8, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH4, NOT_ON_TIMER, NOT_AN_INTERRUPT }, { PORTA, 14, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14 },
{ PORTA, 10, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH2, NOT_ON_TIMER, EXTERNAL_INT_10 }, { PORTA, 9, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, // TCC0/WO[1]
{ PORTB, 12, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM3_CH0, NOT_ON_TIMER, EXTERNAL_INT_12 }, { PORTA, 8, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_NMI }, // TCC0/WO[0]
{ PORTB, 14, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM4_CH0, NOT_ON_TIMER, EXTERNAL_INT_14 }, { PORTA, 15, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, NOT_ON_TIMER, EXTERNAL_INT_15 }, // TC3/WO[1]
{ PORTB, 15, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM4_CH1, NOT_ON_TIMER, EXTERNAL_INT_15 }, { PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH4, TCC1_CH4, EXTERNAL_INT_4 }, // TCC1/WO[4]
{ PORTA, 14, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM2_CH0, NOT_ON_TIMER, EXTERNAL_INT_14 }, { PORTA, 21, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH5, TCC1_CH5, EXTERNAL_INT_5 }, // TCC1/WO[5]
// Digital High // Digital High
{ PORTA, 16, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH1, NOT_ON_TIMER, EXTERNAL_INT_0 }, { PORTA, 6, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel6, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 },
{ PORTA, 17, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH1, NOT_ON_TIMER, EXTERNAL_INT_7 }, { PORTA, 7, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel7, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_7 },
{ PORTA, 18, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH2, NOT_ON_TIMER, EXTERNAL_INT_2 }, { PORTA, 18, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH0, NOT_ON_TIMER, EXTERNAL_INT_2 }, // TC3/WO[0]
{ PORTA, 19, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH3, NOT_ON_TIMER, EXTERNAL_INT_3 }, { PORTA, 16, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_0 }, // TCC1/WO[0]
{ PORTA, 12, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH4, NOT_ON_TIMER, EXTERNAL_INT_4 }, { PORTA, 19, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, NOT_ON_TIMER, EXTERNAL_INT_3 }, // TC3/WO[1]
// 13 (LED) // 13 (LED)
{ PORTA, 21, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH5, NOT_ON_TIMER, EXTERNAL_INT_5 }, { PORTA, 21, PIO_PWM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_1 }, // TCC1/WO[1]
// 14..19 - Analog pins // 14..19 - Analog pins
// -------------------- // --------------------
{ PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel0, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, { PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel0, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // ADC/AIN[0]
{ PORTA, 5, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel5, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, { PORTB, 8, PIO_ANALOG, 0, ADC_Channel2, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8 }, // ADC/AIN[2]
{ PORTA, 6, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel3, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 }, { PORTB, 9, PIO_ANALOG, 0, ADC_Channel3, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_9 }, // ADC/AIN[3]
{ PORTA, 7, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel7, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_7 }, { PORTA, 4, PIO_ANALOG, 0, ADC_Channel4, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, // ADC/AIN[4]
{ PORTA, 11, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel11, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 }, { PORTA, 5, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel5, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, // ADC/AIN[5]
{ PORTA, 4, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel4, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, { PORTB, 2, PIO_ANALOG, 0, ADC_Channel10, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // ADC/AIN[10]
// Extra Analog pins! 20..23
{ PORTA, 8, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel8, NOT_ON_PWM, NOT_ON_TIMER, NOT_AN_INTERRUPT }, // same as D2
{ PORTA, 10, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel10, NOT_ON_PWM, NOT_ON_TIMER, NOT_AN_INTERRUPT }, // same as D3
{ PORTB, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel14, NOT_ON_PWM, NOT_ON_TIMER, NOT_AN_INTERRUPT }, // same as sda
{ PORTB, 3, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel15, NOT_ON_PWM, NOT_ON_TIMER, NOT_AN_INTERRUPT }, //same as scl
// 24..25 I2C pins (SDA/SCL) //DM TODO: some of these are on PWM channels
// Extra Analog pins! 20..25
{ PORTA, 11, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel19, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 }, // A6 same as D0
{ PORTA, 10, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel18, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_10 }, // A7 same as D1
{ PORTA, 8, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel16, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_NMI }, // A8 same as D4
{ PORTA, 9, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel17, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, // A9 same as D5
{ PORTA, 6, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel6, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_6 }, // A10 same as D8
{ PORTA, 7, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // A11 same as D9
// 26..27 I2C pins (SDA/SCL)
// ---------------------- // ----------------------
{ PORTB, 2, PIO_SERCOM_ALT, PIN_ATTR_DIGITAL, No_ADC_Channel, PWM2_CH2, TCC2_CH2, EXTERNAL_INT_6 }, //sda { PORTA, 22, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 }, // SDA: SERCOM3/PAD[0]
{ PORTB, 3, PIO_SERCOM_ALT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_3 }, //scl { PORTA, 23, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_7 }, // SCL: SERCOM3/PAD[1]
// 26..28 - SPI pins (ICSP:MISO,SCK,MOSI) // 28..30 - SPI pins (ICSP:MISO,SCK,MOSI)
// ---------------------- // ----------------------
{ PORTA, 15, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, PWM2_CH1, TCC2_CH1, EXTERNAL_INT_15 }, //TODO: FIX THIS IN HARDWARE!! PA12 IS NOT SERCOM4/PAD[0] ANYMORE
{ PORTA, 14, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, PWM0_CH7, TCC0_CH7, EXTERNAL_INT_13 }, { PORTA, 12, PIO_SERCOM_ALT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_12 }, // MISO: SERCOM4/PAD[0]
{ PORTA, 12, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_12 }, { PORTB, 10, PIO_SERCOM_ALT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_10 }, // MOSI: SERCOM4/PAD[2]
{ PORTB, 11, PIO_SERCOM_ALT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 }, // SCK: SERCOM4/PAD[3]
// 29..30 - RX/TX LEDS (PB06/PA27) // 31..32 - RX/TX LEDS (PA31/PA27)
// -------------------- // --------------------
{ PORTB, 6, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only { PORTA, 31, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only
{ PORTA, 27, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only { PORTA, 27, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only
// 31..33 - USB // 33..35 - USB
// -------------------- // --------------------
{ PORTB, 7, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable //TODO: FIX THIS IN HARDWARE!! PA28 IS NOT USB HOST ENABLE ANYMORE
{ PORTA, 28, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable
{ PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DM { PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DM
{ PORTA, 25, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DP { PORTA, 25, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DP
// 34..36 - Secondary SPI // 36..38 - Secondary SPI
// ---------------------- // ----------------------
{ PORTB, 11, PIO_SERCOM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, NOT_AN_INTERRUPT }, //flash miso { PORTB, 03, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SPI Flash MISO
{ PORTB, 8, PIO_SERCOM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, NOT_AN_INTERRUPT }, //flash mosi { PORTB, 22, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SPI FLash MOSI
{ PORTB, 9, PIO_SERCOM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, NOT_AN_INTERRUPT }, //flash sck { PORTB, 23, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SPI FLash SCK
// 37 Secondary SPI SS // 39 Secondary SPI SS
{ PORTB, 10, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, NOT_AN_INTERRUPT }, //flash cs { PORTA, 13, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_13 }, // SPI Flash SS
// 38 - Internal NeoPixel // 40 - Internal NeoPixel
{ PORTB, 17, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only { PORTA, 30, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only
// 39 (AREF) // 41 (AREF)
{ PORTA, 3, PIO_ANALOG, PIN_ATTR_ANALOG, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // DAC/VREFP { PORTA, 3, PIO_ANALOG, PIN_ATTR_ANALOG, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // DAC/VREFP
// ---------------------- // ----------------------
// 40 - Alternate use of A0 and A1 (DAC output) // 42 - Alternate use of A0 (DAC output)
{ PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, DAC_Channel0, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // DAC/VOUT[0] { PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, DAC_Channel0, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // DAC/VOUT
{ PORTA, 5, PIO_ANALOG, PIN_ATTR_ANALOG, DAC_Channel1, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, // DAC/VOUT[1]
} ; } ;
const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM]={ TCC0, TCC1, TCC2, TCC3, TCC4, TC5 } ; const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM]={ TCC0, TCC1, TCC2, TC3 } ;
// Multi-serial objects instantiation // Multi-serial objects instantiation
SERCOM sercom0( SERCOM0 ) ; SERCOM sercom0( SERCOM0 ) ;
@ -184,9 +208,9 @@ SERCOM sercom3( SERCOM3 ) ;
SERCOM sercom4( SERCOM4 ) ; SERCOM sercom4( SERCOM4 ) ;
SERCOM sercom5( SERCOM5 ) ; SERCOM sercom5( SERCOM5 ) ;
Uart Serial1( &sercom3, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ; Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ;
void SERCOM1_2_Handler() void SERCOM0_2_Handler()
{ {
Serial1.IrqHandler(); Serial1.IrqHandler();
} }