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.

[参考译文] TMS320F280049:中断嵌套的问题

Guru**** 2538950 points
Other Parts Discussed in Thread: TMS320F280049, TMS320F28062

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/831567/tms320f280049-on-the-problem-of-interrupting-nesting

器件型号:TMS320F280049
主题中讨论的其他器件: TMS320F28062

1、最近平台切换出现了几个问题(从 TMS320F28062切换到 TMS320F280049)

关于中断嵌套:启用、例如:代码有两个中断:Timer0和 ADCA2、现在运行时、我需要在进入 ADCIR 后关闭 TIMER0、以防止 TIMER0中断 ADCIR 中程序的执行。 该代码涉及以下方面:

中断空 ADC_OVER ISR ()   

AdcaRegs.ADCINTFLGCLR.bit.ADCINT2 = 1;

   PieCtrlRegs.PIEIER1.bit.INTx7=0;

   AdcaRegs.ADCINTFLGCLR.bit.ADCINT2 = 1;

   PieCtrlRegs.PIEACX.ALL = PIEACK_group10;

EINT;

 

 … 代码……

 

PieCtrlRegs.PIEIER1.bit.INTx7=1;

现在根据上述代码执行、程序将进入一个非法中断(不会发生 TMS320F28062)。

如果您更改为启用 Timer0和 ADCA1 (PIE1组中断)、然后通过上述逻辑操作、程序将不会进入非法中断、代码可以正常运行。 造成这种情况的原因是什么?

2、当使用使能 Timer0和 ADCA1中断来执行代码时、发现一些变量在中断嵌套过程中进入 ADC 中断服务子例程后发生了变化、 这些变量的更改应该由 TIMER0中断执行、因此怀疑在进入 ADC 中断服务子例程后 TIMER0没有完全关闭、并且它将偶尔进入。

例如:中断 void ADC_over_ISR ()  

中断空 ADC_OVER ISR ()   

AdcaRegs.ADCINTFLGCLR.bit.ADCINT2 = 1;

   PieCtrlRegs.PIEIER1.bit.INTx7=0;

   AdcaRegs.ADCINTFLGCLR.bit.ADCINT2 = 1;

   PieCtrlRegs.PIEACX.ALL = PIEACK_group10;

EINT;

     if (gStepAlgo >ESA_PwmOff)

    {

     … 代码……

    }否则{

… 代码……

gStepAlgo_pre = gStepAlgo;    

PieCtrlRegs.PIEIER1.bit.INTx7=1;

在上述代码中可以发现、在顺序执行 else 段代码之后、gStepAlgo 大于 ESA_PwmOff (gStepAlgo 更改应在 TIMER0中执行)。 理论上、gStepAlgo 应首先在 TIMER0中断中更改、然后进入 ADC 中断以执行 IF 段代码。 我在这里无法理解。 我需要您的支持。

3、关于 X 缓冲区的软件配置、由于此处的平台差异很大、有一些细节需要支持。

 

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

    您好!

    您能告诉我中断嵌套的确切要求吗? 默认情况下、嵌套被禁用。

    在 Timer0 ISR 正在执行并且收到 ADCA2中断时、是否需要嵌套? 您可以使用软件优先级来实现这种情况。

    有关嵌套中断的正确序列、请参阅以下链接。

    http://processors.wiki.ti.com/index.php/Interrupt_Nesting_on_C28x

    谢谢

    Vasudha

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

    您好!

    两个器件上的中断架构相同、但存储器架构稍有不同。 因此、请确保为 F280049器件使用正确的链接器 cmd 文件。 在 F280049上运行时、您可以检查 NMISHDFLG 寄存器(代码跳转到非法 ISR 后)以了解是否存在导致它跳转到非法 ISR 的错误。 请告诉我们您的发现。

    此致、

    Vivek Singh