主题中讨论的其他器件:C2000WARE
尊敬的团队:
我使用了两种方法来更新 CLA 中的 CMPA 值、但没有成功:
:1 μ H
中断空 Cla1Task1 (void) { //local Variables //i=fGridVoltRatio; //Code __debugstop(); //int I; Num = 100.0; Den = 10.0; //i++; GpioDataRegs.GPATOGGLE.bit.GPIO20 = 1; __meallow (); EPwm12Regs.CMPB.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 =}; = Dn = DRES/ DNum +
可以 确保程序已进入 CLA 任务、因为 GPIO20已被反转并且 RES 值已被计算。 但是,当单步调试时,寄存器“EPwm1Regs.CMPA.bit.CMPA”中的值始终是 I 初始化的值,而不是100
方法2:
中断空 Cla1Task1 (void) { //local Variables //i=fGridVoltRatio; //Code __debugstop(); //int I; Num = 100.0; Den = 10.0; //i++; GpioDataRegs.GPATOGGLE.bit.GPIO20 = 1; __meallow (); EPwm12Regs.CMPB.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 =}; = Dn = DRES/ DNum +
我使用 Num 将值分配给 EPwm1Regs.CMPA.bit.CMPA。单步调试时,Num 将变为10.0,但 EPwm1Regs.CMPA.bit.CMPA 的值没有改变。 它仍然是我的初始化值。
当我在 CLA 中更新 CMPA 寄存器的值时、我还需要注意什么吗?
此致