TI中文支持网
TI专业的中文技术问题搜集分享网站

28069F的ePWM的触发中断和触发ADC采样的先后顺序问题

大家好,请问当程序中配置ePWM触发中断和ADC采样的条件都是TBCTR=0,那么在中断程序中读取ADC采样值时当前的值已经更新了吗?之间会有先后顺序吗?

配置的部分程序如下:

EPwm1Regs.ETSEL.bit.INTSEL= 1;       // ePWM中断选择条件(当TBCTR=0时)

EPwm1Regs.ETSEL.bit.SOCASEL  = 1;   // ePWMxSOCA信号产生条件:TBCTR=0

Young Hu:一般来说使用ePWM触发ADC采样,然后使用ADC中断

大家好,请问当程序中配置ePWM触发中断和ADC采样的条件都是TBCTR=0,那么在中断程序中读取ADC采样值时当前的值已经更新了吗?之间会有先后顺序吗?

配置的部分程序如下:

EPwm1Regs.ETSEL.bit.INTSEL= 1;       // ePWM中断选择条件(当TBCTR=0时)

EPwm1Regs.ETSEL.bit.SOCASEL  = 1;   // ePWMxSOCA信号产生条件:TBCTR=0

user4369064:

回复 Young Hu:

很感谢您的回复,您的这种方法也很好。
另外,还有两个疑问:
(1)比如我想在TBCTR=TBPRD和TBCTR=0处都触发一次中断,并且ADC都进行一次更新和一次占空比更新。那我设置触发ADC采样的条件为TBCTR=TBPRD和TBCTR=0,程序如下。然后都用ADC转化完成触发中断,这样可以吗?
EPwm1Regs.ETSEL.bit.SOCASEL= 1;// ePWMxSOCA信号产生条件:TBCTR=0
EPwm1Regs.ETSEL.bit.SOCASEL= 2;// ePWMxSOCA信号产生条件:TBCTR=TBPRD

(2)假如可以实现两次采样,但是PWM的占空比更新只能选择在TBCTR=TBPRD或者TBCTR=0才能实现,程序如下。这个又怎么解决呢?难道是在每次的中断中,修改如下的寄存器吗?
EPwm1Regs.CMPCTL.bit.LOADAMODE = 1; // (CTR=PRD)
EPwm1Regs.CMPCTL.bit.LOADAMODE = 2; // (CTR=0)

赞(1)
未经允许不得转载:TI中文支持网 » 28069F的ePWM的触发中断和触发ADC采样的先后顺序问题
分享到: 更多 (0)