Lines Matching refs:subModule
104 static void PWM_SetPeriodRegister(PWM_Type *base, pwm_submodule_t subModule, pwm_mode_t mode, uint1… in PWM_SetPeriodRegister() argument
114 base->SM[subModule].INIT = PWM_GetComplementU16(modulo); in PWM_SetPeriodRegister()
116 base->SM[subModule].VAL0 = 0; in PWM_SetPeriodRegister()
119 base->SM[subModule].VAL1 = modulo - 1U; in PWM_SetPeriodRegister()
124 base->SM[subModule].INIT = 0; in PWM_SetPeriodRegister()
126 base->SM[subModule].VAL0 = (pulseCnt / 2U); in PWM_SetPeriodRegister()
129 base->SM[subModule].VAL1 = pulseCnt - 1U; in PWM_SetPeriodRegister()
135 base->SM[subModule].INIT = PWM_GetComplementU16(modulo); in PWM_SetPeriodRegister()
137 base->SM[subModule].VAL0 = 0; in PWM_SetPeriodRegister()
140 base->SM[subModule].VAL1 = modulo - 1U; in PWM_SetPeriodRegister()
145 base->SM[subModule].INIT = 0; in PWM_SetPeriodRegister()
147 base->SM[subModule].VAL0 = (pulseCnt / 2U); in PWM_SetPeriodRegister()
150 base->SM[subModule].VAL1 = pulseCnt - 1U; in PWM_SetPeriodRegister()
169 pwm_submodule_t subModule, in PWM_SetDutycycleRegister() argument
183 base->SM[subModule].VAL2 = PWM_GetComplementU16(pwmHighPulse / 2U); in PWM_SetDutycycleRegister()
184 base->SM[subModule].VAL3 = (pwmHighPulse / 2U); in PWM_SetDutycycleRegister()
188 base->SM[subModule].VAL4 = PWM_GetComplementU16(pwmHighPulse / 2U); in PWM_SetDutycycleRegister()
189 base->SM[subModule].VAL5 = (pwmHighPulse / 2U); in PWM_SetDutycycleRegister()
200 base->SM[subModule].VAL2 = ((pulseCnt - pwmHighPulse) / 2U); in PWM_SetDutycycleRegister()
201 base->SM[subModule].VAL3 = ((pulseCnt + pwmHighPulse) / 2U); in PWM_SetDutycycleRegister()
205 base->SM[subModule].VAL4 = ((pulseCnt - pwmHighPulse) / 2U); in PWM_SetDutycycleRegister()
206 base->SM[subModule].VAL5 = ((pulseCnt + pwmHighPulse) / 2U); in PWM_SetDutycycleRegister()
219 base->SM[subModule].VAL2 = PWM_GetComplementU16(modulo); in PWM_SetDutycycleRegister()
220 base->SM[subModule].VAL3 = PWM_GetComplementU16(modulo) + pwmHighPulse; in PWM_SetDutycycleRegister()
224 base->SM[subModule].VAL4 = PWM_GetComplementU16(modulo); in PWM_SetDutycycleRegister()
225 base->SM[subModule].VAL5 = PWM_GetComplementU16(modulo) + pwmHighPulse; in PWM_SetDutycycleRegister()
236 base->SM[subModule].VAL2 = 0; in PWM_SetDutycycleRegister()
237 base->SM[subModule].VAL3 = pwmHighPulse; in PWM_SetDutycycleRegister()
241 base->SM[subModule].VAL4 = 0; in PWM_SetDutycycleRegister()
242 base->SM[subModule].VAL5 = pwmHighPulse; in PWM_SetDutycycleRegister()
266 status_t PWM_Init(PWM_Type *base, pwm_submodule_t subModule, const pwm_config_t *config) in PWM_Init() argument
273 if ((config->clockSource == kPWM_Submodule0Clock) && (subModule == kPWM_Module_0)) in PWM_Init()
279 if ((config->reloadSelect == kPWM_MasterReload) && (subModule == kPWM_Module_0)) in PWM_Init()
286 CLOCK_EnableClock(s_pwmClocks[PWM_GetInstance(base)][subModule]); in PWM_Init()
296 reg = base->SM[subModule].CTRL2; in PWM_Init()
321 base->MCTRL &= ~((uint16_t)1U << (PWM_MCTRL_IPOL_SHIFT + (uint16_t)subModule)); in PWM_Init()
324 base->MCTRL |= ((uint16_t)1U << (PWM_MCTRL_IPOL_SHIFT + (uint16_t)subModule)); in PWM_Init()
330 base->SM[subModule].CTRL2 = reg; in PWM_Init()
332 reg = base->SM[subModule].CTRL; in PWM_Init()
360 base->SM[subModule].CTRL = reg; in PWM_Init()
375 base->SM[subModule].CTRL2 |= PWM_CTRL2_FORCE(1U); in PWM_Init()
387 void PWM_Deinit(PWM_Type *base, pwm_submodule_t subModule) in PWM_Deinit() argument
390 base->MCTRL &= ~((uint16_t)1U << (PWM_MCTRL_RUN_SHIFT + (uint16_t)subModule)); in PWM_Deinit()
394 CLOCK_DisableClock(s_pwmClocks[PWM_GetInstance(base)][subModule]); in PWM_Deinit()
471 pwm_submodule_t subModule, in PWM_SetupPwm() argument
497 …pwmClock = (srcClock_Hz / (1UL << ((base->SM[subModule].CTRL & PWM_CTRL_PRSC_MASK) >> PWM_CTRL_PRS… in PWM_SetupPwm()
510 PWM_SetPeriodRegister(base, subModule, mode, pulseCnt); in PWM_SetupPwm()
514 … PWM_SetDutycycleRegister(base, subModule, chnlParams->pwmChannel, mode, pulseCnt, pwmHighPulse); in PWM_SetupPwm()
523 base->SM[subModule].DTCNT0 = PWM_DTCNT0_DTCNT0(chnlParams->deadtimeValue); in PWM_SetupPwm()
529 base->SM[subModule].DTCNT1 = PWM_DTCNT1_DTCNT1(chnlParams->deadtimeValue); in PWM_SetupPwm()
536 base->SM[subModule].OCTRL &= ~((uint16_t)PWM_OCTRL_PWMAFS_MASK); in PWM_SetupPwm()
537 …base->SM[subModule].OCTRL |= (((uint16_t)(chnlParams->faultState) << (uint16_t)PWM_OCTRL_PWMAFS_SH… in PWM_SetupPwm()
541 base->SM[subModule].OCTRL &= ~((uint16_t)PWM_OCTRL_PWMBFS_MASK); in PWM_SetupPwm()
542 …base->SM[subModule].OCTRL |= (((uint16_t)(chnlParams->faultState) << (uint16_t)PWM_OCTRL_PWMBFS_SH… in PWM_SetupPwm()
553 base->SM[subModule].OCTRL &= ~((uint16_t)1U << (uint16_t)polarityShift); in PWM_SetupPwm()
557 base->SM[subModule].OCTRL |= ((uint16_t)1U << (uint16_t)polarityShift); in PWM_SetupPwm()
562 base->OUTEN |= ((uint16_t)1U << ((uint16_t)outputEnableShift + (uint16_t)subModule)); in PWM_SetupPwm()
566 s_pwmGetPwmDutyCycle[subModule][chnlParams->pwmChannel] = chnlParams->dutyCyclePercent; in PWM_SetupPwm()
590 pwm_submodule_t subModule, in PWM_SetupPwmPhaseShift() argument
609 …pwmClock = (srcClock_Hz / (1UL << ((base->SM[subModule].CTRL & PWM_CTRL_PRSC_MASK) >> PWM_CTRL_PRS… in PWM_SetupPwmPhaseShift()
613 if (0U != (base->MCTRL & PWM_MCTRL_LDOK(1UL << (uint8_t)subModule))) in PWM_SetupPwmPhaseShift()
615 base->MCTRL |= PWM_MCTRL_CLDOK(1UL << (uint8_t)subModule); in PWM_SetupPwmPhaseShift()
620 base->SM[subModule].INIT = PWM_GetComplementU16(modulo); in PWM_SetupPwmPhaseShift()
622 base->SM[subModule].VAL0 = 0; in PWM_SetupPwmPhaseShift()
625 base->SM[subModule].VAL1 = modulo - 1U; in PWM_SetupPwmPhaseShift()
628 base->SM[subModule].CTRL |= PWM_CTRL_LDMOD_MASK; in PWM_SetupPwmPhaseShift()
638 base->SM[subModule].VAL2 = PWM_GetComplementU16(modulo) + shift; in PWM_SetupPwmPhaseShift()
639 base->SM[subModule].VAL3 = PWM_GetComplementU16(modulo) + pwmHighPulse + shift - 1U; in PWM_SetupPwmPhaseShift()
643 base->SM[subModule].VAL4 = PWM_GetComplementU16(modulo) + shift; in PWM_SetupPwmPhaseShift()
644 base->SM[subModule].VAL5 = PWM_GetComplementU16(modulo) + pwmHighPulse + shift - 1U; in PWM_SetupPwmPhaseShift()
654 base->MCTRL |= PWM_MCTRL_LDOK(1UL << (uint8_t)subModule); in PWM_SetupPwmPhaseShift()
681 pwm_submodule_t subModule, in PWM_UpdatePwmDutycycle() argument
690 PWM_UpdatePwmDutycycleHighAccuracy(base, subModule, pwmSignal, currPwmMode, reloadValue); in PWM_UpdatePwmDutycycle()
709 …PWM_Type *base, pwm_submodule_t subModule, pwm_channels_t pwmSignal, pwm_mode_t currPwmMode, uint1… in PWM_UpdatePwmDutycycleHighAccuracy() argument
718 modulo = base->SM[subModule].VAL1 + 1U; in PWM_UpdatePwmDutycycleHighAccuracy()
724 pulseCnt = base->SM[subModule].VAL1 + 1U; in PWM_UpdatePwmDutycycleHighAccuracy()
729 modulo = base->SM[subModule].VAL1 + 1U; in PWM_UpdatePwmDutycycleHighAccuracy()
735 pulseCnt = base->SM[subModule].VAL1 + 1U; in PWM_UpdatePwmDutycycleHighAccuracy()
747 PWM_SetDutycycleRegister(base, subModule, kPWM_PwmA, currPwmMode, pulseCnt, pwmHighPulse); in PWM_UpdatePwmDutycycleHighAccuracy()
751 PWM_SetDutycycleRegister(base, subModule, kPWM_PwmB, currPwmMode, pulseCnt, pwmHighPulse); in PWM_UpdatePwmDutycycleHighAccuracy()
761 s_pwmGetPwmDutyCycle[subModule][pwmSignal] = (uint8_t)(dutyCycle * 100U / 65535U); in PWM_UpdatePwmDutycycleHighAccuracy()
789 pwm_submodule_t subModule, in PWM_UpdatePwmPeriodAndDutycycle() argument
803 PWM_SetPeriodRegister(base, subModule, currPwmMode, pulseCnt); in PWM_UpdatePwmPeriodAndDutycycle()
806 PWM_SetDutycycleRegister(base, subModule, pwmSignal, currPwmMode, pulseCnt, pwmHighPulse); in PWM_UpdatePwmPeriodAndDutycycle()
809 s_pwmGetPwmDutyCycle[subModule][pwmSignal] = (uint8_t)((dutyCycle * 100U) / 65535U); in PWM_UpdatePwmPeriodAndDutycycle()
824 pwm_submodule_t subModule, in PWM_SetupInputCapture() argument
846 base->SM[subModule].CAPTCTRLA = reg; in PWM_SetupInputCapture()
849 … base->SM[subModule].CAPTCOMPA = PWM_CAPTCOMPA_EDGCMPA(inputCaptureParams->edgeCompareValue); in PWM_SetupInputCapture()
851 base->OUTEN &= ~((uint16_t)1U << (PWM_OUTEN_PWMA_EN_SHIFT + (uint16_t)subModule)); in PWM_SetupInputCapture()
869 base->SM[subModule].CAPTCTRLB = reg; in PWM_SetupInputCapture()
872 … base->SM[subModule].CAPTCOMPB = PWM_CAPTCOMPB_EDGCMPB(inputCaptureParams->edgeCompareValue); in PWM_SetupInputCapture()
874 base->OUTEN &= ~((uint16_t)1U << (PWM_OUTEN_PWMB_EN_SHIFT + (uint16_t)subModule)); in PWM_SetupInputCapture()
891 base->SM[subModule].CAPTCTRLX = reg; in PWM_SetupInputCapture()
894 … base->SM[subModule].CAPTCOMPX = PWM_CAPTCOMPX_EDGCMPX(inputCaptureParams->edgeCompareValue); in PWM_SetupInputCapture()
896 base->OUTEN &= ~((uint16_t)1U << (PWM_OUTEN_PWMX_EN_SHIFT + (uint16_t)subModule)); in PWM_SetupInputCapture()
1051 void PWM_SetupForceSignal(PWM_Type *base, pwm_submodule_t subModule, pwm_channels_t pwmChannel, pwm… in PWM_SetupForceSignal() argument
1058 shift = ((uint16_t)subModule * 4U) + ((uint16_t)pwmChannel * 2U); in PWM_SetupForceSignal()
1075 void PWM_EnableInterrupts(PWM_Type *base, pwm_submodule_t subModule, uint32_t mask) in PWM_EnableInterrupts() argument
1078 base->SM[subModule].INTEN |= ((uint16_t)mask & 0xFFFFU); in PWM_EnableInterrupts()
1091 void PWM_DisableInterrupts(PWM_Type *base, pwm_submodule_t subModule, uint32_t mask) in PWM_DisableInterrupts() argument
1093 base->SM[subModule].INTEN &= ~((uint16_t)mask & 0xFFFFU); in PWM_DisableInterrupts()
1106 uint32_t PWM_GetEnabledInterrupts(PWM_Type *base, pwm_submodule_t subModule) in PWM_GetEnabledInterrupts() argument
1110 enabledInterrupts = base->SM[subModule].INTEN; in PWM_GetEnabledInterrupts()
1124 uint32_t PWM_GetStatusFlags(PWM_Type *base, pwm_submodule_t subModule) in PWM_GetStatusFlags() argument
1128 statusFlags = base->SM[subModule].STS; in PWM_GetStatusFlags()
1142 void PWM_ClearStatusFlags(PWM_Type *base, pwm_submodule_t subModule, uint32_t mask) in PWM_ClearStatusFlags() argument
1146 base->SM[subModule].STS = ((uint16_t)mask & 0xFFFFU); in PWM_ClearStatusFlags()
1168 status_t PWM_SetOutputToIdle(PWM_Type *base, pwm_channels_t pwmChannel, pwm_submodule_t subModule, … in PWM_SetOutputToIdle() argument
1174 if (0U != (base->MCTRL & PWM_MCTRL_LDOK(1UL << (uint8_t)subModule))) in PWM_SetOutputToIdle()
1176 base->MCTRL |= PWM_MCTRL_CLDOK(1UL << (uint8_t)subModule); in PWM_SetOutputToIdle()
1179 valOff = base->SM[subModule].INIT; in PWM_SetOutputToIdle()
1180 valOn = base->SM[subModule].VAL1 + 0x1U; in PWM_SetOutputToIdle()
1190 if (0U != (base->SM[subModule].OCTRL & PWM_OCTRL_POLA_MASK)) in PWM_SetOutputToIdle()
1194 valOn = base->SM[subModule].INIT; in PWM_SetOutputToIdle()
1195 valOff = base->SM[subModule].VAL1 + 0x1U; in PWM_SetOutputToIdle()
1202 valOn = base->SM[subModule].INIT; in PWM_SetOutputToIdle()
1203 valOff = base->SM[subModule].VAL1 + 0x1U; in PWM_SetOutputToIdle()
1206 base->SM[subModule].VAL2 = valOn; in PWM_SetOutputToIdle()
1207 base->SM[subModule].VAL3 = valOff; in PWM_SetOutputToIdle()
1211 if (0U != (base->SM[subModule].OCTRL & PWM_OCTRL_POLB_MASK)) in PWM_SetOutputToIdle()
1215 valOn = base->SM[subModule].INIT; in PWM_SetOutputToIdle()
1216 valOff = base->SM[subModule].VAL1 + 0x1U; in PWM_SetOutputToIdle()
1223 valOn = base->SM[subModule].INIT; in PWM_SetOutputToIdle()
1224 valOff = base->SM[subModule].VAL1 + 0x1U; in PWM_SetOutputToIdle()
1227 base->SM[subModule].VAL4 = valOn; in PWM_SetOutputToIdle()
1228 base->SM[subModule].VAL5 = valOff; in PWM_SetOutputToIdle()
1236 ldmod = base->SM[subModule].CTRL; in PWM_SetOutputToIdle()
1238 base->SM[subModule].CTRL |= PWM_CTRL_LDMOD_MASK; in PWM_SetOutputToIdle()
1240 base->MCTRL |= PWM_MCTRL_LDOK(1UL << (uint8_t)subModule); in PWM_SetOutputToIdle()
1242 base->SM[subModule].CTRL = ldmod; in PWM_SetOutputToIdle()
1245 s_pwmGetPwmDutyCycle[subModule][pwmChannel] = 0x0U; in PWM_SetOutputToIdle()
1259 uint8_t PWM_GetPwmChannelState(PWM_Type *base, pwm_submodule_t subModule, pwm_channels_t pwmChannel) in PWM_GetPwmChannelState() argument
1261 return s_pwmGetPwmDutyCycle[subModule][pwmChannel]; in PWM_GetPwmChannelState()
1271 void PWM_SetClockMode(PWM_Type *base, pwm_submodule_t subModule, pwm_clock_prescale_t prescaler) in PWM_SetClockMode() argument
1273 uint16_t reg = base->SM[subModule].CTRL; in PWM_SetClockMode()
1276 if (0U != (base->MCTRL & PWM_MCTRL_LDOK(1UL << (uint8_t)subModule))) in PWM_SetClockMode()
1278 base->MCTRL |= PWM_MCTRL_CLDOK(1UL << (uint8_t)subModule); in PWM_SetClockMode()
1283 base->SM[subModule].CTRL = reg; in PWM_SetClockMode()
1285 base->SM[subModule].CTRL |= PWM_CTRL_LDMOD_MASK; in PWM_SetClockMode()
1287 base->MCTRL |= PWM_MCTRL_LDOK(1UL << (uint8_t)subModule); in PWM_SetClockMode()
1289 base->SM[subModule].CTRL = reg; in PWM_SetClockMode()
1301 void PWM_SetPwmForceOutputToZero(PWM_Type *base, pwm_submodule_t subModule, pwm_channels_t pwmChann… in PWM_SetPwmForceOutputToZero() argument
1304 uint16_t reg = base->SM[subModule].CTRL2; in PWM_SetPwmForceOutputToZero()
1310 mask = PWM_MASK_MASKA(0x01UL << (uint8_t)subModule); in PWM_SetPwmForceOutputToZero()
1314 mask = PWM_MASK_MASKB(0x01UL << (uint8_t)subModule); in PWM_SetPwmForceOutputToZero()
1318 mask = PWM_MASK_MASKX(0x01UL << (uint8_t)subModule); in PWM_SetPwmForceOutputToZero()
1334 base->MASK |= PWM_MASK_UPDATE_MASK(0x01UL << (uint8_t)subModule); in PWM_SetPwmForceOutputToZero()
1337 base->SM[subModule].CTRL2 &= ~(uint16_t)PWM_CTRL2_FORCE_SEL_MASK; in PWM_SetPwmForceOutputToZero()
1339 base->SM[subModule].CTRL2 |= PWM_CTRL2_FORCE_MASK; in PWM_SetPwmForceOutputToZero()
1341 base->SM[subModule].CTRL2 = reg; in PWM_SetPwmForceOutputToZero()
1354 pwm_submodule_t subModule, in PWM_SetChannelOutput() argument
1359 uint16_t reg = base->SM[subModule].CTRL2; in PWM_SetChannelOutput()
1363 mask = PWM_MASK_MASKA(0x01UL << (uint8_t)subModule); in PWM_SetChannelOutput()
1364 swcout = (uint16_t)PWM_SWCOUT_SM0OUT23_MASK << ((uint8_t)subModule * 2U); in PWM_SetChannelOutput()
1365 sourceShift = PWM_DTSRCSEL_SM0SEL23_SHIFT + ((uint16_t)subModule * 4U); in PWM_SetChannelOutput()
1369 mask = PWM_MASK_MASKB(0x01UL << (uint8_t)subModule); in PWM_SetChannelOutput()
1370 swcout = (uint16_t)PWM_SWCOUT_SM0OUT45_MASK << ((uint8_t)subModule * 2U); in PWM_SetChannelOutput()
1371 sourceShift = PWM_DTSRCSEL_SM0SEL45_SHIFT + ((uint16_t)subModule * 4U); in PWM_SetChannelOutput()
1375 mask = PWM_MASK_MASKX(0x01UL << (uint8_t)subModule); in PWM_SetChannelOutput()
1417 base->SM[subModule].CTRL2 &= ~(uint16_t)PWM_CTRL2_FORCE_SEL_MASK; in PWM_SetChannelOutput()
1419 base->SM[subModule].CTRL2 |= PWM_CTRL2_FORCE_MASK; in PWM_SetChannelOutput()
1421 base->SM[subModule].CTRL2 = reg; in PWM_SetChannelOutput()
1436 status_t PWM_SetPhaseDelay(PWM_Type *base, pwm_channels_t pwmChannel, pwm_submodule_t subModule, ui… in PWM_SetPhaseDelay() argument
1438 assert(subModule != kPWM_Module_0); in PWM_SetPhaseDelay()
1439 uint16_t reg = base->SM[subModule].CTRL2; in PWM_SetPhaseDelay()
1442 if (0U != (base->MCTRL & PWM_MCTRL_LDOK(1UL << (uint8_t)subModule))) in PWM_SetPhaseDelay()
1444 base->MCTRL |= PWM_MCTRL_CLDOK(1UL << (uint8_t)subModule); in PWM_SetPhaseDelay()
1461 … ((base->SM[subModule].CTRL2 & PWM_CTRL2_RELOAD_SEL_MASK) >> PWM_CTRL2_RELOAD_SEL_SHIFT) == 1U) in PWM_SetPhaseDelay()
1463 base->SM[subModule].PHASEDLY = 1U; in PWM_SetPhaseDelay()
1464 base->SM[subModule].INIT = base->SM[0].INIT - 1U; in PWM_SetPhaseDelay()
1465 base->SM[subModule].VAL0 = base->SM[0].VAL0 - 1U; in PWM_SetPhaseDelay()
1466 base->SM[subModule].VAL1 = base->SM[0].VAL1 - 1U; in PWM_SetPhaseDelay()
1467 base->SM[subModule].VAL2 = base->SM[0].VAL2 - 1U; in PWM_SetPhaseDelay()
1468 base->SM[subModule].VAL3 = base->SM[0].VAL3 - 1U; in PWM_SetPhaseDelay()
1469 base->SM[subModule].VAL4 = base->SM[0].VAL4 - 1U; in PWM_SetPhaseDelay()
1470 base->SM[subModule].VAL5 = base->SM[0].VAL5 - 1U; in PWM_SetPhaseDelay()
1474 base->SM[subModule].PHASEDLY = delayCycles; in PWM_SetPhaseDelay()
1477 base->SM[subModule].PHASEDLY = delayCycles; in PWM_SetPhaseDelay()
1484 base->SM[subModule].CTRL |= PWM_CTRL_LDMOD_MASK; in PWM_SetPhaseDelay()
1486 base->MCTRL |= PWM_MCTRL_LDOK(1UL << (uint8_t)subModule); in PWM_SetPhaseDelay()
1488 base->SM[subModule].CTRL2 = reg; in PWM_SetPhaseDelay()