Hallo,
ich habe folgendes Problem und bräuchte einen Schubser in die richtige Richtung:
Auf Basis eines SAMD21G18-µCs erstelle ich gerade eine Variant.
In der variant.cpp will ich Pin 39 (PA27) mittels PIO_TIMER_ALT der TCC3 auf Kanal 6 zuweisen (vgl. Datenblatt S.29):
{PORTA, 27, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH6, TCC3_CH6, EXTERNAL_INT_NONE}
Das Problem ist, in der WVariant.h ist TCC3 nicht vorgesehen:
typedef enum _ETCChannel
{
NOT_ON_TIMER=-1,
TCC0_CH0 = (0<<8)|(0),
TCC0_CH1 = (0<<8)|(1),
TCC0_CH2 = (0<<8)|(2),
TCC0_CH3 = (0<<8)|(3),
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),
TCC1_CH2 = (1<<8)|(0), // Channel 2 is 0!
TCC1_CH3 = (1<<8)|(1), // Channel 3 is 1!
TCC2_CH0 = (2<<8)|(0),
TCC2_CH1 = (2<<8)|(1),
TCC2_CH2 = (2<<8)|(0), // Channel 2 is 0!
TCC2_CH3 = (2<<8)|(1), // Channel 3 is 1!
TC3_CH0 = (3<<8)|(0),
TC3_CH1 = (3<<8)|(1),
TC4_CH0 = (4<<8)|(0),
TC4_CH1 = (4<<8)|(1),
TC5_CH0 = (5<<8)|(0),
TC5_CH1 = (5<<8)|(1),
#if defined __SAMD21J18A__
TC6_CH0 = (6<<8)|(0),
TC6_CH1 = (6<<8)|(1),
TC7_CH0 = (7<<8)|(0),
TC7_CH1 = (7<<8)|(1),
#endif // __SAMD21J18A__
} ETCChannel ;
Meine Frage also: wie überzeuge ich meinen Arduino-Eigenbau davon, für diesen Pin den TCC3_CH6 zu verwenden? Bzw. in welcher Datei werden die Zuweisungen aus WVariant.h verwendet, dass ich mir die Zahl selbst zusammenbauen könnte?