部件号: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寄存器(不带阴影寄存器)有什么影响?
谢谢,此致。