最近在调试F28069的Ecap模块,使用Ecap捕获PWM的上升下降沿来计算PWM的占空比,按照官方的例程进行配置
初始化程序如下:
在进入中断后查看,CAP1、CAP2、CAP3、CAP4的值与计数器TSCTR的值都相同。
测试的PWM的周期为1.8ms。
不知是何原因?
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.
最近在调试F28069的Ecap模块,使用Ecap捕获PWM的上升下降沿来计算PWM的占空比,按照官方的例程进行配置
初始化程序如下:
在进入中断后查看,CAP1、CAP2、CAP3、CAP4的值与计数器TSCTR的值都相同。
测试的PWM的周期为1.8ms。
不知是何原因?
你用例程对比测试一下吧。
我按下面的修改是可以看到绝对值的变化的。当然,如果设置为1的话,那么就是差值,几个寄存器都是一样的。
ECap1Regs.ECCTL1.bit.CTRRST1 = 0; // Difference operation
ECap1Regs.ECCTL1.bit.CTRRST2 = 0; // Difference operation
ECap1Regs.ECCTL1.bit.CTRRST3 = 0; // Difference operation
ECap1Regs.ECCTL1.bit.CTRRST4 = 0; // Difference operation
C:\ti\controlSUITE\device_support\f2806x\v151\F2806x_examples_ccsv5\ecap_capture_pwm
// Cap input is syc'ed to SYSCLKOUT so there may be
// a +/- 1 cycle variation
// if(ECap1Regs.CAP2 > EPwm3Regs.TBPRD*2+1 || ECap1Regs.CAP2 < EPwm3Regs.TBPRD*2-1)
// {
// Fail();
// }
//
// if(ECap1Regs.CAP3 > EPwm3Regs.TBPRD*2+1 || ECap1Regs.CAP3 < EPwm3Regs.TBPRD*2-1)
// {
// Fail();
// }
//
// if(ECap1Regs.CAP4 > EPwm3Regs.TBPRD*2+1 || ECap1Regs.CAP4 < EPwm3Regs.TBPRD*2-1)
// {
// Fail();
// }
ECap1IntCount++;
// if(EPwm3TimerDirection == EPWM_TIMER_UP)
// {
// if(EPwm3Regs.TBPRD < PWM3_TIMER_MAX)
// {
// EPwm3Regs.TBPRD++;
// }
// else
// {
// EPwm3TimerDirection = EPWM_TIMER_DOWN;
// EPwm3Regs.TBPRD--;
// }
// }
// else
// {
// if(EPwm3Regs.TBPRD > PWM3_TIMER_MIN)
// {
// EPwm3Regs.TBPRD--;
// }
// else
// {
// EPwm3TimerDirection = EPWM_TIMER_UP;
// EPwm3Regs.TBPRD++;
// }
// }