大家好、
我的客户更改 PHSDIR 会在 ePWM 的 ISR 期间正常运行。 和 ePWM 的波形、这改变了 PHSDIR 将在更改参数后的2到3个周期内保持异常低电平、 PHSDIR 。

EPwm5Regs.TBSTS.all=0; EPwm5Regs.TBPHS.half.TBPHS=0; EPwm5Regs.TBCTR=0; EPwm5Regs.CMPCTL.all=0x50; EPwm5Regs.CMPA.half.CMPA =750*0.5; EPwm5Regs.CMPB=0; EPwm5Regs.AQCTLA.all=0x6; EPwm5Regs.AQCTLB.all=0; EPwm5Regs.AQSFRC.all=0; EPwm5Regs.AQCSFRC.all=0; EPwm5Regs.TZSEL.all=0x0300; EPwm5Regs.TZCTL.all=0; EPwm5Regs.TZEINT.all=0; EPwm5Regs.TZFLG.all=0; EPwm5Regs.TZCLR.all=0; EPwm5Regs.TZCTL.bit.TZA = 0x2; EPwm5Regs.TZCTL.bit.TZB = 0x2; EPwm5Regs.DBRED=10; EPwm5Regs.DBFED=10; EPwm5Regs.ETSEL.all=0; EPwm5Regs.ETFLG.all=0; EPwm5Regs.ETCLR.all=0; EPwm5Regs.ETFRC.all=0; EPwm5Regs.PCCTL.all=0; EPwm5Regs.TBCTL.all=0x0020+200E; EPwm5Regs.TBCTL.bit.PHSEN = 0; EPwm5Regs.TBPRD=750;
if(PWM2_CC_Duty < -0.4)
{
PWM2_CC_Duty1 = 0.4;
PWM2_CC_Duty = -0.4;
EPwm5Regs.TBCTL.all=0x0020+200E;
EPwm5Regs.TBPHS.half.TBPHS=PWM2_CC_Duty1*phase_shift_cycle;
}
else if(PWM2_CC_Duty >= -0.4 && PWM2_CC_Duty < -0.007)
{
PWM2_CC_Duty1 = -PWM2_CC_Duty;
EPwm5Regs.TBCTL.all=0x0020+200E;
EPwm5Regs.TBPHS.half.TBPHS=PWM2_CC_Duty1*phase_shift_cycle;
}
if(PWM2_CC_Duty >= 0 && PWM2_CC_Duty <= 0.4)
{
EPwm5Regs.TBCTL.all=0x0020+000E;
PWM2_CC_Duty1 = PWM2_CC_Duty;
EPwm5Regs.TBPHS.half.TBPHS=PWM2_CC_Duty1*phase_shift_cycle;
}
为 同步 信号生成日期 CTR = CMPB = 0 , 周期 阈值为 相同 。 还有其他操作、例如在 ISR 期间更改占空比。 在本客户案例中、基极 PWM 是 ePWM1 和 ePWM5 系统遇到此问题。
以下是客户的项目:
e2e.ti.com/.../Thread_5F00_756634.zip
以及客户 重现问题的步骤:
e2e.ti.com/.../Thread_5F00_756634.mp4
GPIO0/1 属于 ePWM1 , GPIO8/9 属于 ePWM5 。
--
谢谢、此致
耶鲁