@@ -70,18 +70,29 @@ typedef enum _ETCChannel
7070 TCC0_CH3 = (0 <<8 )|(3 ),
7171 TCC0_CH4 = (0 <<8 )|(4 ),
7272 TCC0_CH5 = (0 <<8 )|(5 ),
73- TCC0_CH6 = (0 <<8 )|(6 ),
74- TCC0_CH7 = (0 <<8 )|(7 ),
7573 TCC1_CH0 = (1 <<8 )|(0 ),
7674 TCC1_CH1 = (1 <<8 )|(1 ),
7775 TCC1_CH2 = (1 <<8 )|(2 ),
7876 TCC1_CH3 = (1 <<8 )|(3 ),
79- TCC1_CH4 = (1 <<8 )|(0 ),
80- TCC1_CH5 = (1 <<8 )|(1 ),
81- TCC1_CH6 = (1 <<8 )|(2 ),
82- TCC1_CH7 = (1 <<8 )|(3 ),
77+ TCC2_CH0 = (2 <<8 )|(0 ),
78+ TCC2_CH1 = (2 <<8 )|(1 ),
79+ TCC2_CH2 = (2 <<8 )|(2 ),
80+ TCC2_CH3 = (2 <<8 )|(3 ),
81+ TC0_CH0 = (3 <<8 )|(0 ),
82+ TC0_CH1 = (3 <<8 )|(1 ),
83+ TC1_CH0 = (4 <<8 )|(0 ),
84+ TC1_CH1 = (4 <<8 )|(1 ),
85+ TC2_CH0 = (5 <<8 )|(0 ),
86+ TC2_CH1 = (5 <<8 )|(1 ),
87+ TC3_CH0 = (6 <<8 )|(0 ),
88+ TC3_CH1 = (6 <<8 )|(1 ),
8389} ETCChannel ;
8490
91+ typedef ETCChannel EPWMChannel ;
92+ extern const uint32_t GCLK_CLKCTRL_IDs [TCC_INST_NUM + TC_INST_NUM ];
93+
94+ #define NOT_ON_PWM NOT_ON_TIMER
95+
8596#else
8697// Definitions for TC channels
8798typedef enum _ETCChannel
@@ -110,6 +121,39 @@ typedef enum _ETCChannel
110121 TC5_CH0 = (5 <<8 )|(0 ),
111122 TC5_CH1 = (5 <<8 )|(1 ),
112123} ETCChannel ;
124+
125+ // Definitions for PWM channels
126+ typedef enum _EPWMChannel
127+ {
128+ NOT_ON_PWM = -1 ,
129+ PWM0_CH0 = TCC0_CH0 ,
130+ PWM0_CH1 = TCC0_CH1 ,
131+ PWM0_CH2 = TCC0_CH2 ,
132+ PWM0_CH3 = TCC0_CH3 ,
133+ PWM0_CH4 = TCC0_CH4 ,
134+ PWM0_CH5 = TCC0_CH5 ,
135+ PWM1_CH0 = TCC1_CH0 ,
136+ PWM1_CH1 = TCC1_CH1 ,
137+ PWM1_CH2 = TCC1_CH2 ,
138+ PWM1_CH3 = TCC1_CH3 ,
139+ PWM2_CH0 = TCC2_CH0 ,
140+ PWM2_CH1 = TCC2_CH1 ,
141+ PWM2_CH2 = TCC2_CH2 ,
142+ PWM2_CH3 = TCC2_CH3 ,
143+ PWM3_CH0 = TC3_CH0 ,
144+ PWM3_CH1 = TC3_CH1 ,
145+ PWM4_CH0 = TC4_CH0 ,
146+ PWM4_CH1 = TC4_CH1 ,
147+ PWM5_CH0 = TC5_CH0 ,
148+ PWM5_CH1 = TC5_CH1 ,
149+ #if defined(__SAMD21J18A__ )
150+ PWM6_CH0 = TC6_CH0 ,
151+ PWM6_CH1 = TC6_CH1 ,
152+ PWM7_CH0 = TC7_CH0 ,
153+ PWM7_CH1 = TC7_CH1 ,
154+ #endif // __SAMD21J18A__
155+ } EPWMChannel ;
156+
113157#endif
114158
115159extern const void * g_apTCInstances [TCC_INST_NUM + TC_INST_NUM ] ;
@@ -118,68 +162,6 @@ extern const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM] ;
118162#define GetTCChannelNumber ( x ) ( (x) & 0xff )
119163#define GetTC ( x ) ( g_apTCInstances[(x) >> 8] )
120164
121-
122- #if defined(__SAMD51__ )
123-
124- typedef enum _EPWMChannel
125- {
126- NOT_ON_PWM = -1 ,
127- PWM0_CH0 = TCC0_CH0 ,
128- PWM0_CH1 = TCC0_CH1 ,
129- PWM0_CH2 = TCC0_CH2 ,
130- PWM0_CH3 = TCC0_CH3 ,
131- PWM0_CH4 = TCC0_CH4 ,
132- PWM0_CH5 = TCC0_CH5 ,
133- PWM0_CH6 = TCC0_CH6 ,
134- PWM0_CH7 = TCC0_CH7 ,
135- PWM1_CH0 = TCC1_CH0 ,
136- PWM1_CH1 = TCC1_CH1 ,
137- PWM1_CH2 = TCC1_CH2 ,
138- PWM1_CH3 = TCC1_CH3 ,
139- PWM1_CH4 = TCC1_CH4 ,
140- PWM1_CH5 = TCC1_CH5 ,
141- PWM1_CH6 = TCC1_CH6 ,
142- PWM1_CH7 = TCC1_CH7 ,
143- } EPWMChannel ;
144-
145- #else //end __SAMD51J19A__
146- // Definitions for PWM channels
147- typedef enum _EPWMChannel
148- {
149- NOT_ON_PWM = -1 ,
150- PWM0_CH0 = TCC0_CH0 ,
151- PWM0_CH1 = TCC0_CH1 ,
152- PWM0_CH2 = TCC0_CH2 ,
153- PWM0_CH3 = TCC0_CH3 ,
154- PWM0_CH4 = TCC0_CH4 ,
155- PWM0_CH5 = TCC0_CH5 ,
156- PWM0_CH6 = TCC0_CH6 ,
157- PWM0_CH7 = TCC0_CH7 ,
158- PWM1_CH0 = TCC1_CH0 ,
159- PWM1_CH1 = TCC1_CH1 ,
160- PWM1_CH2 = TCC1_CH2 ,
161- PWM1_CH3 = TCC1_CH3 ,
162- PWM2_CH0 = TCC2_CH0 ,
163- PWM2_CH1 = TCC2_CH1 ,
164- PWM2_CH2 = TCC2_CH2 ,
165- PWM2_CH3 = TCC2_CH3 ,
166- PWM3_CH0 = TC3_CH0 ,
167- PWM3_CH1 = TC3_CH1 ,
168- PWM4_CH0 = TC4_CH0 ,
169- PWM4_CH1 = TC4_CH1 ,
170- PWM5_CH0 = TC5_CH0 ,
171- PWM5_CH1 = TC5_CH1 ,
172- #if defined(__SAMD21J18A__ )
173- PWM6_CH0 = TC6_CH0 ,
174- PWM6_CH1 = TC6_CH1 ,
175- PWM7_CH0 = TC7_CH0 ,
176- PWM7_CH1 = TC7_CH1 ,
177- #endif // __SAMD21J18A__
178- } EPWMChannel ;
179-
180- #endif
181-
182-
183165typedef enum _EPortType
184166{
185167 NOT_A_PORT = -1 ,
@@ -255,12 +237,20 @@ typedef enum _EPioType
255237#define PIN_ATTR_COMBO (1UL<<0)
256238#define PIN_ATTR_ANALOG (1UL<<1)
257239#define PIN_ATTR_DIGITAL (1UL<<2)
258- #define PIN_ATTR_PWM (1UL<<3)
259240#define PIN_ATTR_TIMER (1UL<<4)
260241#define PIN_ATTR_TIMER_ALT (1UL<<5)
261242#define PIN_ATTR_EXTINT (1UL<<6)
262243#define PIN_ATTR_ANALOG_ALT (1UL<<7)
263244
245+ #if defined(__SAMD51__ )
246+ // these correspond to the mux table
247+ #define PIN_ATTR_PWM_E (1UL<<3)
248+ #define PIN_ATTR_PWM_F (1UL<<8)
249+ #define PIN_ATTR_PWM_G (1UL<<9)
250+ #else
251+ #define PIN_ATTR_PWM (1UL<<3)
252+ #endif
253+
264254/* Types used for the table below */
265255typedef struct _PinDescription
266256{
0 commit comments