Bar Logo Dual Active Bridge Development Board (Part-No. )
 
Content
     
Loading...
Searching...
No Matches
drv_mcc_extension_pwm.h
Go to the documentation of this file.
1
8#ifndef DRV_MCC_EXTENSION_PWM_H
9#define DRV_MCC_EXTENSION_PWM_H
10
11#include <xc.h>
12#include <stdint.h> // include standard integer data types
13#include <stdbool.h> // include standard boolean data types
14#include <stddef.h> // include standard definition data types
15
16// Identify the number of PWM in the device selected
17#if defined (PG8CONL)
18#define PWM_MAX_COUNT 8
19#elif defined (PG4CONL)
20#define PWM_MAX_COUNT 4
21#else
22#pragma message "selected device has no supported PWM generators"
23#endif
24
25
38
40
41
42
51inline static void PWM_PCI_Fault_AcceptanceCriteria(uint16_t pwmIndex,
53{
54
55 switch (pwmIndex)
56 {
57 case 1:
58 PG1FPCIHbits.ACP = acpSetting;
59 break;
60 case 2:
61 PG2FPCIHbits.ACP = acpSetting;
62 break;
63 case 3:
64 PG3FPCIHbits.ACP = acpSetting;
65 break;
66 case 4:
67 PG4FPCIHbits.ACP = acpSetting;
68 break;
69 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
70 case 5:
71 PG5FPCIHbits.ACP = acpSetting;
72 break;
73 case 6:
74 PG6FPCIHbits.ACP = acpSetting;
75 break;
76 case 7:
77 PG7FPCIHbits.ACP = acpSetting;
78 break;
79 case 8:
80 PG8FPCIHbits.ACP = acpSetting;
81 break;
82 #endif
83 default:
84 break;
85 };
86}
87
88
98inline static void PWM_PCI_Fault_AcceptanceQualiferInvert(uint16_t pwmIndex, bool invert)
99{
100 switch (pwmIndex)
101 {
102 case 1:
103 PG1FPCILbits.AQPS = (uint16_t)invert;
104 break;
105 case 2:
106 PG2FPCILbits.AQPS = (uint16_t)invert;
107 break;
108 case 3:
109 PG3FPCILbits.AQPS = (uint16_t)invert;
110 break;
111 case 4:
112 PG4FPCILbits.AQPS = (uint16_t)invert;
113 break;
114 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
115 case 5:
116 PG5FPCILbits.AQPS = (uint16_t)invert;
117 break;
118 case 6:
119 PG6FPCILbits.AQPS = (uint16_t)invert;
120 break;
121 case 7:
122 PG7FPCILbits.AQPS = (uint16_t)invert;
123 break;
124 case 8:
125 PG8FPCILbits.AQPS = (uint16_t)invert;
126 break;
127 #endif
128 default:
129 break;
130 };
131}
132
133
142inline static void PWM_PCI_Sync_AcceptanceCriteria(uint16_t pwmIndex, PWM_PCI_ACCEPTANCE_CRITERIA_t acpSetting)
143{
144 switch (pwmIndex)
145 {
146 case 1:
147 PG1SPCIHbits.ACP = acpSetting;
148 break;
149 case 2:
150 PG2SPCIHbits.ACP = acpSetting;
151 break;
152 case 3:
153 PG3SPCIHbits.ACP = acpSetting;
154 break;
155 case 4:
156 PG4SPCIHbits.ACP = acpSetting;
157 break;
158 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
159 case 5:
160 PG5SPCIHbits.ACP = acpSetting;
161 break;
162 case 6:
163 PG6SPCIHbits.ACP = acpSetting;
164 break;
165 case 7:
166 PG7SPCIHbits.ACP = acpSetting;
167 break;
168 case 8:
169 PG8SPCIHbits.ACP = acpSetting;
170 break;
171 #endif
172 default:
173 break;
174
175 };
176}
177
178
188
189
199inline static void PWM_PCI_Fault_TimetoTerminateAfterEvent(uint16_t pwmIndex, PWM_PCI_TERMTIME_AFTER_EVENT_t faultTerm)
200{
201 switch (pwmIndex)
202 {
203 case 1:
204 PG1FPCILbits.TSYNCDIS = faultTerm;
205 break;
206 case 2:
207 PG2FPCILbits.TSYNCDIS = faultTerm;
208 break;
209 case 3:
210 PG3FPCILbits.TSYNCDIS = faultTerm;
211 break;
212 case 4:
213 PG4FPCILbits.TSYNCDIS = faultTerm;
214 break;
215 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
216 case 5:
217 PG5FPCILbits.TSYNCDIS = faultTerm;
218 break;
219 case 6:
220 PG6FPCILbits.TSYNCDIS = faultTerm;
221 break;
222 case 7:
223 PG7FPCILbits.TSYNCDIS = faultTerm;
224 break;
225 case 8:
226 PG8FPCILbits.TSYNCDIS = faultTerm;
227 break;
228 #endif
229 default:
230 break;
231
232 };
233}
234
235
245inline static void PWM_PCI_Sync_TimetoTerminateAfterEvent(uint16_t pwmIndex, PWM_PCI_TERMTIME_AFTER_EVENT_t faultTerm)
246{
247 switch (pwmIndex)
248 {
249 case 1:
250 PG1SPCILbits.TSYNCDIS = faultTerm;
251 break;
252 case 2:
253 PG2SPCILbits.TSYNCDIS = faultTerm;
254 break;
255 case 3:
256 PG3SPCILbits.TSYNCDIS = faultTerm;
257 break;
258 case 4:
259 PG4SPCILbits.TSYNCDIS = faultTerm;
260 break;
261 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
262 case 5:
263 PG5SPCILbits.TSYNCDIS = faultTerm;
264 break;
265 case 6:
266 PG6SPCILbits.TSYNCDIS = faultTerm;
267 break;
268 case 7:
269 PG7SPCILbits.TSYNCDIS = faultTerm;
270 break;
271 case 8:
272 PG8SPCILbits.TSYNCDIS = faultTerm;
273 break;
274 #endif
275 default:
276 break;
277
278 };
279}
280
281
295
296
305inline static void PWM_StartOfCycleTrigger(uint16_t pwmIndex, PWM_SOCS_t triggerSource)
306{
307 switch (pwmIndex)
308 {
309 case 1:
310 PG1CONHbits.SOCS = triggerSource;
311 break;
312 case 2:
313 PG2CONHbits.SOCS = triggerSource;
314 break;
315 case 3:
316 PG3CONHbits.SOCS = triggerSource;
317 break;
318 case 4:
319 PG4CONHbits.SOCS = triggerSource;
320 break;
321 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
322 case 5:
323 PG5CONHbits.SOCS = triggerSource;
324 break;
325 case 6:
326 PG6CONHbits.SOCS = triggerSource;
327 break;
328 case 7:
329 PG7CONHbits.SOCS = triggerSource;
330 break;
331 case 8:
332 PG8CONHbits.SOCS = triggerSource;
333 break;
334 #endif
335 default:
336 break;
337 }
338}
339
340
353inline static void PWM_UPDREQ_Broadcast_Enable(uint16_t pwmIndex, bool enable)
354{
355 uint16_t enable_ = (uint16_t)enable;
356 PG1CONHbits.MSTEN = enable_;
357
358 switch (pwmIndex)
359 {
360 case 1:
361 PG1CONHbits.MSTEN = enable_;
362 break;
363 case 2:
364 PG2CONHbits.MSTEN = enable_;
365 break;
366 case 3:
367 PG3CONHbits.MSTEN = enable_;
368 break;
369 case 4:
370 PG4CONHbits.MSTEN = enable_;
371 break;
372 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
373 case 5:
374 PG5CONHbits.MSTEN = enable_;
375 break;
376 case 6:
377 PG6CONHbits.MSTEN = enable_;
378 break;
379 case 7:
380 PG7CONHbits.MSTEN = enable_;
381 break;
382 case 8:
383 PG8CONHbits.MSTEN = enable_;
384 break;
385 #endif
386 default:
387 break;
388 }
389}
390
391
403
404
417inline static void PWM_Data_Update_Mode(uint16_t pwmIndex, PWM_UPDMOD_t updateMode)
418{
419 switch (pwmIndex)
420 {
421 case 1:
422 PG1CONHbits.UPDMOD = updateMode;
423 break;
424 case 2:
425 PG2CONHbits.UPDMOD = updateMode;
426 break;
427 case 3:
428 PG3CONHbits.UPDMOD = updateMode;
429 break;
430 case 4:
431 PG4CONHbits.UPDMOD = updateMode;
432 break;
433 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
434 case 5:
435 PG5CONHbits.UPDMOD = updateMode;
436 break;
437 case 6:
438 PG6CONHbits.UPDMOD = updateMode;
439 break;
440 case 7:
441 PG7CONHbits.UPDMOD = updateMode;
442 break;
443 case 8:
444 PG8CONHbits.UPDMOD = updateMode;
445 break;
446 #endif
447 default:
448 break;
449 }
450}
451
452
457{
462 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
463 PWM_PCI_SOURCE_PWM5 = 4,
464 PWM_PCI_SOURCE_PWM6 = 5,
465 PWM_PCI_SOURCE_PWM7 = 6,
466 PWM_PCI_SOURCE_PWM8 = 7
467 #endif
468};
470
471
481inline static void PWM_PCI_Source1(uint16_t pwmIndex, PWM_PCI_SOURCE_t pciSource)
482{
483 switch (pwmIndex)
484 {
485 case 1:
486 PG1LEBHbits.PWMPCI = (uint16_t)pciSource;
487 break;
488 case 2:
489 PG2LEBHbits.PWMPCI = (uint16_t)pciSource;
490 break;
491 case 3:
492 PG3LEBHbits.PWMPCI = (uint16_t)pciSource;
493 break;
494 case 4:
495 PG4LEBHbits.PWMPCI = (uint16_t)pciSource;
496 break;
497 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
498 case 5:
499 PG5LEBHbits.PWMPCI = (uint16_t)pciSource;
500 break;
501 case 6:
502 PG6LEBHbits.PWMPCI = (uint16_t)pciSource;
503 break;
504 case 7:
505 PG7LEBHbits.PWMPCI = (uint16_t)pciSource;
506 break;
507 case 8:
508 PG8LEBHbits.PWMPCI = (uint16_t)pciSource;
509 break;
510 #endif
511 default:
512 break;
513 }
514}
515
516
521{
578
579
580
594
595
610inline static void RPnR_VirtualPin_Source(RPnR_VIRTUAL_PIN_t virtualPin, RPnR_SOURCE_t peripheral)
611{
612
613 __builtin_write_RPCON(0x0000); // unlock PPS
614
615 switch (virtualPin)
616 {
618 RPOR24bits.RP176R = peripheral;
619 break;
620
622 RPOR24bits.RP177R = peripheral;
623 break;
624
626 RPOR25bits.RP178R = peripheral;
627 break;
628
630 RPOR25bits.RP179R = peripheral;
631 break;
632
634 RPOR26bits.RP180R = peripheral;
635 break;
636
638 RPOR26bits.RP181R = peripheral;
639 break;
640
641 default:
642 break;
643 };
644
645 __builtin_write_RPCON(0x0800); // lock PPS
646}
647
648
653{
722 RPx_INPUT_RP181 = 181
725
726
738
739
748inline static void PWM_PCI_INPUT_MaptoPin(PWM_PCI_INPUT_t pciIndex, RPx_INPUT_t pin)
749{
750 __builtin_write_RPCON(0x0000); // unlock PPS
751 switch (pciIndex)
752 {
753 case PWM_PCI_INPUT8:
754 RPINR12bits.PCI8R = pin;
755 break;
756
757 case PWM_PCI_INPUT9:
758 RPINR12bits.PCI9R = pin;
759 break;
760
761 case PWM_PCI_INPUT10:
762 RPINR13bits.PCI10R = pin;
763 break;
764
765 case PWM_PCI_INPUT11:
766 RPINR13bits.PCI11R = pin;
767 break;
768
769 default:
770 break;
771 };
772 __builtin_write_RPCON(0x0800); // lock PPS
773}
774
775
814
816
817
818
827inline static void PWM_PCI_Sync_Source_Select(uint16_t pwmIndex, PWM_PCI_SOURCE_SELECT_t pciSource)
828{
829 switch (pwmIndex)
830 {
831 case 1:
832 PG1SPCILbits.PSS = pciSource;
833 break;
834 case 2:
835 PG2SPCILbits.PSS = pciSource;
836 break;
837 case 3:
838 PG3SPCILbits.PSS = pciSource;
839 break;
840 case 4:
841 PG4SPCILbits.PSS = pciSource;
842 break;
843 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
844 case 5:
845 PG5SPCILbits.PSS = pciSource;
846 break;
847 case 6:
848 PG6SPCILbits.PSS = pciSource;
849 break;
850 case 7:
851 PG7SPCILbits.PSS = pciSource;
852 break;
853 case 8:
854 PG8SPCILbits.PSS = pciSource;
855 break;
856 #endif
857 default:
858 break;
859 };
860}
861
862
863
880
881
882
893{
894 switch (pwmIndex)
895 {
896 case 1:
897 PG1FPCILbits.AQSS = source;
898 break;
899 case 2:
900 PG2FPCILbits.AQSS = source;
901 break;
902 case 3:
903 PG3FPCILbits.AQSS = source;
904 break;
905 case 4:
906 PG4FPCILbits.AQSS = source;
907 break;
908 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
909 case 5:
910 PG5FPCILbits.AQSS = source;
911 break;
912 case 6:
913 PG6FPCILbits.AQSS = source;
914 break;
915 case 7:
916 PG7FPCILbits.AQSS = source;
917 break;
918 case 8:
919 PG8FPCILbits.AQSS = source;
920 break;
921 #endif
922 default:
923 break;
924 };
925}
926
927
937
938
947inline static void PWM_Trigger_Mode(uint16_t pwmIndex, PWM_TRIG_MODE_t trigMode)
948{
949 switch (pwmIndex)
950 {
951 case 1:
952 PG1CONHbits.TRGMOD = trigMode;
953 break;
954 case 2:
955 PG2CONHbits.TRGMOD = trigMode;
956 break;
957 case 3:
958 PG3CONHbits.TRGMOD = trigMode;
959 break;
960 case 4:
961 PG4CONHbits.TRGMOD = trigMode;
962 break;
963 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
964 case 5:
965 PG5CONHbits.TRGMOD = trigMode;
966 break;
967 case 6:
968 PG6CONHbits.TRGMOD = trigMode;
969 break;
970 case 7:
971 PG7CONHbits.TRGMOD = trigMode;
972 break;
973 case 8:
974 PG8CONHbits.TRGMOD = trigMode;
975 break;
976 #endif
977 default:
978 break;
979 };
980}
981
982
998
999
1008inline static void PWM_PCI_Sync_TerminationEventSelect(uint16_t pwmIndex, PWM_PCI_TERM_t termEvent)
1009{
1010 switch (pwmIndex)
1011 {
1012 case 1:
1013 PG1SPCILbits.TERM = termEvent;
1014 break;
1015 case 2:
1016 PG2SPCILbits.TERM = termEvent;
1017 break;
1018 case 3:
1019 PG3SPCILbits.TERM = termEvent;
1020 break;
1021 case 4:
1022 PG4SPCILbits.TERM = termEvent;
1023 break;
1024 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
1025 case 5:
1026 PG5SPCILbits.TERM = termEvent;
1027 break;
1028 case 6:
1029 PG6SPCILbits.TERM = termEvent;
1030 break;
1031 case 7:
1032 PG7SPCILbits.TERM = termEvent;
1033 break;
1034 case 8:
1035 PG8SPCILbits.TERM = termEvent;
1036 break;
1037 #endif
1038 default:
1039 break;
1040 };
1041}
1042
1043
1053inline static void PWM_Swap_PWMxL_and_PWMxH(uint16_t pwmIndex, bool swapPWMH_PWML)
1054{
1055 switch (pwmIndex)
1056 {
1057 case 1:
1058 PG1IOCONLbits.SWAP = swapPWMH_PWML;
1059 break;
1060 case 2:
1061 PG2IOCONLbits.SWAP = swapPWMH_PWML;
1062 break;
1063 case 3:
1064 PG3IOCONLbits.SWAP = swapPWMH_PWML;
1065 break;
1066 case 4:
1067 PG4IOCONLbits.SWAP = swapPWMH_PWML;
1068 break;
1069 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
1070 case 5:
1071 PG5IOCONLbits.SWAP = swapPWMH_PWML;
1072 break;
1073 case 6:
1074 PG6IOCONLbits.SWAP = swapPWMH_PWML;
1075 break;
1076 case 7:
1077 PG7IOCONLbits.SWAP = swapPWMH_PWML;
1078 break;
1079 case 8:
1080 PG8IOCONLbits.SWAP = swapPWMH_PWML;
1081 break;
1082 #endif
1083 default:
1084 break;
1085 };
1086}
1087
1088
1107
1108
1121inline static void PWM_EVENTA_Configure( uint16_t pwmSource,
1122 PWM_EVENT_SOURCE_t eventSource,
1123 bool invert,
1124 bool outputEnable,
1125 bool stretchDisable,
1126 bool outputSync)
1127{
1128 {
1129 PWMEVTAbits.EVTAPGS = (pwmSource-1);
1130 PWMEVTAbits.EVTAOEN = outputEnable;
1131 PWMEVTAbits.EVTAPOL = invert;
1132 PWMEVTAbits.EVTASTRD = stretchDisable;
1133 PWMEVTAbits.EVTASYNC = outputSync;
1134 PWMEVTAbits.EVTASEL = eventSource;
1135 };
1136}
1137
1138
1150
1151
1161inline static void PWM_Data_Update_Trigger(uint16_t pwmIndex, PWM_UPDTRG_t updateTrigger)
1162{
1163 switch (pwmIndex)
1164 {
1165 case 1:
1166 PG1EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1167 break;
1168 case 2:
1169 PG2EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1170 break;
1171 case 3:
1172 PG3EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1173 break;
1174 case 4:
1175 PG4EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1176 break;
1177 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
1178 case 5:
1179 PG5EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1180 break;
1181 case 6:
1182 PG6EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1183 break;
1184 case 7:
1185 PG7EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1186 break;
1187 case 8:
1188 PG8EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1189 break;
1190 #endif
1191 default:
1192 break;
1193 }
1194}
1195
1196
1206
1207
1216inline static void PWM_Fault_LatchMode(uint16_t pwmIndex, PWM_LATCH_MODE_t latchMode)
1217{
1218 switch (pwmIndex)
1219 {
1220 case 1:
1221 PG1FPCIHbits.LATMOD = latchMode;
1222 break;
1223 case 2:
1224 PG2FPCIHbits.LATMOD = latchMode;
1225 break;
1226 case 3:
1227 PG3FPCIHbits.LATMOD = latchMode;
1228 break;
1229 case 4:
1230 PG4FPCIHbits.LATMOD = latchMode;
1231 break;
1232 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
1233 case 5:
1234 PG5FPCIHbits.LATMOD = latchMode;
1235 break;
1236 case 6:
1237 PG6FPCIHbits.LATMOD = latchMode;
1238 break;
1239 case 7:
1240 PG7FPCIHbits.LATMOD = latchMode;
1241 break;
1242 case 8:
1243 PG8FPCIHbits.LATMOD = latchMode;
1244 break;
1245 #endif
1246 default:
1247 break;
1248 };
1249}
1250
1251
1261
1262
1271inline static void PWM_Fault_DataMode(uint16_t pwmIndex, PWM_FAULT_DATA_t faultDataMode)
1272{
1273 switch (pwmIndex)
1274 {
1275 case 1:
1276 PG1IOCONLbits.FLTDAT = faultDataMode;
1277 break;
1278 case 2:
1279 PG2IOCONLbits.FLTDAT = faultDataMode;
1280 break;
1281 case 3:
1282 PG3IOCONLbits.FLTDAT = faultDataMode;
1283 break;
1284 case 4:
1285 PG4IOCONLbits.FLTDAT= faultDataMode;
1286 break;
1287 #if defined(PWM_MAX_COUNT) && (PWM_MAX_COUNT == 8)
1288 case 5:
1289 PG5IOCONLbits.FLTDAT = faultDataMode;
1290 break;
1291 case 6:
1292 PG6IOCONLbits.FLTDAT = faultDataMode;
1293 break;
1294 case 7:
1295 PG7IOCONLbits.FLTDAT = faultDataMode;
1296 break;
1297 case 8:
1298 PG8IOCONLbits.FLTDAT = faultDataMode;
1299 break;
1300 #endif
1301 default:
1302 break;
1303 };
1304}
1305
1306
1310#define FAULT_ACTIVE (PG1STATbits.FLTACT)||\
1311 (PG2STATbits.FLTACT)||\
1312 (PG3STATbits.FLTACT)||\
1313 (PG4STATbits.FLTACT)\
1314
1315#endif /* DRV_MCC_EXTENSION_PWM_H */
1316
enum PWM_PCI_TERM_e PWM_PCI_TERM_t
enum PWM_PCI_SOURCE_e PWM_PCI_SOURCE_t
enum PWM_SOCS_e PWM_SOCS_t
enum PWM_PCI_ACCEPTANCE_CRITERIA_e PWM_PCI_ACCEPTANCE_CRITERIA_t
enum PWM_PCI_ACCEPTANCE_QUALIFER_e PWM_PCI_ACCEPTANCE_QUALIFER_t
enum PWM_PCI_INPUT_e PWM_PCI_INPUT_t
enum RPnR_VIRTUAL_PIN_e RPnR_VIRTUAL_PIN_t
enum RPnR_SOURCE_e RPnR_SOURCE_t
enum RPx_INPUT_e RPx_INPUT_t
enum PWM_PCI_SOURCE_SELECT_e PWM_PCI_SOURCE_SELECT_t
enum PWM_UPDTRG_e PWM_UPDTRG_t
enum PWM_TRIG_MODE_e PWM_TRIG_MODE_t
enum PWM_LATCH_MODE_e PWM_LATCH_MODE_t
enum PWM_FAULT_DATA_e PWM_FAULT_DATA_t
enum PWM_PCI_TERMTIME_AFTER_EVENT_e PWM_PCI_TERMTIME_AFTER_EVENT_t
enum PWM_UPDMOD_e PWM_UPDMOD_t
enum PWM_EVENT_SOURCE_e PWM_EVENT_SOURCE_t
PWM_UPDMOD_e
settings for PWM Buffer Update Mode Selection bits
RPx_INPUT_e
List of output selection for re-mappable pins (taken from dsPIC33CK256MP508 datasheet)
static void PWM_PCI_Sync_TerminationEventSelect(uint16_t pwmIndex, PWM_PCI_TERM_t termEvent)
Select termination event for SYNC PCI.
PWM_SOCS_e
Settings for PWM Start-of_cycle Selection bit.
static void PWM_Data_Update_Mode(uint16_t pwmIndex, PWM_UPDMOD_t updateMode)
Sets the PWM Data Update Mode.
static void PWM_StartOfCycleTrigger(uint16_t pwmIndex, PWM_SOCS_t triggerSource)
Set SOCS field to determine start of cycle trigger.
static void RPnR_VirtualPin_Source(RPnR_VIRTUAL_PIN_t virtualPin, RPnR_SOURCE_t peripheral)
Set source for a virtual pin.
static void PWM_PCI_Fault_AcceptanceCriteria(uint16_t pwmIndex, PWM_PCI_ACCEPTANCE_CRITERIA_t acpSetting)
Set PCI fault acceptance criteria.
static void PWM_Fault_LatchMode(uint16_t pwmIndex, PWM_LATCH_MODE_t latchMode)
Set the latch mode of fault PCI.
static void PWM_PCI_Fault_TimetoTerminateAfterEvent(uint16_t pwmIndex, PWM_PCI_TERMTIME_AFTER_EVENT_t faultTerm)
Set TSYNCDIS bit to determine when PWM should stop after a fault occurs.
static void PWM_EVENTA_Configure(uint16_t pwmSource, PWM_EVENT_SOURCE_t eventSource, bool invert, bool outputEnable, bool stretchDisable, bool outputSync)
Configure PWM Event A register.
PWM_PCI_TERMTIME_AFTER_EVENT_e
Settings for Termination Synchronization bit.
static void PWM_PCI_INPUT_MaptoPin(PWM_PCI_INPUT_t pciIndex, RPx_INPUT_t pin)
Map PWM PCI input to a pin.
static void PWM_Trigger_Mode(uint16_t pwmIndex, PWM_TRIG_MODE_t trigMode)
Set source of fault PCI acceptance qualifier.
PWM_LATCH_MODE_e
Set PWM trigger mode.
static void PWM_PCI_Sync_TimetoTerminateAfterEvent(uint16_t pwmIndex, PWM_PCI_TERMTIME_AFTER_EVENT_t faultTerm)
Set TSYNCDIS bit to determine when PWM should stop after a sync event occurs.
static void PWM_PCI_Source1(uint16_t pwmIndex, PWM_PCI_SOURCE_t pciSource)
Set PWM source for PCI selection bits (for PCI source 1)
PWM_FAULT_DATA_e
Set PWM fault data.
PWM_PCI_SOURCE_e
Settings for PWM Source for PCI Selection bits.
RPnR_SOURCE_e
Peripheral output for re-mappable pins.
PWM_PCI_TERM_e
PWM Termination event selection.
static void PWM_UPDREQ_Broadcast_Enable(uint16_t pwmIndex, bool enable)
Enable broadcasting of UPDREQ bit to other PWMs.
static void PWM_Data_Update_Trigger(uint16_t pwmIndex, PWM_UPDTRG_t updateTrigger)
Set PWM Register update trigger.
static void PWM_Swap_PWMxL_and_PWMxH(uint16_t pwmIndex, bool swapPWMH_PWML)
Enable/Disable the PWM instance output swap bit.
static void PWM_PCI_Sync_Source_Select(uint16_t pwmIndex, PWM_PCI_SOURCE_SELECT_t pciSource)
Set PCI source (PSS field) for PCI Synchronization.
static void PWM_Fault_DataMode(uint16_t pwmIndex, PWM_FAULT_DATA_t faultDataMode)
Set the data mode of fault PCI.
static void PWM_PCI_Sync_AcceptanceCriteria(uint16_t pwmIndex, PWM_PCI_ACCEPTANCE_CRITERIA_t acpSetting)
Sets PCI Synchronization Acceptance Criteria.
PWM_EVENT_SOURCE_e
Select event source for PWMEVTx register.
PWM_PCI_ACCEPTANCE_QUALIFER_e
List of sources of PWM acceptance qualifiers.
PWM_PCI_SOURCE_SELECT_e
List of PWM PCI inputs.
static void PWM_PCI_Fault_AcceptanceQualifierSource(uint16_t pwmIndex, PWM_PCI_ACCEPTANCE_QUALIFER_t source)
Set source of fault PCI acceptance qualifier.
static void PWM_PCI_Fault_AcceptanceQualiferInvert(uint16_t pwmIndex, bool invert)
Set PCI polarity of PCI fault acceptance input.
PWM_PCI_INPUT_e
list of PWM PCI inputs
PWM_UPDTRG_e
Settings for Update Trigger Event.
RPnR_VIRTUAL_PIN_e
List of re-mappable pins for dsPIC33CK256MP508.
PWM_PCI_ACCEPTANCE_CRITERIA_e
Set PCI fault acceptance criteria.
PWM_TRIG_MODE_e
Set PWM trigger mode.
@ PWM_UPDMOD_IMMEDIATE
@ PWM_UPDMOD_CLIENT_SOC
@ PWM_UPDMOD_CLIENT_IMMEDIATE
@ RPx_INPUT_RP74
Port Pin RD10.
@ RPx_INPUT_RP62
Port Pin RC14.
@ RPx_INPUT_RP63
Port Pin RC15.
@ RPx_INPUT_RP67
Port Pin RD3.
@ RPx_INPUT_RP65
Port Pin RD1.
@ RPx_INPUT_RP46
Port Pin RB14.
@ RPx_INPUT_RP181
Virtual RPV5.
@ RPx_INPUT_RP79
Port Pin RD15.
@ RPx_INPUT_RP35
Port Pin RB3.
@ RPx_INPUT_RP178
Virtual RPV2.
@ RPx_INPUT_RP44
Port Pin RB12.
@ RPx_INPUT_RP51
Port Pin RC3.
@ RPx_INPUT_CMP1
Internal.
@ RPx_INPUT_RP39
Port Pin RB7.
@ RPx_INPUT_RP34
Port Pin RB2.
@ RPx_INPUT_RP180
Virtual RPV4.
@ RPx_INPUT_PWM_EVENT_D
Internal.
@ RPx_INPUT_RP50
Port Pin RC2.
@ RPx_INPUT_RP73
Port Pin RD9.
@ RPx_INPUT_DAC1_pwm_req_on
Internal.
@ RPx_INPUT_RP68
Port Pin RD4.
@ RPx_INPUT_RP43
Port Pin RB11.
@ RPx_INPUT_DAC1_pwm_req_off
Internal.
@ RPx_INPUT_RP179
Virtual RPV3.
@ RPx_INPUT_RP71
Port Pin RD7.
@ RPx_INPUT_RP60
Port Pin RC12.
@ RPx_INPUT_RP37
Port Pin RB5.
@ RPx_INPUT_RP76
Port Pin RD12.
@ RPx_INPUT_RP33
Port Pin RB1.
@ RPx_INPUT_RP53
Port Pin RC5.
@ RPx_INPUT_RP36
Port Pin RB4.
@ RPx_INPUT_RP41
Port Pin RB9.
@ RPx_INPUT_RP52
Port Pin RC4.
@ RPx_INPUT_VSS
Internal.
@ RPx_INPUT_RP45
Port Pin RB13.
@ RPx_INPUT_CMP2
Internal.
@ RPx_INPUT_RP70
Port Pin RD6.
@ RPx_INPUT_RP64
Port Pin RD0.
@ RPx_INPUT_RP59
Port Pin RC11.
@ RPx_INPUT_RP57
Port Pin RC9.
@ RPx_INPUT_RP40
Port Pin RB8.
@ RPx_INPUT_CMP3
Internal.
@ RPx_INPUT_DAC2_pwm_req_on
Internal.
@ RPx_INPUT_DAC2_pwm_req_off
Internal.
@ RPx_INPUT_PTG_TRIG_27
Internal.
@ RPx_INPUT_DAC3_pwm_req_off
Internal.
@ RPx_INPUT_PTG_TRIG_26
Internal.
@ RPx_INPUT_RP77
Port Pin RD13.
@ RPx_INPUT_RP72
Port Pin RD8.
@ RPx_INPUT_RP38
Port Pin RB6.
@ RPx_INPUT_RP47
Port Pin RB15.
@ RPx_INPUT_RP58
Port Pin RC10.
@ RPx_INPUT_RP32
Port Pin RB0.
@ RPx_INPUT_RP48
Port Pin RC0.
@ RPx_INPUT_RP78
Port Pin RD14.
@ RPx_INPUT_RP177
Virtual RPV1.
@ RPx_INPUT_RP176
Virtual RPV0.
@ RPx_INPUT_RP56
Port Pin RC8.
@ RPx_INPUT_RP61
Port Pin RC13.
@ RPx_INPUT_RP66
Port Pin RD2.
@ RPx_INPUT_DAC3_pwm_req_on
Internal.
@ RPx_INPUT_RP69
Port Pin RD5.
@ RPx_INPUT_RP49
Port Pin RC1.
@ RPx_INPUT_RP42
Port Pin RB10.
@ RPx_INPUT_RP75
Port Pin RD11.
@ RPx_INPUT_PWM_EVENT_E
Internal.
@ RPx_INPUT_RP55
Port Pin RC7.
@ RPx_INPUT_PWM_EVENT_C
Internal.
@ RPx_INPUT_RP54
Port Pin RC6.
@ PWM_SOCS_PG3_OR_PG7
@ PWM_SOCS_SELF_TRIGGER
@ PWM_SOCS_PG2_OR_PG6
@ PWM_SOCS_PG4_OR_PG8
@ PWM_SOCS_PG1_OR_PG5
@ PWM_SOCS_TRIG_OR_PCI_SYNC
@ PWM_PCI_TERMTIME_AFTER_EVENT_AT_EOC
@ PWM_PCI_TERMTIME_AFTER_EVENT_IMMEDIATE
@ PWM_RESET_DOMINANT_MODE
@ PWM_SET_DOMINANT_MODE
@ PWM_FAULT_EVENT_PWML
@ PWM_FAULT_EVENT_PWMH
@ PWM_PCI_SOURCE_PWM3
@ PWM_PCI_SOURCE_PWM1
@ PWM_PCI_SOURCE_PWM4
@ PWM_PCI_SOURCE_PWM2
@ RPnR_SOURCE_SS2
RPn tied to SPI2 Client Select.
@ RPnR_SOURCE_CLC4OUT
RPn tied to CLC4 Output.
@ RPnR_SOURCE_CMP1
RPn tied to Comparator 1 Output.
@ RPnR_SOURCE_CMP3
RPn tied to Comparator 3 Output.
@ RPnR_SOURCE_SDO3
RPn tied to SPI3 Data Output.
@ RPnR_SOURCE_OCM6
RPn tied to SCCP6 Output.
@ RPnR_SOURCE_SDO2
RPn tied to SPI2 Data Output.
@ RPnR_SOURCE_OCM2
RPn tied to SCCP2 Output.
@ RPnR_SOURCE_SS3
RPn tied to SPI3 Client Select.
@ RPnR_SOURCE_SENT1OUT
RPn tied to SENT1 Output.
@ RPnR_SOURCE_PTGTRG25
PTG Trigger Output 25.
@ RPnR_SOURCE_OCM1
RPn tied to SCCP1 Output.
@ RPnR_SOURCE_SDO1
RPn tied to SPI1 Data Output.
@ RPnR_SOURCE_MCCP9B
RPn tied to MCCP9 Output B.
@ RPnR_SOURCE_MCCP9E
RPn tied to MCCP9 Output E.
@ RPnR_SOURCE_OCM5
RPn tied to SCCP5 Output.
@ RPnR_SOURCE_PWMED
RPn tied to PWM Event D Output.
@ RPnR_SOURCE_SENT2OUT
RPn tied to SENT2 Output.
@ RPnR_SOURCE_CAN1TX
RPn tied to CAN1 Transmit.
@ RPnR_SOURCE_OCM4
RPn tied to SCCP4 Output.
@ RPnR_SOURCE_PTGTRG24
PTG Trigger Output 24.
@ RPnR_SOURCE_PWM4H
RPn tied to PWM4H Output.
@ RPnR_SOURCE_U3TX
RPn tied to UART3 Transmit.
@ RPnR_SOURCE_REFCLKO
RPn tied to Reference Clock Output.
@ RPnR_SOURCE_CLC3OUT
RPn tied to CLC4 Output.
@ RPnR_SOURCE_MCCP9A
RPn tied to MCCP9 Output A.
@ RPnR_SOURCE_U2TX
RPn tied to UART2 Transmit.
@ RPnR_SOURCE_QEICMP1
RPn tied to QEI1 Comparator Output.
@ RPnR_SOURCE_U3DTR
RPn tied to UART3 DTR
@ RPnR_SOURCE_CLC2OUT
RPn tied to CLC2 Output.
@ RPnR_SOURCE_PWMEC
RPn tied to PWM Event C Output.
@ RPnR_SOURCE_SCK2
RPn tied to SPI2 Clock Output.
@ RPnR_SOURCE_U3RTS
RPn tied to UART3 Request-to-Send.
@ RPnR_SOURCE_CMP2
RPn tied to Comparator 2 Output.
@ RPnR_SOURCE_SS1
RPn tied to SPI1 Client Select.
@ RPnR_SOURCE_OCM7
RPn tied to SCCP7 Output.
@ RPnR_SOURCE_OCM8
RPn tied to SCCP8 Output.
@ RPnR_SOURCE_U1RTS
RPn tied to UART1 Request-to-Send.
@ RPnR_SOURCE_SCK3
RPn tied to SPI3 Clock Output.
@ RPnR_SOURCE_QEICMP2
RPn tied to QEI2 Comparator Output.
@ RPnR_SOURCE_PWMEB
RPn tied to PWM Event B Output.
@ RPnR_SOURCE_MCCP9F
RPn tied to MCCP9 Output F.
@ RPnR_SOURCE_PWM4L
RPn tied to PWM4L Output.
@ RPnR_SOURCE_CLC1OUT
RPn tied to CLC1 Output.
@ RPnR_SOURCE_DefaultPORT
RPn tied to Default Pin.
@ RPnR_SOURCE_U1DTR
RPn tied to UART1 DTR.
@ RPnR_SOURCE_SCK1
RPn tied to SPI1 Clock Output.
@ RPnR_SOURCE_U2RTS
RPn tied to UART2 Request-to-Send.
@ RPnR_SOURCE_MCCP9C
RPn tied to MCCP9 Output C.
@ RPnR_SOURCE_U2DTR
RPn tied to UART2 DTR.
@ RPnR_SOURCE_OCM3
RPn tied to SCCP3 Output.
@ RPnR_SOURCE_U1TX
RPn tied to UART1 Transmit.
@ RPnR_SOURCE_PWMEA
RPn tied to PWM Event A Output.
@ RPnR_SOURCE_MCCP9D
RPn tied to MCCP9 Output D.
@ PWM_PCI_TERM_PCI_SOURCE8
Selects PCI Source #8.
@ PWM_PCI_TERM_PGxTRIGB
PGxTRIGB trigger event.
@ PWM_PCI_TERM_PCI_SOURCE9
Selects PCI Source #9.
@ PWM_PCI_TERM_PGxTRIGA
PGxTRIGA trigger event.
@ PWM_PCI_TERM_PCI_SOURCE1
Selects PCI Source #1 (PWM Generator output selected by the PWMPCI[2:0] bits)
@ PWM_PCI_TERM_PGxTRIGC
PGxTRIGC trigger event.
@ PWM_PCI_TERM_MANUAL
Manual Terminate: Terminate on a write of ?1? to the SWTERM bit location.
@ PWM_PCI_TERM_AUTO
Auto-Terminate: Terminate when PCI source transitions from active to inactive.
@ PWM_EVENT_SOURCE_CAHALF
@ PWM_EVENT_SOURCE_PCI_FF_ACTIVE
@ PWM_EVENT_SOURCE_PCI_SYNC_ACTIVE
@ PWM_EVENT_SOURCE_PCI_FAULT_ACTIVE
@ PWM_EVENT_SOURCE_ADC_TRIG2
@ PWM_EVENT_SOURCE_HR_ERROR_EVENT
@ PWM_EVENT_SOURCE_PWM_GEN_OUTPUT
@ PWM_EVENT_SOURCE_PGTRGSEL
@ PWM_EVENT_SOURCE_STEER
@ PWM_EVENT_SOURCE_ADC_TRIG1
@ PWM_EVENT_SOURCE_PCI_FF_CL_ACTIVE
@ PWM_PCI_ACCEPTANCE_QUALIFER_DUTY
Duty cycle is active (base PWM Generator signal)
@ PWM_PCI_ACCEPTANCE_QUALIFER_LEB
LEB is active.
@ PWM_PCI_ACCEPTANCE_QUALIFER_PCI_PWMPCI
Selects PCI Source #1 (PWM Generator output selected by the PWMPCI[2:0] bits)
@ PWM_PCI_ACCEPTANCE_QUALIFER_NONE
No acceptance qualifier is used (qualifier forced to ?1?)
@ PWM_PCI_ACCEPTANCE_QUALIFER_PWM
PWM Generator is triggered.
@ PWM_PCI_ACCEPTANCE_QUALIFER_SWPCI
SWPCI control bit only (qualifier forced to ?0?)
@ PWM_PCI_ACCEPTANCE_QUALIFER_PCI_SOURCE8
Selects PCI Source #8.
@ PWM_PCI_ACCEPTANCE_QUALIFER_PCI_SOURCE9
Selects PCI Source #9.
@ PWM_PCI_SOURCE_SELECT_PCI13R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_PCI16R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_PCI17R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_PCI14R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_PCI22
@ PWM_PCI_SOURCE_SELECT_PWM_EVENT_B
@ PWM_PCI_SOURCE_SELECT_CLC1
@ PWM_PCI_SOURCE_SELECT_CMP3
@ PWM_PCI_SOURCE_SELECT_COMBO_TRIG_B
@ PWM_PCI_SOURCE_SELECT_PCI10R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_PCI18R
‍device pin
@ PWM_PCI_SOURCE_SELECT_PCI15R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_CMP1
@ PWM_PCI_SOURCE_SELECT_PWM_EVENT_D
@ PWM_PCI_SOURCE_SELECT_PCI21
‍device pin
@ PWM_PCI_SOURCE_SELECT_PCI20
‍device pin
@ PWM_PCI_SOURCE_SELECT_TIED_TO_0
@ PWM_PCI_SOURCE_SELECT_PCI8R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_CMP2
@ PWM_PCI_SOURCE_SELECT_PCI12R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_PCI19
‍device pin
@ PWM_PCI_SOURCE_SELECT_COMBO_TRIG_A
@ PWM_PCI_SOURCE_SELECT_PWMPCI_MUX
@ PWM_PCI_SOURCE_SELECT_PCI11R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_PWM_EVENT_A
@ PWM_PCI_SOURCE_SELECT_PCI9R
‍RPn input
@ PWM_PCI_SOURCE_SELECT_PWM_EVENT_C
@ PWM_PCI_INPUT10
@ PWM_PCI_INPUT11
@ PWM_UPDTRG_PGxDC
a write to PGxDC will update
@ PWM_UPDTRG_PGxTRIGA
a write to PGxTRIGA will update
@ PWM_UPDTRG_PGxPHASE
a write to PGxPHASE will update
@ PWM_UPDTRG_MANUAL
user must manual set UPDREQ bit to update
@ RPnR_VIRTUAL_PIN_RP177
@ RPnR_VIRTUAL_PIN_RP181
@ RPnR_VIRTUAL_PIN_RP176
@ RPnR_VIRTUAL_PIN_RP179
@ RPnR_VIRTUAL_PIN_RP178
@ RPnR_VIRTUAL_PIN_RP180
@ PWM_PCI_ACCEPT_ANY_EDGE
@ PWM_PCI_ACCEPT_LEVEL_SENSITIVE
@ PWM_PCI_ACCEPT_RISING_EDGE
@ PWM_PCI_ACCEPT_LATCHED
@ PWM_PCI_ACCEPT_LATCHED_ANY_EDGE
@ PWM_PCI_ACCEPT_LATCHED_RISING_EDGE
@ PWM_TRIG_MODE_RETRIGGERABLE
@ PWM_TRIG_MODE_SINGLE