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.

[参考译文] TMS320F28379D:禁用/启用嵌套时中断嵌套已启用

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1359285/tms320f28379d-interrupt-nesting-disabled-enabled-while-nesting-is-already-enabled

器件型号:TMS320F28379D

您好!

我们将在 ADC 中断中嵌套一个 PWM 中断。

我们使用 TI 推荐的方法、即在 ADC 中断开始时、我们可以使用:

IER |= M_INT3;
IER &= M_INT3;
NOP;
EINT;

在 ADC 中断结束时、我们有:

Dint;

问题是:

在 ADC 中断的某些点、我们需要阻止嵌套 PWM 中断。

因此、我们调用 DINT、然后运行我们需要的代码、然后我们调用 EINT 来启用进一步的嵌套。

它似乎可以正常工作(通过在两个中断上切换 GPIO)、但我们要确保没有我们不捕获的"毛刺脉冲"。

上述方法是否采用了正确的方法?

我们想也许我们需要重复  

IER |= M_INT3;
IER &= M_INT3;
NOP;

然后再次调用 EINT。

谢谢!

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

    您拥有的应该是可以的。 除非您希望有多个 PWM 中断和一个 ADC ISR、否则不必再次重复 IER 设置。

    维维克·辛格

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

    谢谢 Vivek。

    是的、我们需要在一个 ADC ISR 中使用多个 PWM int。

    这些 PWM int 在我们执行如上所述的 DINT/EINT 前后发生。

    在这种情况下、我们需要怎么做?

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

    您能否也解释一下、如果是所有解决方案、为什么需要不同的解决方案?

    谢谢你。

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

    您好!

    我还没有看到或尝试过具有多个 EINT/DINT 的 ISR、以及在同一 ISR 中多次出现的相同中断、但它应该可以正常工作。 请尝试一下、如果您发现任何问题、请告诉我们。  

    另外、您之前提到的示例代码中也可能存在拼写错误。

    我认为 IER &= M_INT3;应为 IER &= MINT3;

    维维克·辛格