DM: bunch of updates for mega
This commit is contained in:
parent
affe732e4f
commit
9f2846bf7f
4 changed files with 236 additions and 97 deletions
|
|
@ -110,6 +110,31 @@ typedef enum _ETCChannel
|
|||
TCC3_CH5 = (3<<8)|(1),
|
||||
TCC3_CH6 = (3<<8)|(2),
|
||||
TCC3_CH7 = (3<<8)|(3),
|
||||
TCC4_CH0 = (4<<8)|(0),
|
||||
TCC4_CH1 = (4<<8)|(1),
|
||||
TCC4_CH2 = (4<<8)|(2),
|
||||
TCC4_CH3 = (4<<8)|(3),
|
||||
TCC4_CH4 = (4<<8)|(0),
|
||||
TCC4_CH5 = (4<<8)|(1),
|
||||
TCC4_CH6 = (4<<8)|(2),
|
||||
TCC4_CH7 = (4<<8)|(3),
|
||||
|
||||
TC0_CH0 = (5<<8)|(0),
|
||||
TC0_CH1 = (5<<8)|(1),
|
||||
TC1_CH0 = (6<<8)|(0),
|
||||
TC1_CH1 = (6<<8)|(1),
|
||||
TC2_CH0 = (7<<8)|(0),
|
||||
TC2_CH1 = (7<<8)|(1),
|
||||
TC3_CH0 = (8<<8)|(0),
|
||||
TC3_CH1 = (8<<8)|(1),
|
||||
TC4_CH0 = (9<<8)|(0),
|
||||
TC4_CH1 = (9<<8)|(1),
|
||||
TC5_CH0 = (10<<8)|(0),
|
||||
TC5_CH1 = (10<<8)|(1),
|
||||
TC6_CH0 = (11<<8)|(0),
|
||||
TC6_CH1 = (11<<8)|(1),
|
||||
TC7_CH0 = (12<<8)|(0),
|
||||
TC7_CH1 = (12<<8)|(1),
|
||||
} ETCChannel ;
|
||||
|
||||
#else
|
||||
|
|
@ -170,6 +195,47 @@ extern const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM] ;
|
|||
PWM1_CH5=TCC1_CH5,
|
||||
PWM1_CH6=TCC1_CH6,
|
||||
PWM1_CH7=TCC1_CH7,
|
||||
PWM2_CH0=TCC2_CH0,
|
||||
PWM2_CH1=TCC2_CH1,
|
||||
PWM2_CH2=TCC2_CH2,
|
||||
PWM2_CH3=TCC2_CH3,
|
||||
PWM2_CH4=TCC2_CH4,
|
||||
PWM2_CH5=TCC2_CH5,
|
||||
PWM2_CH6=TCC2_CH6,
|
||||
PWM2_CH7=TCC2_CH7,
|
||||
PWM3_CH0=TCC3_CH0,
|
||||
PWM3_CH1=TCC3_CH1,
|
||||
PWM3_CH2=TCC3_CH2,
|
||||
PWM3_CH3=TCC3_CH3,
|
||||
PWM3_CH4=TCC3_CH4,
|
||||
PWM3_CH5=TCC3_CH5,
|
||||
PWM3_CH6=TCC3_CH6,
|
||||
PWM3_CH7=TCC3_CH7,
|
||||
PWM4_CH0=TCC4_CH0,
|
||||
PWM4_CH1=TCC4_CH1,
|
||||
PWM4_CH2=TCC4_CH2,
|
||||
PWM4_CH3=TCC4_CH3,
|
||||
PWM4_CH4=TCC4_CH4,
|
||||
PWM4_CH5=TCC4_CH5,
|
||||
PWM4_CH6=TCC4_CH6,
|
||||
PWM4_CH7=TCC4_CH7,
|
||||
|
||||
PWM5_CH0=TC0_CH0,
|
||||
PWM5_CH1=TC0_CH1,
|
||||
PWM6_CH0=TC1_CH0,
|
||||
PWM6_CH1=TC1_CH1,
|
||||
PWM7_CH0=TC2_CH0,
|
||||
PWM7_CH1=TC2_CH1,
|
||||
PWM8_CH0=TC3_CH0,
|
||||
PWM8_CH1=TC3_CH1,
|
||||
PWM9_CH0=TC4_CH0,
|
||||
PWM9_CH1=TC4_CH1,
|
||||
PWM10_CH0=TC5_CH0,
|
||||
PWM10_CH1=TC5_CH1,
|
||||
PWM11_CH0=TC6_CH0,
|
||||
PWM11_CH1=TC6_CH1,
|
||||
PWM12_CH0=TC7_CH0,
|
||||
PWM12_CH1=TC7_CH1,
|
||||
} EPWMChannel ;
|
||||
|
||||
#else //end __SAMD51J19A__
|
||||
|
|
@ -216,6 +282,7 @@ typedef enum _EPortType
|
|||
PORTA=0,
|
||||
PORTB=1,
|
||||
PORTC=2,
|
||||
PORTD=3,
|
||||
} EPortType ;
|
||||
|
||||
#define PIN_NOT_A_PIN (UINT_MAX)
|
||||
|
|
@ -244,6 +311,34 @@ typedef enum
|
|||
EXTERNAL_INT_NONE = NOT_AN_INTERRUPT,
|
||||
} EExt_Interrupts ;
|
||||
|
||||
#if defined(__SAMD51__)
|
||||
|
||||
typedef enum _EPioType
|
||||
{
|
||||
PIO_NOT_A_PIN=-1, /* Not under control of a peripheral. */
|
||||
PIO_EXTINT=0, /* The pin is controlled by the associated signal of peripheral A. */
|
||||
PIO_ANALOG, /* The pin is controlled by the associated signal of peripheral B. */
|
||||
PIO_SERCOM, /* The pin is controlled by the associated signal of peripheral C. */
|
||||
PIO_SERCOM_ALT, /* The pin is controlled by the associated signal of peripheral D. */
|
||||
PIO_TC, /* The pin is controlled by the associated signal of peripheral E. */
|
||||
PIO_TCC, /* The pin is controlled by the associated signal of peripheral F. */
|
||||
PIO_TCC_PDEC, /* The pin is controlled by the associated signal of peripheral G. */
|
||||
PIO_COM, /* The pin is controlled by the associated signal of peripheral H. */
|
||||
PIO_SDHC, /* The pin is controlled by the associated signal of peripheral I. */
|
||||
PIO_I2S, /* The pin is controlled by the associated signal of peripheral J. */
|
||||
PIO_PCC, /* The pin is controlled by the associated signal of peripheral K. */
|
||||
PIO_GMAC, /* The pin is controlled by the associated signal of peripheral L. */
|
||||
PIO_AC_CLK, /* The pin is controlled by the associated signal of peripheral M. */
|
||||
PIO_CCL, /* The pin is controlled by the associated signal of peripheral N. */
|
||||
|
||||
PIO_DIGITAL, /* The pin is controlled by PORT. */
|
||||
PIO_INPUT, /* The pin is controlled by PORT and is an input. */
|
||||
PIO_INPUT_PULLUP, /* The pin is controlled by PORT and is an input with internal pull-up resistor enabled. */
|
||||
PIO_OUTPUT, /* The pin is controlled by PORT and is an output. */
|
||||
|
||||
} EPioType ;
|
||||
|
||||
#else
|
||||
//A B C D E F G H
|
||||
//EIC REF ADC AC PTC DAC SERCOM SERCOM_ALT TC/TCC TCC COM AC/GCLK
|
||||
|
||||
|
|
@ -256,19 +351,9 @@ typedef enum _EPioType
|
|||
PIO_SERCOM_ALT, /* The pin is controlled by the associated signal of peripheral D. */
|
||||
PIO_TIMER, /* The pin is controlled by the associated signal of peripheral E. */
|
||||
PIO_TIMER_ALT, /* The pin is controlled by the associated signal of peripheral F. */
|
||||
#if defined(__SAMD51__)
|
||||
PIO_TCC_PDEC, /* The pin is controlled by the associated signal of peripheral G. */
|
||||
PIO_COM, /* The pin is controlled by the associated signal of peripheral H. */
|
||||
PIO_SDHC, /* The pin is controlled by the associated signal of peripheral I. */
|
||||
PIO_I2S, /* The pin is controlled by the associated signal of peripheral J. */
|
||||
PIO_PCC, /* The pin is controlled by the associated signal of peripheral K. */
|
||||
PIO_GMAC, /* The pin is controlled by the associated signal of peripheral L. */
|
||||
PIO_AC_CLK, /* The pin is controlled by the associated signal of peripheral M. */
|
||||
PIO_CCL, /* The pin is controlled by the associated signal of peripheral N. */
|
||||
#else
|
||||
PIO_COM, /* The pin is controlled by the associated signal of peripheral G. */
|
||||
PIO_AC_CLK, /* The pin is controlled by the associated signal of peripheral H. */
|
||||
#endif
|
||||
|
||||
PIO_DIGITAL, /* The pin is controlled by PORT. */
|
||||
PIO_INPUT, /* The pin is controlled by PORT and is an input. */
|
||||
PIO_INPUT_PULLUP, /* The pin is controlled by PORT and is an input with internal pull-up resistor enabled. */
|
||||
|
|
@ -277,6 +362,7 @@ typedef enum _EPioType
|
|||
PIO_PWM=PIO_TIMER,
|
||||
PIO_PWM_ALT=PIO_TIMER_ALT,
|
||||
} EPioType ;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Pin Attributes to be OR-ed
|
||||
|
|
@ -290,6 +376,12 @@ typedef enum _EPioType
|
|||
#define PIN_ATTR_TIMER_ALT (1UL<<5)
|
||||
#define PIN_ATTR_EXTINT (1UL<<6)
|
||||
|
||||
#if defined(__SAMD51__)
|
||||
#define PIN_ATTR_PWM_TC (1UL<<7)
|
||||
#define PIN_ATTR_PWM_TCC (1UL<<8)
|
||||
#define PIN_ATTR_PWM_TCC_PDEC (1UL<<9)
|
||||
#endif
|
||||
|
||||
/* Types used for the table below */
|
||||
typedef struct _PinDescription
|
||||
{
|
||||
|
|
|
|||
|
|
@ -253,6 +253,8 @@ uint32_t analogRead(uint32_t pin)
|
|||
#endif
|
||||
|
||||
#if defined(__SAMD51__)
|
||||
//TODO: This should use ADC1 depending on the channel
|
||||
|
||||
while( ADC0->SYNCBUSY.reg & ADC_SYNCBUSY_INPUTCTRL ); //wait for sync
|
||||
ADC0->INPUTCTRL.bit.MUXPOS = g_APinDescription[pin].ulADCChannelNumber; // Selection for the positive ADC input
|
||||
|
||||
|
|
@ -424,32 +426,24 @@ void analogWrite(uint32_t pin, uint32_t value)
|
|||
}
|
||||
#endif
|
||||
|
||||
if ((attr & PIN_ATTR_PWM) == PIN_ATTR_PWM)
|
||||
#if defined(__SAMD51__)
|
||||
if ((attr & PIN_ATTR_PWM_TC) == PIN_ATTR_PWM_TC ||
|
||||
(attr & PIN_ATTR_PWM_TC) == PIN_ATTR_PWM_TCC ||
|
||||
(attr & PIN_ATTR_PWM_TC) == PIN_ATTR_PWM_TCC_PDEC )
|
||||
{
|
||||
|
||||
uint32_t tcNum = GetTCNumber(pinDesc.ulPWMChannel);
|
||||
uint8_t tcChannel = GetTCChannelNumber(pinDesc.ulPWMChannel);
|
||||
static bool tcEnabled[TCC_INST_NUM+TC_INST_NUM];
|
||||
|
||||
if (attr & PIN_ATTR_TIMER) {
|
||||
#if !(ARDUINO_SAMD_VARIANT_COMPLIANCE >= 10603)
|
||||
// Compatibility for cores based on SAMD core <=1.6.2
|
||||
if (pinDesc.ulPinType == PIO_TIMER_ALT) {
|
||||
pinPeripheral(pin, PIO_TIMER_ALT);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
|
||||
#if defined(__SAMD51__)
|
||||
//on SAMD51 we are only using TCC for timers
|
||||
pinPeripheral(pin, PIO_TCC_PDEC);
|
||||
#else
|
||||
pinPeripheral(pin, PIO_TIMER);
|
||||
#endif
|
||||
}
|
||||
} else if ((attr & PIN_ATTR_TIMER_ALT) == PIN_ATTR_TIMER_ALT){
|
||||
//this is on an alt timer
|
||||
pinPeripheral(pin, PIO_TIMER_ALT);
|
||||
if ((attr & PIN_ATTR_PWM_TC) == PIN_ATTR_PWM_TC) {
|
||||
pinPeripheral(pin, PIO_TC);
|
||||
} else if ((attr & PIN_ATTR_PWM_TCC) == PIN_ATTR_PWM_TCC){
|
||||
//this is on a TCC
|
||||
pinPeripheral(pin, PIO_TCC);
|
||||
} else if ((attr & PIN_ATTR_PWM_TCC_PDEC) == PIN_ATTR_PWM_TCC_PDEC){
|
||||
//this is on a TCC_PDEC
|
||||
pinPeripheral(pin, PIO_TCC_PDEC);
|
||||
}
|
||||
else{
|
||||
return;
|
||||
|
|
@ -458,7 +452,6 @@ void analogWrite(uint32_t pin, uint32_t value)
|
|||
if (!tcEnabled[tcNum]) {
|
||||
tcEnabled[tcNum] = true;
|
||||
|
||||
#if defined(__SAMD51__)
|
||||
uint32_t GCLK_CLKCTRL_IDs[] = {
|
||||
TCC0_GCLK_ID,
|
||||
TCC1_GCLK_ID,
|
||||
|
|
@ -466,8 +459,31 @@ void analogWrite(uint32_t pin, uint32_t value)
|
|||
#if defined(TCC3)
|
||||
TCC3_GCLK_ID,
|
||||
TCC4_GCLK_ID,
|
||||
#endif
|
||||
#if defined(TC0)
|
||||
TC0_GCLK_ID,
|
||||
#endif
|
||||
#if defined(TC1)
|
||||
TC1_GCLK_ID,
|
||||
#endif
|
||||
#if defined(TC2)
|
||||
TC2_GCLK_ID,
|
||||
#endif
|
||||
#if defined(TC3)
|
||||
TC3_GCLK_ID,
|
||||
#endif
|
||||
#if defined(TC4)
|
||||
TC4_GCLK_ID,
|
||||
#endif
|
||||
#if defined(TC5)
|
||||
TC5_GCLK_ID,
|
||||
#endif
|
||||
#if defined(TC6)
|
||||
TC6_GCLK_ID,
|
||||
#endif
|
||||
#if defined(TC7)
|
||||
TC7_GCLK_ID,
|
||||
#endif
|
||||
};
|
||||
|
||||
GCLK->PCHCTRL[GCLK_CLKCTRL_IDs[tcNum]].reg = GCLK_PCHCTRL_GEN_GCLK0_Val | (1 << GCLK_PCHCTRL_CHEN_Pos); //use clock generator 0
|
||||
|
|
@ -543,6 +559,35 @@ void analogWrite(uint32_t pin, uint32_t value)
|
|||
}
|
||||
|
||||
#else
|
||||
if ((attr & PIN_ATTR_PWM) == PIN_ATTR_PWM)
|
||||
{
|
||||
|
||||
uint32_t tcNum = GetTCNumber(pinDesc.ulPWMChannel);
|
||||
uint8_t tcChannel = GetTCChannelNumber(pinDesc.ulPWMChannel);
|
||||
static bool tcEnabled[TCC_INST_NUM+TC_INST_NUM];
|
||||
|
||||
if (attr & PIN_ATTR_TIMER) {
|
||||
#if !(ARDUINO_SAMD_VARIANT_COMPLIANCE >= 10603)
|
||||
// Compatibility for cores based on SAMD core <=1.6.2
|
||||
if (pinDesc.ulPinType == PIO_TIMER_ALT) {
|
||||
pinPeripheral(pin, PIO_TIMER_ALT);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
|
||||
pinPeripheral(pin, PIO_TIMER);
|
||||
}
|
||||
} else if ((attr & PIN_ATTR_TIMER_ALT) == PIN_ATTR_TIMER_ALT){
|
||||
//this is on an alt timer
|
||||
pinPeripheral(pin, PIO_TIMER_ALT);
|
||||
}
|
||||
else{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!tcEnabled[tcNum]) {
|
||||
tcEnabled[tcNum] = true;
|
||||
|
||||
uint16_t GCLK_CLKCTRL_IDs[] = {
|
||||
GCLK_CLKCTRL_ID(GCM_TCC0_TCC1), // TCC0
|
||||
GCLK_CLKCTRL_ID(GCM_TCC0_TCC1), // TCC1
|
||||
|
|
|
|||
|
|
@ -65,10 +65,10 @@ int pinPeripheral( uint32_t ulPin, EPioType ulPeripheral )
|
|||
case PIO_ANALOG:
|
||||
case PIO_SERCOM:
|
||||
case PIO_SERCOM_ALT:
|
||||
case PIO_TIMER:
|
||||
case PIO_TIMER_ALT:
|
||||
case PIO_EXTINT:
|
||||
#if defined(__SAMD51__)
|
||||
case PIO_TC:
|
||||
case PIO_TCC:
|
||||
case PIO_TCC_PDEC:
|
||||
case PIO_COM:
|
||||
case PIO_SDHC:
|
||||
|
|
@ -78,6 +78,8 @@ int pinPeripheral( uint32_t ulPin, EPioType ulPeripheral )
|
|||
case PIO_AC_CLK:
|
||||
case PIO_CCL:
|
||||
#else
|
||||
case PIO_TIMER:
|
||||
case PIO_TIMER_ALT:
|
||||
case PIO_COM:
|
||||
case PIO_AC_CLK:
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -32,22 +32,22 @@ const PinDescription g_APinDescription[]=
|
|||
|
||||
// 2..12
|
||||
// Digital Low
|
||||
{ PORTC, 18, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_2 },
|
||||
{ PORTC, 19, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_3 },
|
||||
{ PORTC, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_4 },
|
||||
{ PORTC, 21, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH5, TCC0_CH5, EXTERNAL_INT_5 },
|
||||
{ PORTD, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_10 },
|
||||
{ PORTD, 21, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_11 },
|
||||
{ PORTC, 18, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_2 },
|
||||
{ PORTC, 19, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_3 },
|
||||
{ PORTC, 20, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_4 },
|
||||
{ PORTC, 21, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH5, TCC0_CH5, EXTERNAL_INT_5 },
|
||||
{ PORTD, 20, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_10 },
|
||||
{ PORTD, 21, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_11 },
|
||||
|
||||
// Digital High
|
||||
{ PORTB, 18, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_2 },
|
||||
{ PORTB, 19, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_3 },
|
||||
{ PORTB, 22, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM13_CH0, TC7_CH0, EXTERNAL_INT_6 },
|
||||
{ PORTB, 23, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM13_CH1, TC7_CH1, EXTERNAL_INT_7 },
|
||||
{ PORTB, 0, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM13_CH0, TC7_CH0, EXTERNAL_INT_0 },
|
||||
{ PORTB, 18, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_2 },
|
||||
{ PORTB, 19, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_3 },
|
||||
{ PORTB, 22, PIO_TC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TC), No_ADC_Channel, PWM12_CH0, TC7_CH0, EXTERNAL_INT_6 },
|
||||
{ PORTB, 23, PIO_TC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TC), No_ADC_Channel, PWM12_CH1, TC7_CH1, EXTERNAL_INT_7 },
|
||||
{ PORTB, 0, PIO_TC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TC), No_ADC_Channel, PWM12_CH0, TC7_CH0, EXTERNAL_INT_0 },
|
||||
|
||||
// 13 (LED)
|
||||
{ PORTB, 1, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM13_CH1, TC7_CH1, EXTERNAL_INT_1 },
|
||||
{ PORTB, 1, PIO_TC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TC), No_ADC_Channel, PWM12_CH1, TC7_CH1, EXTERNAL_INT_1 },
|
||||
|
||||
// 14..21 - Analog pins
|
||||
// --------------------
|
||||
|
|
@ -65,42 +65,42 @@ const PinDescription g_APinDescription[]=
|
|||
// 22..29
|
||||
{ NOT_A_PORT, 0, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
|
||||
{ NOT_A_PORT, 0, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
|
||||
{ PORTC, 17, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_1 },
|
||||
{ PORTC, 16, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_0 },
|
||||
{ PORTA, 12, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH2, TCC1_CH2, EXTERNAL_INT_12 },
|
||||
{ PORTA, 13, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_14 },
|
||||
{ PORTA, 14, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_14 },,
|
||||
{ PORTC, 17, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_1 },
|
||||
{ PORTC, 16, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_0 },
|
||||
{ PORTA, 12, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC_PDEC), No_ADC_Channel, PWM1_CH2, TCC1_CH2, EXTERNAL_INT_12 },
|
||||
{ PORTA, 13, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC_PDEC), No_ADC_Channel, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_14 },
|
||||
{ PORTA, 14, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_14 },
|
||||
{ NOT_A_PORT, 0, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
|
||||
|
||||
// 30..37
|
||||
{ PORTA, 23, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH7, TCC1_CH7, EXTERNAL_INT_7 },
|
||||
{ PORTA, 22, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH6, TCC1_CH6, EXTERNAL_INT_6 },
|
||||
{ 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 },
|
||||
{ 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 },
|
||||
{ PORTA, 19, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_3 },
|
||||
{ PORTA, 18, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH2, TCC1_CH2, EXTERNAL_INT_2 },
|
||||
{ PORTA, 17, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_1 },
|
||||
{ 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 },
|
||||
{ PORTA, 23, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH7, TCC1_CH7, EXTERNAL_INT_7 },
|
||||
{ PORTA, 22, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH6, TCC1_CH6, EXTERNAL_INT_6 },
|
||||
{ PORTA, 21, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH5, TCC1_CH5, EXTERNAL_INT_5 },
|
||||
{ PORTA, 20, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH4, TCC1_CH4, EXTERNAL_INT_4 },
|
||||
{ PORTA, 19, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_3 },
|
||||
{ PORTA, 18, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH2, TCC1_CH2, EXTERNAL_INT_2 },
|
||||
{ PORTA, 17, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_1 },
|
||||
{ PORTA, 16, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_0 },
|
||||
|
||||
// 38..45
|
||||
{ PORTB, 15, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM4_CH1, TCC4_CH1, EXTERNAL_INT_15 },
|
||||
{ PORTB, 14, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM4_CH0, TCC4_CH0, EXTERNAL_INT_14 },
|
||||
{ PORTC, 13, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_13 },
|
||||
{ PORTC, 12, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_12 },
|
||||
{ PORTC, 15, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH5, TCC0_CH5, EXTERNAL_INT_15 },
|
||||
{ PORTC, 14, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH4, TCC0_CH6, EXTERNAL_INT_14 },
|
||||
{ PORTC, 11, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_11 },
|
||||
{ PORTC, 10, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_10 },
|
||||
{ PORTB, 15, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM4_CH1, TCC4_CH1, EXTERNAL_INT_15 },
|
||||
{ PORTB, 14, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM4_CH0, TCC4_CH0, EXTERNAL_INT_14 },
|
||||
{ PORTC, 13, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_13 },
|
||||
{ PORTC, 12, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_12 },
|
||||
{ PORTC, 15, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH5, TCC0_CH5, EXTERNAL_INT_15 },
|
||||
{ PORTC, 14, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH4, TCC0_CH6, EXTERNAL_INT_14 },
|
||||
{ PORTC, 11, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_11 },
|
||||
{ PORTC, 10, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_10 },
|
||||
|
||||
// 46..53
|
||||
{ PORTC, 6, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 },
|
||||
{ PORTC, 7, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 },
|
||||
{ PORTC, 4, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_4 },
|
||||
{ PORTC, 4, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_4 },
|
||||
{ PORTC, 5, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 },
|
||||
{ PORTD, 11, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_11 }, //same as MISO
|
||||
{ PORTD, 8, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_8 }, //same as MOSI
|
||||
{ PORTD, 9, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_9 }, //same as SCK
|
||||
{ PORTD, 10, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_10 }, //same as SS
|
||||
{ PORTD, 11, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_11 }, //same as MISO
|
||||
{ PORTD, 8, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_8 }, //same as MOSI
|
||||
{ PORTD, 9, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_9 }, //same as SCK
|
||||
{ PORTD, 10, PIO_TCC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_10 }, //same as SS
|
||||
|
||||
// 54..61 - Additional ADC
|
||||
{ PORTB, 5, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel23, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 },
|
||||
|
|
@ -108,48 +108,48 @@ const PinDescription g_APinDescription[]=
|
|||
{ PORTB, 7, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel25, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_7 },
|
||||
{ PORTB, 8, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel16, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8 },
|
||||
{ PORTB, 9, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel17, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_9 },
|
||||
{ PORTA, 4, PIO_ANALOG, (PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel4, PWM5_CH0, TC0_CH0, EXTERNAL_INT_4 },
|
||||
{ PORTA, 6, PIO_ANALOG, (PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel6, PWM6_CH0, TC1_CH0, EXTERNAL_INT_6 },
|
||||
{ PORTA, 7, PIO_ANALOG, (PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), ADC_Channel7, PWM6_CH1, TC1_CH1, EXTERNAL_INT_7 },
|
||||
{ PORTA, 4, PIO_ANALOG, (PIN_ATTR_ANALOG|PIN_ATTR_PWM_TC), ADC_Channel4, PWM5_CH0, TC0_CH0, EXTERNAL_INT_4 },
|
||||
{ PORTA, 6, PIO_ANALOG, (PIN_ATTR_ANALOG|PIN_ATTR_PWM_TC), ADC_Channel6, PWM6_CH0, TC1_CH0, EXTERNAL_INT_6 },
|
||||
{ PORTA, 7, PIO_ANALOG, (PIN_ATTR_ANALOG|PIN_ATTR_PWM_TC), ADC_Channel7, PWM6_CH1, TC1_CH1, EXTERNAL_INT_7 },
|
||||
|
||||
// 62..63 - I2C pins (SDA/SCL)
|
||||
// ----------------------
|
||||
{ PORTB, 20, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE }, //sda
|
||||
{ PORTB, 21, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE }, //scl
|
||||
{ PORTB, 20, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH2, TCC1_CH2, EXTERNAL_INT_4 }, //sda
|
||||
{ PORTB, 21, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_5 }, //scl
|
||||
|
||||
// 64..66 - SPI pins (ICSP:MISO,SCK,MOSI)
|
||||
// ----------------------
|
||||
{ PORTD, 11, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTD, 8, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTD, 9, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTD, 11, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_6 },
|
||||
{ PORTD, 8, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_3 },
|
||||
{ PORTD, 9, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_4 },
|
||||
|
||||
//67..74 - UARTS
|
||||
{ PORTB, 16, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 17, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTC, 22, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTC, 23, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 12, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 13, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 20, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE }, //same as sda
|
||||
{ PORTB, 21, PIO_SERCOM_FAKE, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE }, //same as scl
|
||||
{ PORTB, 16, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM3_CH0, TCC3_CH0, EXTERNAL_INT_0 },
|
||||
{ PORTB, 17, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM3_CH1, TCC3_CH1, EXTERNAL_INT_1 },
|
||||
{ PORTC, 22, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_6 },
|
||||
{ PORTC, 23, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM0_CH7, TCC0_CH7, EXTERNAL_INT_6 },
|
||||
{ PORTB, 12, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TC), No_ADC_Channel, PWM9_CH0, TC4_CH0, EXTERNAL_INT_12 },
|
||||
{ PORTB, 13, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TC), No_ADC_Channel, PWM9_CH1, TC4_CH1, EXTERNAL_INT_13 },
|
||||
{ PORTB, 20, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH2, TCC1_CH2, EXTERNAL_INT_4 }, //same as sda
|
||||
{ PORTB, 21, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TCC), No_ADC_Channel, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_5 }, //same as scl
|
||||
|
||||
// 75..76 - RX/TX LEDS
|
||||
// --------------------
|
||||
{ PORTC, 31, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE }, // used as output only
|
||||
{ PORTC, 30, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE }, // used as output only
|
||||
{ PORTC, 31, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only
|
||||
{ PORTC, 30, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only
|
||||
|
||||
// 77..79 - USB
|
||||
// --------------------
|
||||
{ PORTA, 27, PIO_COM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE }, // USB Host enable
|
||||
{ PORTA, 27, PIO_COM, PIN_ATTR_DIGITAL, 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_8 }, // USB/DM
|
||||
{ PORTA, 25, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_9 }, // USB/DP
|
||||
|
||||
// 80..83 - SD SPI pins (SD:MISO,SCK,MOSI,CS)
|
||||
// ----------------------
|
||||
{ PORTB, 29, PIO_SERCOM_FAKE, PIO_SERCOM, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 27, PIO_SERCOM_FAKE, PIO_SERCOM, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 26, PIO_SERCOM_FAKE, PIO_SERCOM, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 28, PIO_SERCOM_FAKE, PIO_SERCOM, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 29, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
|
||||
{ PORTB, 27, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
|
||||
{ PORTB, 26, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
|
||||
{ PORTB, 28, PIO_SERCOM, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
|
||||
|
||||
// 84 (AREF)
|
||||
{ PORTA, 3, PIO_ANALOG, PIN_ATTR_ANALOG, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_3 }, // DAC/VREFP
|
||||
|
|
@ -160,10 +160,10 @@ const PinDescription g_APinDescription[]=
|
|||
{ PORTA, 5, PIO_ANALOG, PIN_ATTR_ANALOG, DAC_Channel1, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, // DAC/VOUT[1]
|
||||
|
||||
// 87 - LED #13 duplicate placeholder
|
||||
{ PORTB, 1, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE },
|
||||
{ PORTB, 1, PIO_TC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM_TC), No_ADC_Channel, PWM12_CH1, TC7_CH1, EXTERNAL_INT_1 },
|
||||
|
||||
// 88 - Internal NeoPixel
|
||||
{ PORTC, 24, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_FAKE }, // used as output only
|
||||
{ PORTC, 24, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // used as output only
|
||||
|
||||
// ----------------------
|
||||
// 89 - 94 QSPI (SCK, CS, IO0, IO1, IO2, IO3)
|
||||
|
|
|
|||
Loading…
Reference in a new issue