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.

AM2634:中断消失问题

Part Number: AM2634

Tool/software:

如图所示,载波的频率为80k,对应PRD2500,黄色的为ADCint1LC)的中断运行时间,绿色的为ADCint2DC)的中断运行时间,紫色的为EPWM31(定时器)的中断运行时间。当CMPD=10时,触发一个SOCA脉冲事件,此时ADC3通道的SOC1开始转换,经过时间t1转换产生EOC1信号来触发ADCint1中断;当CMPC=1200时,触发一个SOCB脉冲事件,此时ADC3通道的SOC3开始转换,依次从SOC3,SOC4,SOC5到SOC6,SOC6经过时间t2转换产生EOC6信号来触发ADCint2中断。

问题1:如上图所示,产生ADCint2(DC)中断为什么被抢占两次?

猜测原因:可能是由于EPWM31(定时器)中断先于ADCint2DC)中断的产生,所以ADCint2DC)中断被延后一个周期,又由于EPWM31(定时器)中断结束时,出中断的2.4us内产生了EOC1信号来触发ADCint1LC)中断,因为ADCint1LC)中断的响应优先级高于ADCint2DC)中断的响应优先级,所以先运行的ADCint1LC)中断,导致连续运行两次ADCint2DC)中断。

 

问题2:如上图所示,产生ADCint2(DC)中断为什么被抢占两次后消失?

如上图所示,产生ADCint2DC)中断被抢占两次后消失的原因:可能是由于EPWM31(定时器)中断先于ADCint2DC)中断的产生,所以ADCint2DC)中断被延后一个周期,又由于EPWM31(定时器)中断结束时,出中断的2.4us内产生了EOC1信号来触发ADCint1LC)中断,因为ADCint1LC)中断的响应优先级高于ADCint2DC)中断的响应优先级,所以先运行的ADCint1LC)中断,导致上个周期的ADCint2DC)中断会在这个周期运行,但LC的运行时间过长使得上个周期的ADCint2DC)中断的触发源EOC6在本周期SOC6开始转换时而被忽略,导致上个周期的ADCint2DC)中断被忽略,只运行本周期的ADCint2DC)中断。