@@ -70,18 +70,29 @@ typedef enum _ETCChannel
70
70
TCC0_CH3 = (0 <<8 )|(3 ),
71
71
TCC0_CH4 = (0 <<8 )|(4 ),
72
72
TCC0_CH5 = (0 <<8 )|(5 ),
73
- TCC0_CH6 = (0 <<8 )|(6 ),
74
- TCC0_CH7 = (0 <<8 )|(7 ),
75
73
TCC1_CH0 = (1 <<8 )|(0 ),
76
74
TCC1_CH1 = (1 <<8 )|(1 ),
77
75
TCC1_CH2 = (1 <<8 )|(2 ),
78
76
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 ),
83
89
} ETCChannel ;
84
90
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
+
85
96
#else
86
97
// Definitions for TC channels
87
98
typedef enum _ETCChannel
@@ -110,6 +121,39 @@ typedef enum _ETCChannel
110
121
TC5_CH0 = (5 <<8 )|(0 ),
111
122
TC5_CH1 = (5 <<8 )|(1 ),
112
123
} 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
+
113
157
#endif
114
158
115
159
extern 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] ;
118
162
#define GetTCChannelNumber ( x ) ( (x) & 0xff )
119
163
#define GetTC ( x ) ( g_apTCInstances[(x) >> 8] )
120
164
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
-
183
165
typedef enum _EPortType
184
166
{
185
167
NOT_A_PORT = -1 ,
@@ -255,12 +237,20 @@ typedef enum _EPioType
255
237
#define PIN_ATTR_COMBO (1UL<<0)
256
238
#define PIN_ATTR_ANALOG (1UL<<1)
257
239
#define PIN_ATTR_DIGITAL (1UL<<2)
258
- #define PIN_ATTR_PWM (1UL<<3)
259
240
#define PIN_ATTR_TIMER (1UL<<4)
260
241
#define PIN_ATTR_TIMER_ALT (1UL<<5)
261
242
#define PIN_ATTR_EXTINT (1UL<<6)
262
243
#define PIN_ATTR_ANALOG_ALT (1UL<<7)
263
244
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
+
264
254
/* Types used for the table below */
265
255
typedef struct _PinDescription
266
256
{
0 commit comments