想做个PWM1A、2A、3A同步计数,然后2A、3A相对于1A同时改变占空比与位移的程序,结果发现 经常会出现占空比出错的问题,某个pwm会随机发出100%占空比的输出一个周期,下个周期才能正常,有办法解决嘛。相位与占空比都限制了上限,不会超过80%占空比。
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.
想做个PWM1A、2A、3A同步计数,然后2A、3A相对于1A同时改变占空比与位移的程序,结果发现 经常会出现占空比出错的问题,某个pwm会随机发出100%占空比的输出一个周期,下个周期才能正常,有办法解决嘛。相位与占空比都限制了上限,不会超过80%占空比。
您好,
您所遇到的PWM同步和随机100%占空比脉冲的问题似乎与PWM相位偏移和动作限定符(AQ)事件被遗漏的已知现象有关。以下是关键点和解决方案:
1 根本原因:问题发生在以下情况下:
- 当 TBCTR 小于 CMPA 而 TBPHS 值大于 CMPA(计数上升)
- 或者 TBCTR 大于 CMPA 而 TBPHS 值小于 CMPA(计数下降)
在这些情况下,当发生同步时,计数器可能会跳过 CMPA 值,从而错过本应发生的动作限定事件,导致您观察到的临时 100% 占空比。
2 推荐的解决方案:为了解决这个问题,您可以实施以下步骤:
a) 使用T1/T2行为限定符事件来捕捉遗漏的操作:
在检测到上述条件时启用T1或T2事件;
配置T1/T2以执行在CMPA时应发生的相同操作;
将EPWM_SYNC设置为T1事件源;
配置在T1上升/下降时采取的行动以匹配您想要的PWM行为。
b) 对于SVPWM,因您提到在CMPA > TBPHS的区段中操作:
考虑使用上下计数模式并进行适当的相位移计算;
在使用上下模式时,请记住相位移需要考虑2*TBPRD;
您可能需要调整TBPHS并为您的区段转换适当地设置PHSDIR。
3 附加考虑事项:
确保阴影寄存器为您的更新方案正确配置;
多个阴影寄存器可以在需要时用来加载复杂波形序列;
验证您的TBCLK同步是否正确配置。
确保您的占空比更新在适当的计数值上进行,以避免时间冲突