TI中文支持网
TI专业的中文技术问题咨询交流网站

在TMS320F28377S的CLA task 中无法修改PWM的比较寄存器的值

interrupt void Cla1Task1 (void)
{
//Local Variables

//i=fGridVoltRatio;

//Code
__mdebugstop();
//int i;

Num = 100.0;
Den = 10.0;

//i++;
GpioDataRegs.GPATOGGLE.bit.GPIO20 = 1;
__meallow();
EPwm12Regs.CMPB.bit.CMPB = 10;
EPwm1Regs.CMPA.bit.CMPA = 100;
__medis();
//
/*if(EPwm1Regs.CMPA.bit.CMPA >= 400)
{
EPwm1Regs.CMPA.bit.CMPA–;
}
if(EPwm1Regs.CMPA.bit.CMPA <= 40)
{
EPwm1Regs.CMPA.bit.CMPA++;
}*/

// Res = CLAdiv(Num,Den);
Res = Num/Den;

}

可以肯定程序是进到CLA TASK了,因为测试到GPIO20反转了,也计算出来了RES的值,但是单步调试时,EPwm1Regs.CMPA.bit.CMPA是我初始化的值,而不会变成100,请问这是什么原因?CLA访问EPwm1Regs.CMPA.bit.CMPA还需要配置其他的吗?或者是CMD文件需要特别的配置。

Green Deng:

一般不太会直接对寄存器进行加减运算,试一下定义一个变量,对变量进行加减操作,然后把变量值赋给EPwm1Regs.CMPA.bit.CMPA呢? 另外在CLA中使用变量需要在.cla中先声明,定义位置,然后在task8中初始化才能正常使用。

—————————————————————————————————————————————————————————————————————————

TI 诚邀您参加全新设计的产品页面测试,参加测试即可享有 TI 购物 9 折优惠码,点击加入 EP产品页面测试报名,名额有限。感谢您的参与!

user1078330:

回复 Green Deng:

你说的这个办法我已经试过了,还是不行。

interrupt void Cla1Task1 (void){ //Local Variables

//i=fGridVoltRatio;

//Code __mdebugstop(); //int i;

Num = 100.0; Den = 10.0;

//i++; GpioDataRegs.GPATOGGLE.bit.GPIO20 = 1; __meallow(); EPwm12Regs.CMPB.bit.CMPB = 10; EPwm1Regs.CMPA.bit.CMPA = Num; __medis(); // /*if(EPwm1Regs.CMPA.bit.CMPA >= 400) { EPwm1Regs.CMPA.bit.CMPA–; } if(EPwm1Regs.CMPA.bit.CMPA <= 40) { EPwm1Regs.CMPA.bit.CMPA++; }*/

// Res = CLAdiv(Num,Den); Res = Num/Den;

}

我利用Num给EPwm1Regs.CMPA.bit.CMPA赋值,通过单步运行,Num是变成了10.0,但是EPwm1Regs.CMPA.bit.CMPA的值没有改变,还是我初始化时的值。

我看到网上很多人遇到这个问题,请问怎么解决?比较急

Green Deng:

回复 user1078330:

请问你是如何验证CMPA寄存器没有得到更新的?是否有查看EPWM输出波形?还是只是在CCS的expression窗口中观察到了寄存器值?因为expression窗口中的更新值只能在C28x调试范围中观察到,而不能在CLA调试范围中观察到。
你也可以参考一个类似的例子“cla_ex4_pwm_control”,在C2000Ware中作为F28004x CLA driverlib例子的一部分,它也更新了CLA任务内EPWM的CMPA寄存器,以更新PWM的占空比。

user1078330:

回复 Green Deng:

我在expressiong窗口中观察过,也用示波器观察过EPWM的波形,都显示没有更新CMPA。如果需要,我可以把整个工程都发给你

Green Deng:

回复 user1078330:

你好,我看了一下之前回复你的例程,例程中是使用了影子寄存器的,你参考F280049的例程,用影子寄存器测试一下呢?
C:\ti\c2000\C2000Ware_3_01_00_00\driverlib\f28004x\examples\cla中的cla_ex4_pwm_control例程

赞(0)
未经允许不得转载:TI中文支持网 » 在TMS320F28377S的CLA task 中无法修改PWM的比较寄存器的值
分享到: 更多 (0)