请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F2809 我使用 F2809 ePWM 来控制4个开关。 它是 UP_DOWN 计数模式、在 zero_period 上加载。 我将使用2个 PWM 通道、例如 ePwm1a、ePwm1b 用于2个开关、ePwm2a 和 ePwm2b 用于2个其他开关、总共4个。 我正在尝试在特定时间段锁定 PWM 通道的状态(如所示、Pwm1a 在整个周期中处于开启状态、而 Pwm1b 在整个周期中处于关闭状态)。 延迟必须绝对最小化、即使在很短的时间内、也无法让它们改变状态。 下面是我的代码看起来的样子。
问题是、在初始化和某些边缘情况下、我会遇到一些意外行为。 我在阅读 ePWM 参考指南 spru791f.pdf、在第2.4.4节中、它说只将介于1和 TBPRD-1之间的值加载到 CMPA 中。 我还应该如何根据正弦波的值锁定 PWM 端口?
_iq 正弦波; if (sinewave >_IQ(0))//命令**高于** 0 { EPwm1Regs.CMPA.half.CMPA =_IQmpy (正弦波、TBPRD);//正弦波时间周期 EPwm2Regs.CMPA.half.CMPA = 0; //锁定 PWM 互补开/关 } else //命令**低于**0 { EPwm1Regs.CMPA.half.CMPA = 0; //锁定 PWM 互补开/关 EPwm2Regs.CMPA.half.CMPA =_IQmpy (正弦波、TBPRD);//正弦波时间周期
}