大家好、我的客户正在使用 F28075开发逆变器。 开关频率为5kHz、有时会观察到 PWM 缺失。 它是由逆变器状态标志位(unFlagSystemA.bit.bInvst)更改引起的。
在 main()函数中,它们将 unFlagSystemA.bit.bInvst 的值设置为0或1,代码如下所示。 它是 唯一写入 unFlagSystemA.bit.bInvst 值的位置。
在中断中、当 unFlagSystemA.bit.bInvst 为0时、它们将禁用 PWM。
它们将在 中断中观察到 unFlagSystemA.bit.bInvst 变为0、这会导致 PWM 丢失(禁用)、但 在进入中断之前、unFlagSystemA.bit.bInvst 为1。
因此、它们添加了"DINT"来在写入 unFlagSystemA.bit.bInvst 之前禁用所有中断、然后添加了"EINT"来启用中断。 就像这样
否则、if (unFlagModOnOffCtrl.bit.bWakeUpOn=1)
{
Dint;
unFlagSystemA.bit.bInvst=1;
EINT;
}
然后、它们不会出现 PWM 缺失问题。
但奇怪的是、中断中的标志位值发生了变化、原因可能是什么、以及如何避免这种情况呢?
客户正在将代码从 F2808迁移到 F28075、他们的代码在 F2808上很好。