原设计使用ePWM的AQ模块输入PWMxA,PWMxB两个互补的脉冲,没有使用死区,使用AQCSFRC寄存器控制AQ模块输出,关闭时两个管脚均强制输出低电平。
后来使能死区DB模块以后,经过死区模块DB以后,使用AQ模块输出的PWMxA作为上升沿和下降沿延时。关闭AQCSFRC寄存器控制关闭PWM脉冲以后,互补的一对脉冲变成了一高一低,不是需要的两个低电平。
使用死区以后如何能强制PWM输出低电平呢?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
以下两个开关PWM的函数,是否是这样实现的?初始化时设置TZ行为,比如强制低。
关闭PWM时,软件通过设置TZFRC.bit.OST制造一个TZ事件,使能PWM的时候再清掉这个事件。
这方法总感觉怪怪的,还是使用AQCSFRC设置感觉顺一点。
void EnablePWM(void)
{
EALLOW;
EPwm1Regs.TZCLR.bit.OST = 1;
EPwm2Regs.TZCLR.bit.OST = 1;
EPwm3Regs.TZCLR.bit.OST = 1;
EPwm4Regs.TZCLR.bit.OST = 1;
EPwm5Regs.TZCLR.bit.OST = 1;
EPwm6Regs.TZCLR.bit.OST = 1;
EDIS;
}
void DisablePWM(void)
{
EALLOW;
EPwm1Regs.TZFRC.bit.OST = 1;
EPwm2Regs.TZFRC.bit.OST = 1;
EPwm3Regs.TZFRC.bit.OST = 1;
EPwm4Regs.TZFRC.bit.OST = 1;
EPwm5Regs.TZFRC.bit.OST = 1;
EPwm6Regs.TZFRC.bit.OST = 1;
EDIS;
}