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.

[参考译文] F29H850TU:如何在 C29内核架构中嵌套相同的中断(例如 INT_TIMER0)?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1503487/f29h850tu-how-to-nest-the-same-interrupt-e-g-int_timer0-in-the-c29-core-architecture

器件型号:F29H850TU

工具/软件:

您好 TI 专家、

我使用 F29H850TU、我有一个关于中断嵌套功能的具体问题。

使用 C28内核和 PIE、只需在 ISR 内重新启用中断(使用 EINT)、然后在退出 ISR 之前再次禁用中断(DINT)、即可嵌套相同的中断。

我曾尝试使用 C29内核实现类似的功能、但发现相同的中断嵌套似乎不起作用。 我已经使用常规 INT 优先级和 RTINT 优先级对此进行了测试。

具体来说、我将尝试在其中嵌套相同的计时器中断(INT_TIMER0)。 例如、如果 INT_TIMER0触发并在为其提供服务时发生另一个 INT_TIMER0事件、则我希望在完成第一个实例之前处理第二个实例(当然、最多不超过特定数量的嵌套)。

我的问题是:

  1. 使用 C29内核是否完全可以嵌套相同的中断(如 INT_TIMER0)?
  2. 如果可能、常规 INT 和 RTINT 之间的配置是否不同?
  3. 要启用此功能、需要哪种特定的管道配置?
  4. 尝试嵌套相同的中断时、是否存在任何硬件限制或注意事项?

我已经查看了关于 PIPE 模块的 C29x Academy 材料和 TRM、但找不到有关嵌套相同中断实例的具体信息。

感谢您的帮助。
节拍

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

    嗨、Beat、

    通常、请参阅 F29x SDK 中的 interrupt_ex2_int_rtint_嵌 套 SW 示例、了解如何实现中断嵌套、例如有关如何使用 ENINT 来启用 INT 中的嵌套(RTINT 无法禁用)的详细信息。 我已  在此处链接了 GitHub、因为此示例比第一个版本稍作修改。  

    但是、就有关嵌套同一中断的问题而言、PIPE 设计为可防止同一中断本身中断、从而帮助防止中断处理程序出现的潜在问题破坏其自有栈数据。

    为了嵌套相同的中断、如果 相应线路的优先级增加了相同或更高优先级的中断、则由于中断标志处于有效状态、它将嵌套在前一个例程执行中。 同时、强烈建议不要进行此类循环嵌套、以避免不必要的软件复杂问题 Slight smile请告诉我这是否适合您的应用。

    此致、

    Aishwarya

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

    非常感谢 Aishwarya,你的 详细解释!

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

    请仅作一个说明:

    如果我想嵌套同一个中断、我是否需要降低当前有效中断上下文的优先级、或者是否需要提高中断源的优先级?

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

    节拍、

    我自己没有尝试过这种方法、但我怀疑降低当前中断优先级会起作用  、但更难正确执行嵌套、因为一旦  CPU 中断线路上已经将中断置为有效。 如果您 尝试一下、请告诉我您的结果是什么。

    此致、

    Aishwarya

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

    您好 Aishwarya、

    我无法找到降低当前活动 ISR 的中断优先级的方法。

    因此、我认为我唯一的选择是作为嵌套级别的函数提高中断源的优先级。

    但是、您关于"中断处理程序破坏其自己的栈数据"的警告使我认为我可能应该先探索其他途径。 也许您的 FreeRTOS 端口将提供更多信息。

    再次感谢您、

    节拍

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

    节拍、

    听起来不错、如果您对中断配置有更多问题(在非 FreeRTOS 环境中)、我将使此 E2E 主题保持更长的开放时间。 如果您对 FreeRTOS 的中断配置有任何疑问、请创建新主题。  

    此致、

    Aishwarya

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

    节拍、

    还有其他问题吗? 如果问题已解决、请将此主题标记为已解决。

    此致、

    Aishwarya

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

    您好 Aishwarya -感谢您的跟进。

    是的、我们可以认为该主题已解决。