ZHCAF01 September 2024 TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1
通过以下方法可实现简单的权变措施:
while(EPwm1Regs.TBCTR>(EPwm1Regs.TBPRD – PwmUpdateTime))
{
} // Wait in while if there is no enough time for PWM register update.
PWMRegsUpdate(); //Function to update PWM shadow registers. Make sure to put all register updating code here before seting global load one-shot bit
EPwm1Regs.GLDCTL2.all = 1;
其中 PwmUpdateTime 是一个常数,表示为 PWM 影子寄存器写入保留的时间周期。
这样可以保留 PWM 周期结束前的一段时间。如果 PWM 更新发生在保留期内,CPU 将在 while 循环中运行,直到保留期过后才对 PWM 影子寄存器进行写入。这样,即使 GLDCTL2[OSHTLD] 由上一个 ISR 在同一个开关周期内置位,也不会发生不匹配的 PWM 寄存器更新。