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.

[参考译文] TMDXIDDK377D:IDDK_PM_Servo_F2837x电机控制ISR计时

Guru**** 2553360 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/631240/tmdxiddk377d-iddk_pm_servo_f2837x-motor-control-isr-timing

部件号:TMDXIDDK377D

您好,

我目前正在使用IDDK_PM_Servo_F2837x作为参考项目。

对于ISR和ADC SOC的计时感到困惑。

EPwm11Regs.CMPA.bit.CMPA = 640+320+500;// 640+320;

     //设置从ePWM到ADC的链路

     EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_PRD;//从计数器中选择SOC,位于CTR = 0

     EPwm1Regs.ETPS.bit.SOCAPRD = ET_1;//    在第1个偶数上生成脉冲

     EPwm1Regs.ETSEL.bit.SOCAEN = 1;         //在组上启用SOC

     EPwm11Regs.ETSEL.bit.INTSEL = ET_CTRU_CMPA;  // PRD事件上的INT

     EPwm11Regs.ETSEL.bit.inten = 1;             //启用INT

     EPwm11Regs.ETPS.bit.INTPRD = ET_1ST;        //在每个事件上生成INT

据我所知,ISR在TBCTR = 1460处触发,ADC SOC在TBCTR = 5000处触发。

由于SOC在ISR之后触发,它将用于下一个ISR,并且由于CMPA寄存器在TBCTR =0处更新,因此ADC采样和PWM更新之间的整个更新延迟将是1.5 PWM周期。

我的问题是,我是否在这里遗漏了一些东西?如果不是,为什么会出现这种延误?

第二个问题是,立即加载CMPA寄存器(不带阴影寄存器)有什么影响?

谢谢,此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Ahmet:

    感谢您提供详细信息。 此线程已分配给C2000专家,应很快得到解答。

    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的观察是正确的,中断应该基于CTRD_CMPA,尝试更改并查看?
    即时更新挑战是,如果承运人已超过比较寄存器中写入的值,则相关边缘可能会丢失。