我使用的是TMS320F2808芯片,要用到ADC和ePWM模块。使用启动停止模式的ADC采样,由ePWM的CTR=ZERO中断开启SEQ1序列发生器来采样。
问题是,CTR=ZERO事件产生时是进入ADC中断还是进入ePWM中断???我在ADC中断中处理采样值,再在ePWM中进行PI计算得到CMPA的更新值,这样行不行,同时进两个中断是不行的吧??
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.
我使用的是TMS320F2808芯片,要用到ADC和ePWM模块。使用启动停止模式的ADC采样,由ePWM的CTR=ZERO中断开启SEQ1序列发生器来采样。
问题是,CTR=ZERO事件产生时是进入ADC中断还是进入ePWM中断???我在ADC中断中处理采样值,再在ePWM中进行PI计算得到CMPA的更新值,这样行不行,同时进两个中断是不行的吧??
CTR=ZERO只是产生一个事件,并不进入任何中断,不过你可以根据这个事件决定做以下事情(完全独立的):
1. PWM端口输出高或低电平(当然也可以翻转或不输出);
2. 触发一个SEQ进行ADC采样;
3. 进入PWM本身的中断;
第一项可以通过AQ寄存器设置,后两项就如Forrest所说,都是由ETSEL寄存器确定的。
当会触发ADC采样时,等采样结束,可以在ADC对应的寄存器中设置是否产生ADC中断,所以你既可以在ADC中断中处理采集值,同时更新CMP值,也可以稍后触发另一个PWM中断,在PWM中断中做同样的事情。
除了理解清楚上面的几点,请明确任何一个中断中都可以读取ADC的结果(只要ADCResult寄存器里有),任何一个中断也可以更新PWM CMP的值。当然,这些事情只需要在一个中进行就可以了。