Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 46ca790

Browse files
committedNov 20, 2015
Added PIN_ATTR_TIMER_ALT attribute for correct timer selection
The selection of the correct timer peripheral is now decided through the PIN_ATTR_{TIMER/TIMER_ALT} attribute.
1 parent 04bda59 commit 46ca790

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed
 

‎cores/arduino/WVariant.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,8 @@ typedef enum _EPioType
190190
#define PIN_ATTR_DIGITAL (1UL<<2)
191191
#define PIN_ATTR_PWM (1UL<<3)
192192
#define PIN_ATTR_TIMER (1UL<<4)
193-
#define PIN_ATTR_EXTINT (1UL<<5)
193+
#define PIN_ATTR_TIMER_ALT (1UL<<5)
194+
#define PIN_ATTR_EXTINT (1UL<<6)
194195

195196
/* Types used for the table below */
196197
typedef struct _PinDescription

‎cores/arduino/wiring_analog.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,10 @@ void analogWrite( uint32_t ulPin, uint32_t ulValue )
223223

224224
if ( (attr & PIN_ATTR_PWM) == PIN_ATTR_PWM )
225225
{
226-
if ( (g_APinDescription[ulPin].ulPinType == PIO_TIMER) || g_APinDescription[ulPin].ulPinType == PIO_TIMER_ALT )
227-
{
228-
pinPeripheral( ulPin, g_APinDescription[ulPin].ulPinType ) ;
226+
if (attr & PIN_ATTR_TIMER) {
227+
pinPeripheral(ulPin, PIO_TIMER);
228+
} else { // attr should have PIN_ATTR_TIMER_ALT bit set...
229+
pinPeripheral(ulPin, PIO_TIMER_ALT);
229230
}
230231

231232
Tc* TCx = 0 ;

‎variants/arduino_zero/variant.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,15 @@ const PinDescription g_APinDescription[]=
123123
{ 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]
124124
{ 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]
125125
{ 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]
126-
{ 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]
126+
{ PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // TCC0/WO[6]
127127
{ PORTA, 21, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 },
128128

129129
// Digital High
130130
{ PORTA, 6, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_6 }, // TCC1/WO[0]
131131
{ PORTA, 7, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // TCC1/WO[1]
132132
{ 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]
133133
{ 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]
134-
{ 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]
134+
{ PORTA, 19, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_3 }, // TCC0/WO[3]
135135

136136
// 13 (LED)
137137
{ PORTA, 17, PIO_PWM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM2_CH1, NOT_ON_TIMER, EXTERNAL_INT_1 }, // TCC2/WO[1]

0 commit comments

Comments
 (0)
Please sign in to comment.