Skip to content

Commit 1260270

Browse files
authored
Merge pull request arduino#42 from adafruit/dm-pwm
update pwms, timer definitions
2 parents ca2ab9d + 42aa484 commit 1260270

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

cores/arduino/wiring_analog.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -444,9 +444,12 @@ void analogWrite(uint32_t pin, uint32_t value)
444444
pinPeripheral(pin, PIO_TIMER);
445445
#endif
446446
}
447-
} else {
448-
// We suppose that attr has PIN_ATTR_TIMER_ALT bit set...
449-
pinPeripheral(pin, PIO_TIMER_ALT);
447+
} else if ((attr & PIN_ATTR_TIMER_ALT) == PIN_ATTR_TIMER_ALT){
448+
//this is on an alt timer
449+
pinPeripheral(pin, PIO_TIMER_ALT);
450+
}
451+
else{
452+
return;
450453
}
451454

452455
if (!tcEnabled[tcNum]) {

variants/metro_m4/variant.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,27 +26,27 @@ const PinDescription g_APinDescription[]=
2626
// 0..13 - Digital pins
2727
// ----------------------
2828
// 0/1 - SERCOM/UART (Serial1)
29-
{ 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]
30-
{ 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]
29+
{ PORTA, 23, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH7, TCC1_CH7, EXTERNAL_INT_7 }, // RX: SERCOM3/PAD[1]
30+
{ PORTA, 22, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM1_CH6, TCC1_CH6, EXTERNAL_INT_6 }, // TX: SERCOM3/PAD[0]
3131

3232
// 2..12
3333
// Digital Low
34-
{ PORTB, 17, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH5, NOT_ON_TIMER, EXTERNAL_INT_1 },
35-
{ PORTB, 16, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH4, NOT_ON_TIMER, EXTERNAL_INT_0 },
36-
{ PORTB, 13, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH1, NOT_ON_TIMER, EXTERNAL_INT_13 },
37-
{ PORTB, 14, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH2, NOT_ON_TIMER, EXTERNAL_INT_14 },
38-
{ PORTB, 15, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH3, NOT_ON_TIMER, EXTERNAL_INT_15 },
39-
{ PORTB, 12, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH0, NOT_ON_TIMER, EXTERNAL_INT_12 },
34+
{ PORTB, 17, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH5, TCC0_CH5, EXTERNAL_INT_1 },
35+
{ PORTB, 16, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_0 },
36+
{ PORTB, 13, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_13 },
37+
{ PORTB, 14, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_14 },
38+
{ PORTB, 15, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_15 },
39+
{ PORTB, 12, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_12 },
4040

4141
// Digital High
42-
{ PORTA, 21, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH5, NOT_ON_TIMER, EXTERNAL_INT_5 },
43-
{ PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH4, NOT_ON_TIMER, EXTERNAL_INT_4 },
44-
{ PORTA, 18, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH2, NOT_ON_TIMER, EXTERNAL_INT_2 },
45-
{ PORTA, 19, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH3, NOT_ON_TIMER, EXTERNAL_INT_3 },
46-
{ PORTA, 17, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH1, NOT_ON_TIMER, EXTERNAL_INT_1 },
42+
{ 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 },
43+
{ 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 },
44+
{ 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 },
45+
{ 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 },
46+
{ 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 },
4747

4848
// 13 (LED)
49-
{ PORTA, 16, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH0, NOT_ON_TIMER, EXTERNAL_INT_0 },
49+
{ 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 },
5050

5151
// 14..19 - Analog pins
5252
// --------------------

0 commit comments

Comments
 (0)