Tool/software:
如图所示,载波的频率为80k,对应PRD为2500,黄色的为ADCint1(LC)的中断运行时间,绿色的为ADCint2(DC)的中断运行时间,紫色的为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(定时器)中断先于ADCint2(DC)中断的产生,所以ADCint2(DC)中断被延后一个周期,又由于EPWM31(定时器)中断结束时,出中断的2.4us内产生了EOC1信号来触发ADCint1(LC)中断,因为ADCint1(LC)中断的响应优先级高于ADCint2(DC)中断的响应优先级,所以先运行的ADCint1(LC)中断,导致连续运行两次ADCint2(DC)中断。
问题2:如上图所示,产生ADCint2(DC)中断为什么被抢占两次后消失?
如上图所示,产生ADCint2(DC)中断被抢占两次后消失的原因:可能是由于EPWM31(定时器)中断先于ADCint2(DC)中断的产生,所以ADCint2(DC)中断被延后一个周期,又由于EPWM31(定时器)中断结束时,出中断的2.4us内产生了EOC1信号来触发ADCint1(LC)中断,因为ADCint1(LC)中断的响应优先级高于ADCint2(DC)中断的响应优先级,所以先运行的ADCint1(LC)中断,导致上个周期的ADCint2(DC)中断会在这个周期运行,但LC的运行时间过长使得上个周期的ADCint2(DC)中断的触发源EOC6在本周期SOC6开始转换时而被忽略,导致上个周期的ADCint2(DC)中断被忽略,只运行本周期的ADCint2(DC)中断。