Bar Logo 4kW dsPIC33C PSFB DC-DC DA (Part-No. )
 
Content
     
Loading...
Searching...
No Matches
drv_mcc_extension_pwm.h
Go to the documentation of this file.
1
7#ifndef DRV_MCC_EXTENSION_PWM_H
8#define DRV_MCC_EXTENSION_PWM_H
9
10#include <xc.h>
11#include <stdint.h> // include standard integer data types
12#include <stdbool.h> // include standard boolean data types
13#include <stddef.h> // include standard definition data types
14
15// Identify the number of PWM in the device selected
16#if defined (PG8CONL)
17#define PWM_MAX_COUNT 8
18#elif defined (PG4CONL)
19#define PWM_MAX_COUNT 4
20#else
21#pragma message "selected device has no supported PWM generators"
22#endif
23
24
37
39
40
41
50inline static void PWM_PCI_Fault_AcceptanceCriteria(uint16_t pwmIndex,
52{
53
54 switch (pwmIndex)
55 {
56 case 1:
57 PG1FPCIHbits.ACP = acpSetting;
58 break;
59 case 2:
60 PG2FPCIHbits.ACP = acpSetting;
61 break;
62 case 3:
63 PG3FPCIHbits.ACP = acpSetting;
64 break;
65 case 4:
66 PG4FPCIHbits.ACP = acpSetting;
67 break;
68 #if (PWM_MAX_COUNT == 8)
69 case 5:
70 PG5FPCIHbits.ACP = acpSetting;
71 break;
72 case 6:
73 PG6FPCIHbits.ACP = acpSetting;
74 break;
75 case 7:
76 PG7FPCIHbits.ACP = acpSetting;
77 break;
78 case 8:
79 PG8FPCIHbits.ACP = acpSetting;
80 break;
81 #endif
82 default:
83 break;
84 };
85}
86
87
97inline static void PWM_PCI_Fault_AcceptanceQualiferInvert(uint16_t pwmIndex, bool invert)
98{
99 switch (pwmIndex)
100 {
101 case 1:
102 PG1FPCILbits.AQPS = (uint16_t)invert;
103 break;
104 case 2:
105 PG2FPCILbits.AQPS = (uint16_t)invert;
106 break;
107 case 3:
108 PG3FPCILbits.AQPS = (uint16_t)invert;
109 break;
110 case 4:
111 PG4FPCILbits.AQPS = (uint16_t)invert;
112 break;
113 #if (PWM_MAX_COUNT == 8)
114 case 5:
115 PG5FPCILbits.AQPS = (uint16_t)invert;
116 break;
117 case 6:
118 PG6FPCILbits.AQPS = (uint16_t)invert;
119 break;
120 case 7:
121 PG7FPCILbits.AQPS = (uint16_t)invert;
122 break;
123 case 8:
124 PG8FPCILbits.AQPS = (uint16_t)invert;
125 break;
126 #endif
127 default:
128 break;
129 };
130}
131
132
141inline static void PWM_PCI_Sync_AcceptanceCriteria(uint16_t pwmIndex, PWM_PCI_ACCEPTANCE_CRITERIA_t acpSetting)
142{
143 switch (pwmIndex)
144 {
145 case 1:
146 PG1SPCIHbits.ACP = acpSetting;
147 break;
148 case 2:
149 PG2SPCIHbits.ACP = acpSetting;
150 break;
151 case 3:
152 PG3SPCIHbits.ACP = acpSetting;
153 break;
154 case 4:
155 PG4SPCIHbits.ACP = acpSetting;
156 break;
157 #if (PWM_MAX_COUNT == 8)
158 case 5:
159 PG5SPCIHbits.ACP = acpSetting;
160 break;
161 case 6:
162 PG6SPCIHbits.ACP = acpSetting;
163 break;
164 case 7:
165 PG7SPCIHbits.ACP = acpSetting;
166 break;
167 case 8:
168 PG8SPCIHbits.ACP = acpSetting;
169 break;
170 #endif
171 default:
172 break;
173
174 };
175}
176
177
187
188
198inline static void PWM_PCI_Fault_TimetoTerminateAfterEvent(uint16_t pwmIndex, PWM_PCI_TERMTIME_AFTER_EVENT_t faultTerm)
199{
200 switch (pwmIndex)
201 {
202 case 1:
203 PG1FPCILbits.TSYNCDIS = faultTerm;
204 break;
205 case 2:
206 PG2FPCILbits.TSYNCDIS = faultTerm;
207 break;
208 case 3:
209 PG3FPCILbits.TSYNCDIS = faultTerm;
210 break;
211 case 4:
212 PG4FPCILbits.TSYNCDIS = faultTerm;
213 break;
214 #if (PWM_MAX_COUNT == 8)
215 case 5:
216 PG5FPCILbits.TSYNCDIS = faultTerm;
217 break;
218 case 6:
219 PG6FPCILbits.TSYNCDIS = faultTerm;
220 break;
221 case 7:
222 PG7FPCILbits.TSYNCDIS = faultTerm;
223 break;
224 case 8:
225 PG8FPCILbits.TSYNCDIS = faultTerm;
226 break;
227 #endif
228 default:
229 break;
230
231 };
232}
233
234
244inline static void PWM_PCI_Sync_TimetoTerminateAfterEvent(uint16_t pwmIndex, PWM_PCI_TERMTIME_AFTER_EVENT_t faultTerm)
245{
246 switch (pwmIndex)
247 {
248 case 1:
249 PG1SPCILbits.TSYNCDIS = faultTerm;
250 break;
251 case 2:
252 PG2SPCILbits.TSYNCDIS = faultTerm;
253 break;
254 case 3:
255 PG3SPCILbits.TSYNCDIS = faultTerm;
256 break;
257 case 4:
258 PG4SPCILbits.TSYNCDIS = faultTerm;
259 break;
260 #if (PWM_MAX_COUNT == 8)
261 case 5:
262 PG5SPCILbits.TSYNCDIS = faultTerm;
263 break;
264 case 6:
265 PG6SPCILbits.TSYNCDIS = faultTerm;
266 break;
267 case 7:
268 PG7SPCILbits.TSYNCDIS = faultTerm;
269 break;
270 case 8:
271 PG8SPCILbits.TSYNCDIS = faultTerm;
272 break;
273 #endif
274 default:
275 break;
276
277 };
278}
279
280
294
295
304inline static void PWM_StartOfCycleTrigger(uint16_t pwmIndex, PWM_SOCS_t triggerSource)
305{
306 switch (pwmIndex)
307 {
308 case 1:
309 PG1CONHbits.SOCS = triggerSource;
310 break;
311 case 2:
312 PG2CONHbits.SOCS = triggerSource;
313 break;
314 case 3:
315 PG3CONHbits.SOCS = triggerSource;
316 break;
317 case 4:
318 PG4CONHbits.SOCS = triggerSource;
319 break;
320 #if (PWM_MAX_COUNT == 8)
321 case 5:
322 PG5CONHbits.SOCS = triggerSource;
323 break;
324 case 6:
325 PG6CONHbits.SOCS = triggerSource;
326 break;
327 case 7:
328 PG7CONHbits.SOCS = triggerSource;
329 break;
330 case 8:
331 PG8CONHbits.SOCS = triggerSource;
332 break;
333 #endif
334 default:
335 break;
336 }
337}
338
339
352inline static void PWM_UPDREQ_Broadcast_Enable(uint16_t pwmIndex, bool enable)
353{
354 uint16_t enable_ = (uint16_t)enable;
355 PG1CONHbits.MSTEN = enable_;
356
357 switch (pwmIndex)
358 {
359 case 1:
360 PG1CONHbits.MSTEN = enable_;
361 break;
362 case 2:
363 PG2CONHbits.MSTEN = enable_;
364 break;
365 case 3:
366 PG3CONHbits.MSTEN = enable_;
367 break;
368 case 4:
369 PG4CONHbits.MSTEN = enable_;
370 break;
371 #if (PWM_MAX_COUNT == 8)
372 case 5:
373 PG5CONHbits.MSTEN = enable_;
374 break;
375 case 6:
376 PG6CONHbits.MSTEN = enable_;
377 break;
378 case 7:
379 PG7CONHbits.MSTEN = enable_;
380 break;
381 case 8:
382 PG8CONHbits.MSTEN = enable_;
383 break;
384 #endif
385 default:
386 break;
387 }
388}
389
390
402
403
416inline static void PWM_Data_Update_Mode(uint16_t pwmIndex, PWM_UPDMOD_t updateMode)
417{
418 switch (pwmIndex)
419 {
420 case 1:
421 PG1CONHbits.UPDMOD = updateMode;
422 break;
423 case 2:
424 PG2CONHbits.UPDMOD = updateMode;
425 break;
426 case 3:
427 PG3CONHbits.UPDMOD = updateMode;
428 break;
429 case 4:
430 PG4CONHbits.UPDMOD = updateMode;
431 break;
432 #if (PWM_MAX_COUNT == 8)
433 case 5:
434 PG5CONHbits.UPDMOD = updateMode;
435 break;
436 case 6:
437 PG6CONHbits.UPDMOD = updateMode;
438 break;
439 case 7:
440 PG7CONHbits.UPDMOD = updateMode;
441 break;
442 case 8:
443 PG8CONHbits.UPDMOD = updateMode;
444 break;
445 #endif
446 default:
447 break;
448 }
449}
450
451
456{
461 #if (PWM_MAX_COUNT == 8)
462 PWM_PCI_SOURCE_PWM5 = 4,
463 PWM_PCI_SOURCE_PWM6 = 5,
464 PWM_PCI_SOURCE_PWM7 = 6,
465 PWM_PCI_SOURCE_PWM8 = 7
466 #endif
467};
469
470
480inline static void PWM_PCI_Source1(uint16_t pwmIndex, PWM_PCI_SOURCE_t pciSource)
481{
482 switch (pwmIndex)
483 {
484 case 1:
485 PG1LEBHbits.PWMPCI = (uint16_t)pciSource;
486 break;
487 case 2:
488 PG2LEBHbits.PWMPCI = (uint16_t)pciSource;
489 break;
490 case 3:
491 PG3LEBHbits.PWMPCI = (uint16_t)pciSource;
492 break;
493 case 4:
494 PG4LEBHbits.PWMPCI = (uint16_t)pciSource;
495 break;
496 #if (PWM_MAX_COUNT == 8)
497 case 5:
498 PG5LEBHbits.PWMPCI = (uint16_t)pciSource;
499 break;
500 case 6:
501 PG6LEBHbits.PWMPCI = (uint16_t)pciSource;
502 break;
503 case 7:
504 PG7LEBHbits.PWMPCI = (uint16_t)pciSource;
505 break;
506 case 8:
507 PG8LEBHbits.PWMPCI = (uint16_t)pciSource;
508 break;
509 #endif
510 default:
511 break;
512 }
513}
514
515
520{
577
578
579
593
594
609inline static void RPnR_VirtualPin_Source(RPnR_VIRTUAL_PIN_t virtualPin, RPnR_SOURCE_t peripheral)
610{
611
612 __builtin_write_RPCON(0x0000); // unlock PPS
613
614 switch (virtualPin)
615 {
617 RPOR24bits.RP176R = peripheral;
618 break;
619
621 RPOR24bits.RP177R = peripheral;
622 break;
623
625 RPOR25bits.RP178R = peripheral;
626 break;
627
629 RPOR25bits.RP179R = peripheral;
630 break;
631
633 RPOR26bits.RP180R = peripheral;
634 break;
635
637 RPOR26bits.RP181R = peripheral;
638 break;
639
640 default:
641 break;
642 };
643
644 __builtin_write_RPCON(0x0800); // lock PPS
645}
646
647
652{
721 RPx_INPUT_RP181 = 181
724
725
737
738
747inline static void PWM_PCI_INPUT_MaptoPin(PWM_PCI_INPUT_t pciIndex, RPx_INPUT_t pin)
748{
749 __builtin_write_RPCON(0x0000); // unlock PPS
750 switch (pciIndex)
751 {
752 case PWM_PCI_INPUT8:
753 RPINR12bits.PCI8R = pin;
754 break;
755
756 case PWM_PCI_INPUT9:
757 RPINR12bits.PCI9R = pin;
758 break;
759
760 case PWM_PCI_INPUT10:
761 RPINR13bits.PCI10R = pin;
762 break;
763
764 case PWM_PCI_INPUT11:
765 RPINR13bits.PCI11R = pin;
766 break;
767
768 default:
769 break;
770 };
771 __builtin_write_RPCON(0x0800); // lock PPS
772}
773
774
813
815
816
817
826inline static void PWM_PCI_Sync_Source_Select(uint16_t pwmIndex, PWM_PCI_SOURCE_SELECT_t pciSource)
827{
828 switch (pwmIndex)
829 {
830 case 1:
831 PG1SPCILbits.PSS = pciSource;
832 break;
833 case 2:
834 PG2SPCILbits.PSS = pciSource;
835 break;
836 case 3:
837 PG3SPCILbits.PSS = pciSource;
838 break;
839 case 4:
840 PG4SPCILbits.PSS = pciSource;
841 break;
842 #if (PWM_MAX_COUNT == 8)
843 case 5:
844 PG5SPCILbits.PSS = pciSource;
845 break;
846 case 6:
847 PG6SPCILbits.PSS = pciSource;
848 break;
849 case 7:
850 PG7SPCILbits.PSS = pciSource;
851 break;
852 case 8:
853 PG8SPCILbits.PSS = pciSource;
854 break;
855 #endif
856 default:
857 break;
858 };
859}
860
861
862
879
880
881
892{
893 switch (pwmIndex)
894 {
895 case 1:
896 PG1FPCILbits.AQSS = source;
897 break;
898 case 2:
899 PG2FPCILbits.AQSS = source;
900 break;
901 case 3:
902 PG3FPCILbits.AQSS = source;
903 break;
904 case 4:
905 PG4FPCILbits.AQSS = source;
906 break;
907 #if (PWM_MAX_COUNT == 8)
908 case 5:
909 PG5FPCILbits.AQSS = source;
910 break;
911 case 6:
912 PG6FPCILbits.AQSS = source;
913 break;
914 case 7:
915 PG7FPCILbits.AQSS = source;
916 break;
917 case 8:
918 PG8FPCILbits.AQSS = source;
919 break;
920 #endif
921 default:
922 break;
923 };
924}
925
926
936
937
946inline static void PWM_Trigger_Mode(uint16_t pwmIndex, PWM_TRIG_MODE_t trigMode)
947{
948 switch (pwmIndex)
949 {
950 case 1:
951 PG1CONHbits.TRGMOD = trigMode;
952 break;
953 case 2:
954 PG2CONHbits.TRGMOD = trigMode;
955 break;
956 case 3:
957 PG3CONHbits.TRGMOD = trigMode;
958 break;
959 case 4:
960 PG4CONHbits.TRGMOD = trigMode;
961 break;
962 #if (PWM_MAX_COUNT == 8)
963 case 5:
964 PG5CONHbits.TRGMOD = trigMode;
965 break;
966 case 6:
967 PG6CONHbits.TRGMOD = trigMode;
968 break;
969 case 7:
970 PG7CONHbits.TRGMOD = trigMode;
971 break;
972 case 8:
973 PG8CONHbits.TRGMOD = trigMode;
974 break;
975 #endif
976 default:
977 break;
978 };
979}
980
981
997
998
1007inline static void PWM_PCI_Sync_TerminationEventSelect(uint16_t pwmIndex, PWM_PCI_TERM_t termEvent)
1008{
1009 switch (pwmIndex)
1010 {
1011 case 1:
1012 PG1SPCILbits.TERM = termEvent;
1013 break;
1014 case 2:
1015 PG2SPCILbits.TERM = termEvent;
1016 break;
1017 case 3:
1018 PG3SPCILbits.TERM = termEvent;
1019 break;
1020 case 4:
1021 PG4SPCILbits.TERM = termEvent;
1022 break;
1023 #if (PWM_MAX_COUNT == 8)
1024 case 5:
1025 PG5SPCILbits.TERM = termEvent;
1026 break;
1027 case 6:
1028 PG6SPCILbits.TERM = termEvent;
1029 break;
1030 case 7:
1031 PG7SPCILbits.TERM = termEvent;
1032 break;
1033 case 8:
1034 PG8SPCILbits.TERM = termEvent;
1035 break;
1036 #endif
1037 default:
1038 break;
1039 };
1040}
1041
1042
1052inline static void PWM_Swap_PWMxL_and_PWMxH(uint16_t pwmIndex, bool swapPWMH_PWML)
1053{
1054 switch (pwmIndex)
1055 {
1056 case 1:
1057 PG1IOCONLbits.SWAP = swapPWMH_PWML;
1058 break;
1059 case 2:
1060 PG2IOCONLbits.SWAP = swapPWMH_PWML;
1061 break;
1062 case 3:
1063 PG3IOCONLbits.SWAP = swapPWMH_PWML;
1064 break;
1065 case 4:
1066 PG4IOCONLbits.SWAP = swapPWMH_PWML;
1067 break;
1068 #if (PWM_MAX_COUNT == 8)
1069 case 5:
1070 PG5IOCONLbits.SWAP = swapPWMH_PWML;
1071 break;
1072 case 6:
1073 PG6IOCONLbits.SWAP = swapPWMH_PWML;
1074 break;
1075 case 7:
1076 PG7IOCONLbits.SWAP = swapPWMH_PWML;
1077 break;
1078 case 8:
1079 PG8IOCONLbits.SWAP = swapPWMH_PWML;
1080 break;
1081 #endif
1082 default:
1083 break;
1084 };
1085}
1086
1087
1106
1107
1120inline static void PWM_EVENTA_Configure( uint16_t pwmSource,
1121 PWM_EVENT_SOURCE_t eventSource,
1122 bool invert,
1123 bool outputEnable,
1124 bool stretchDisable,
1125 bool outputSync)
1126{
1127 {
1128 PWMEVTAbits.EVTAPGS = (pwmSource-1);
1129 PWMEVTAbits.EVTAOEN = outputEnable;
1130 PWMEVTAbits.EVTAPOL = invert;
1131 PWMEVTAbits.EVTASTRD = stretchDisable;
1132 PWMEVTAbits.EVTASYNC = outputSync;
1133 PWMEVTAbits.EVTASEL = eventSource;
1134 };
1135}
1136
1137
1149
1150
1160inline static void PWM_Data_Update_Trigger(uint16_t pwmIndex, PWM_UPDTRG_t updateTrigger)
1161{
1162 switch (pwmIndex)
1163 {
1164 case 1:
1165 PG1EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1166 break;
1167 case 2:
1168 PG2EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1169 break;
1170 case 3:
1171 PG3EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1172 break;
1173 case 4:
1174 PG4EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1175 break;
1176 #if (PWM_MAX_COUNT == 8)
1177 case 5:
1178 PG5EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1179 break;
1180 case 6:
1181 PG6EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1182 break;
1183 case 7:
1184 PG7EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1185 break;
1186 case 8:
1187 PG8EVTLbits.UPDTRG = (uint16_t)updateTrigger;
1188 break;
1189 #endif
1190 default:
1191 break;
1192 }
1193}
1194
1195
1205
1206
1215inline static void PWM_Fault_LatchMode(uint16_t pwmIndex, PWM_LATCH_MODE_t latchMode)
1216{
1217 switch (pwmIndex)
1218 {
1219 case 1:
1220 PG1FPCIHbits.LATMOD = latchMode;
1221 break;
1222 case 2:
1223 PG2FPCIHbits.LATMOD = latchMode;
1224 break;
1225 case 3:
1226 PG3FPCIHbits.LATMOD = latchMode;
1227 break;
1228 case 4:
1229 PG4FPCIHbits.LATMOD = latchMode;
1230 break;
1231 #if (PWM_MAX_COUNT == 8)
1232 case 5:
1233 PG5FPCIHbits.LATMOD = latchMode;
1234 break;
1235 case 6:
1236 PG6FPCIHbits.LATMOD = latchMode;
1237 break;
1238 case 7:
1239 PG7FPCIHbits.LATMOD = latchMode;
1240 break;
1241 case 8:
1242 PG8FPCIHbits.LATMOD = latchMode;
1243 break;
1244 #endif
1245 default:
1246 break;
1247 };
1248}
1249
1250
1260
1261
1270inline static void PWM_Fault_DataMode(uint16_t pwmIndex, PWM_FAULT_DATA_t faultDataMode)
1271{
1272 switch (pwmIndex)
1273 {
1274 case 1:
1275 PG1IOCONLbits.FLTDAT = faultDataMode;
1276 break;
1277 case 2:
1278 PG2IOCONLbits.FLTDAT = faultDataMode;
1279 break;
1280 case 3:
1281 PG3IOCONLbits.FLTDAT = faultDataMode;
1282 break;
1283 case 4:
1284 PG4IOCONLbits.FLTDAT= faultDataMode;
1285 break;
1286 #if (PWM_MAX_COUNT == 8)
1287 case 5:
1288 PG5IOCONLbits.FLTDAT = faultDataMode;
1289 break;
1290 case 6:
1291 PG6IOCONLbits.FLTDAT = faultDataMode;
1292 break;
1293 case 7:
1294 PG7IOCONLbits.FLTDAT = faultDataMode;
1295 break;
1296 case 8:
1297 PG8IOCONLbits.FLTDAT = faultDataMode;
1298 break;
1299 #endif
1300 default:
1301 break;
1302 };
1303}
1304
1305#endif /* DRV_MCC_EXTENSION_PWM_H */
1306
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
@ PWM_PCI_SOURCE_SELECT_PCI16R
@ PWM_PCI_SOURCE_SELECT_PCI17R
@ PWM_PCI_SOURCE_SELECT_PCI14R
@ 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
@ PWM_PCI_SOURCE_SELECT_PCI18R
@ PWM_PCI_SOURCE_SELECT_PCI15R
@ PWM_PCI_SOURCE_SELECT_CMP1
@ PWM_PCI_SOURCE_SELECT_PWM_EVENT_D
@ PWM_PCI_SOURCE_SELECT_PCI21
@ PWM_PCI_SOURCE_SELECT_PCI20
@ PWM_PCI_SOURCE_SELECT_TIED_TO_0
@ PWM_PCI_SOURCE_SELECT_PCI8R
@ PWM_PCI_SOURCE_SELECT_CMP2
@ PWM_PCI_SOURCE_SELECT_PCI12R
@ PWM_PCI_SOURCE_SELECT_PCI19
@ PWM_PCI_SOURCE_SELECT_COMBO_TRIG_A
@ PWM_PCI_SOURCE_SELECT_PWMPCI_MUX
@ PWM_PCI_SOURCE_SELECT_PCI11R
@ PWM_PCI_SOURCE_SELECT_PWM_EVENT_A
@ PWM_PCI_SOURCE_SELECT_PCI9R
@ 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