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:中断消失问题 μ s

Guru**** 1821780 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1390749/am2634

器件型号:AM2634

工具与软件:

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

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

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

 

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

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