CPU为TMS320F2808,最近一个项目需要在每个周期单独设置高有效、低有效。计数方式为连续增减计数,产生对称载波,比较寄存器采用SHADOW模式,TBCTR过零时更新。
想用以下的代码实现,一下代码在PWM中断服务程序中
低有效:
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;
高有效:
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;
但是有个问题AQCTLA的寄存器没有SHADOW模式,设置之后立即生效,而中断服务程序的执行时间只能保证小于PWM周期,在一个周期内更新的时刻是不确定的,即使在中断服务程序开始更新AQCTLA也无法完全做到同步。如果AQCTLA.和CMPA.half.CMPA一样有自己的SHADOW寄存器,可以设置在TBCTR过零更新就可以了。现有的条件下,有没有比较好的解决方案?