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.
EPWM配置为增计数模式并配置动作寄存器EPwm6Regs.AQCTLA.bit.ZRO = AQ_SET;EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR;运行一段时间切换成减计数模式,并配置动作寄存器EPwm6Regs.AQCTLA.bit.ZRO = AQ_CLEAR;EPwm6Regs.AQCTLA.bit.CAD = AQ_SET;
遇到问题:切换临界点的那个开关周期,类似于增技术模式和减计数模式同时存在,也就是说再切换临界点的那个周期计数模式改变了,但起作用的时间不是在下一个周期的开始位置而是在下一个周期的中间位置,再下一个周期就正常了。我想问一下为什么会这样?是否能够通过配置避免这个问题?
简叙:这个周期是增计数模式,我在这个周期的最后给了一个计数模式切换成减计数模式的指令,目的是想让下一个周期就是减计数模式。但不如人所愿,下一个周期是一个类似于增计数切换成减计数的过程,再下一个周期才是减计数模式。我想避免这个过程。
代码如下:
__interrupt void epwm6_isr(void)
{
++EPWMFLAG;
if(EPWMFLAG<50)
{
EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm6Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR;
}
else if(EPWMFLAG>=50&&EPWMFLAG<100)
{
EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_DOWN;
EPwm6Regs.AQCTLA.bit.ZRO = AQ_CLEAR;
EPwm6Regs.AQCTLA.bit.CAD = AQ_SET;
}
else
{
EPWMFLAG=0;
}
EPwm6Regs.ETCLR.bit.INT = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}
正常来说是不会在运行时改变计数模式的,计数模式的寄存器位在TRM中也有如下描述:
spruhx5h_TMS320F2837xS Real-Time Microcontrollers Technical Reference Manual (Rev. H)第1891页14.15.2.1 TBCTL Register (Offset = 0h) [Reset = 0083h]