TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28069M: ECAP捕获CAP1计数异常

Part Number:TMS320F28069MOther Parts Discussed in Thread:C2000WARE

在捕获一个短沿的时候CAP1计数未能正常捕获:利润CAP1捕获上升沿,在捕获一个占空比低于3.4%的沿的时候,没能正常捕获到这个上升沿的下降沿,捕获到了下一个周期的下降沿。

Green Deng:

你好,目前来说怀疑的只有中断优先级导致的问题。不知道你的工程中是否有其他持续时间比较长的高优先级中断?

另外,你可以用例程先测试一下,看能否正确采集上升下降沿:C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2806x\examples\c28\ecap_capture_pwm

,

qi peng:

您好;

  实验是基于这个例程修改了部分PWM的生成代码用来产生不同占空比的波形。目前的话是使用的ECAP1,GPIO5作为输入端;目前寄存器CAP1~CAP4中只有CAP1出现了这个问题,当该CAP1记录一个短沿的时候会多记录一个周期。

,

Green Deng:

你好,也就是说,你的例程只是修改了PWM的占空比,然后出现的问题是CAP1会捕获当前一个脉冲的上升沿和下一个脉冲的下降沿?

方便给出一下你的程序修改了哪些语句吗?

,

qi peng:

InitEPwmTimer(){ EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; EDIS;

EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//TB_COUNT_UP; // Count up EPwm1Regs.TBPRD = 8000;//PWM3_TIMER_MAX; EPwm1Regs.TBPHS.all = 0x00000000;

EPwm1Regs.CMPCTL.bit.SHDWAMODE = 1; EPwm1Regs.CMPCTL.bit.SHDWBMODE = 1; EPwm1Regs.CMPA.half.CMPA =4000; EPwm1Regs.CMPB = (Uint16)4000;

EPwm1Regs.AQCTLA.bit.CAU = 2; EPwm1Regs.AQCTLA.bit.CAD = 1; EPwm1Regs.AQCTLB.bit.CAU = 2; EPwm1Regs.AQCTLB.bit.CAD = 1; //EPwm1Regs.AQCTLA.bit.PRD = AQ_TOGGLE; // Toggle on PRD

EPwm1Regs.DBCTL.bit.IN_MODE = 2; EPwm1Regs.DBCTL.bit.POLSEL = 2; EPwm1Regs.DBCTL.bit.OUT_MODE = 3; // // TBCLK = SYSCLKOUT // EPwm1Regs.TBCTL.bit.HSPCLKDIV = 1; EPwm1Regs.TBCTL.bit.CLKDIV = 0;

//EPwm6TimerDirection = EPWM_TIMER_UP;

EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; EDIS;}

将原ecap1_isr代码PWM修改部分删除添加了

EPwm1Regs.TBPRD = tpwm; EPwm1Regs.CMPA.half.CMPA = a; TSt1 = ECap1Regs.CAP1; TSt2 = ECap1Regs.CAP2; TSt3 = ECap1Regs.CAP3; TSt4 = ECap1Regs.CAP4;

,

Green Deng:

收到,我会跟其他工程师核对一下代码后看看是否有问题。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28069M: ECAP捕获CAP1计数异常
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1