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.

PWM动态改变占空比,TBCTR计数问题



动态改变PWM的占空比,

例如   EPwm1Regs.TBPRD = 1000;

EPwm1Regs.CMPA.half.CMPA = 300; 

当改变EPwm1Regs.CMPA.half.CMPA = 500;时,TBCTR计数是从零开始,还是接着上次的值继续增加的??? 

  • 求大牛帮忙回答一下我的疑惑。。。。
  • 改变CMPA的值时, TBCTR是不会受影响的,所以是接着上次的值继续增加。

    只是EPWM模块的CMPA寄存器有一个Shadow寄存器,实际EPWM模块让新的CMPA值生效是要按照配置装载到Shadow中才会生效。

    一般的配置是在TBCTR=ZERO, 或者TBCTR = PERIOD时让新的CMPA生效,所以不会因为计算时间丢失这个周期的DUTY,但如果将CMPA装载的配置配置为Immediate的话,也就是立即装载,那么当计算出新的值会立刻更新,这样是有可能丢失DUTY的。