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.

[参考译文] TMS320F28335:PWM 错误行为-缺少周期

Guru**** 2587345 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1230957/tms320f28335-pwm-misbehavior---missing-cycle

器件型号:TMS320F28335

您好!

我有一个28335电路板、我在 PWM 通道上遇到了异常行为。 我需要挑选一些大脑来了解可能的原因。 电路板不使用 TZ、并且 TZ 寄存的未初始化。  

PWM 设置为10kHz、在某个特定的 PWM 占空比下、它会跳过整个周期并输出0超过100us。 邻近脉冲是正常的。 这种行为最初发生在大约70%的占空比时、我自动给计数器在5800-5900之间振铃、偶尔我会看到这种脉冲跳跃。  

当我将某个优化级别从 none 开启到-O2后、行为发生改变。 现在、它非常接近99%的占空比发生、并且是零星的。 这意味着99%的占空比在一个周期内变为零、然后再次变为99%。  

我的问题是、在代码中没有 PWM 寄存器的占空比变化的地方、占空比寄存器 CMPA.Half 从不变为零、那么有什么可能改变 PWM 的行为?  

我让 PWM 触发中断、并运行占空比更新。 在该 ISR 中、将禁用所有其他中断。 定时器 ISR 是项目中唯一的其它中断。

由于这与时序相关、我使用切换 IO 测试了 PWM ISR 的执行、该 IO 显示仅约50%使用。  

无论如何、还有什么提示可能影响 PWM 模块的逐周期行为? 不使用 TZ、在没有电源开关的情况下会发生这种情况...  

谢谢

此致

gz