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.

求助!关于2808的ePWM和ADC

Other Parts Discussed in Thread: TMS320F2808

我使用的是TMS320F2808芯片,要用到ADC和ePWM模块。使用启动停止模式的ADC采样,由ePWM的CTR=ZERO中断开启SEQ1序列发生器来采样。

问题是,CTR=ZERO事件产生时是进入ADC中断还是进入ePWM中断???我在ADC中断中处理采样值,再在ePWM中进行PI计算得到CMPA的更新值,这样行不行,同时进两个中断是不行的吧??

  • CTR=ZERO事件产生时是产生ADC触发信号还是进入ePWM中断,楼主可以看一下ETSEL寄存器的设置。

    ADC触发信号后,ADC采样完成才会产生ADC中断。关于ADC的时序,请看datasheet的Sequential Sampling Mode说明.

  • CTR=ZERO只是产生一个事件,并不进入任何中断,不过你可以根据这个事件决定做以下事情(完全独立的):

    1. PWM端口输出高或低电平(当然也可以翻转或不输出);

    2. 触发一个SEQ进行ADC采样;

    3. 进入PWM本身的中断;

    第一项可以通过AQ寄存器设置,后两项就如Forrest所说,都是由ETSEL寄存器确定的。

    当会触发ADC采样时,等采样结束,可以在ADC对应的寄存器中设置是否产生ADC中断,所以你既可以在ADC中断中处理采集值,同时更新CMP值,也可以稍后触发另一个PWM中断,在PWM中断中做同样的事情。

    除了理解清楚上面的几点,请明确任何一个中断中都可以读取ADC的结果(只要ADCResult寄存器里有),任何一个中断也可以更新PWM CMP的值。当然,这些事情只需要在一个中进行就可以了。