工具与软件:
如图所示、载波的频率为80k、对应的 PRD 为2500、黄色是 ADCint1 (LC)的中断运行时间、绿色是 ADCint2 (DC)的中断运行时间、而紫色是 EPWM31 (计时器)的中断运行时间。 当 CMPD=10时、触发 SOCA 脉冲事件。 此时、ADC3通道的 SOC1开始转换。 在时间 T1转换后、生成 EOC1信号以触发 ADCint1中断。 当 CMPC=1200时、会触发 SOCB 脉冲事件、此时 ADC3通道的 SOC3开始在 T2转换后从 SOC3、SOC4、SOC5转换为 SOC6、SOC6、SOC6、这会生成 EOC6信号以触发 ADCint2中断。
症状1:ADCint2中断被 EPWM31中断抢先一次、ADCint1中断再次被抢占
问题1:如上图所示、为什么 ADCint2 (DC)中断优先两次?
猜测原因:可能是因为 EPWM31 (计时器)中断早于 ADCint2 (直流)中断、因此 ADCint2 (直流)中断延迟一个周期、而且当 EPWM31 (计时器)中断结束时、EOC1信号会在中断的2.4us 内生成以触发 ADCint1 (LC)中断。 由于 ADCint1 (LC)中断的响应优先级高于 ADCint2 (DC)中断的响应优先级、因此首先运行的 ADCint1 (LC)中断会导致两个连续的 ADCint2 (DC)中断。
症状1:ADCint2中断被 EPWM31中断抢占后、ADCint2中断再次被 ADCint1中断抢占、前一周期的 ADCINT2中断消失
问题2:如上图所示、为什么 ADCint2 (DC)中断在被抢占两次后消失?
猜测原因:可能是因为 EPWM31 (计时器)中断早于 ADCint2 (直流)中断、因此 ADCint2 (直流)中断延迟一个周期、而且当 EPWM31 (计时器)中断结束时、EOC1信号会在中断的2.4us 内生成以触发 ADCint1 (LC)中断。 由于 ADCint1 (LC)中断的响应优先级高于 ADCint2 (DC)中断的响应优先级、因此首先运行的 ADCint1 (LC)中断会导致前一周期的 ADCint2 (DC)中断在此周期中运行。 但是、LC 的运行时间太长、因此当 SOC6在当前周期开始转换时、上一周期 ADCint2 (DC)中断的触发源 EOC6将被忽略。 因此、上一周期的 ADCint2 (DC)中断被忽略、只有当前周期内的 ADCint2 (DC)中断运行。