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.

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



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

配置的部分程序如下:

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

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

  • 一般来说使用ePWM触发ADC采样,然后使用ADC中断
  • 很感谢您的回复,您的这种方法也很好。
    另外,还有两个疑问:
    (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)