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.

[参考译文] TMS320F28386S:计时器的中断优先级

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1511203/tms320f28386s-interrupt-priority-of-timers

部件号:TMS320F28386S
Thread 中讨论的其他器件:TMS320F28377DC2000WARE

工具/软件:

在回答有关计时器优先级(TMS320F28377D:TIMER-0和 TIMER 1之间的计时器优先级)的问题时、支持写入:

"您看到的行为似乎并不是因为计时器1的优先级高于计时器0、而是因为计时器1中断首先进入、并且由于没有启用嵌套、即使在执行期间计时器0的中断进入、它也会运行至完成。 默认情况下、ISR 将在为下一个已启用并已标记的中断提供服务之前完成执行。 如果您希望无论发生什么情况、始终立即为计时器0提供服务、则必须在计时器1中断内启用嵌套。 "

这是否适用于所有中断? 中断 PIO 组1的优先级为5。 NMI 或 RTOSINT 具有较低的中断、在我看来、应该能够以较低的优先级中断 ISR。

此致、

光线

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

    抱歉、我的意思是 NMI 和 RTOSINT 具有较低的优先级编号、因此优先级较高、因此应该能够中断优先级较低的 Timer0或 Timer1 ISR。

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

    尊敬的 Ray:

    该专家目前已离职。 请预计回复将延迟、直至他们下周返回。  

    此致、

    Allison

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

    尊敬的 Ray:

    很抱歉我延迟了回复。

    更具体地说、C28x 上的所有可屏蔽中断本质上都将在启动后运行到完成、除非实现了嵌套。 可屏蔽中断包括 INT-14、DLOGINT 和 RTOSINT。 这是由于所有这些中断都已通过硬件连接到 CPU 造成的。 当这些 ISR 之一分支到时、特定中断的 IER 被禁用、调用 DINT (禁用 INTM 位)、并打开组开关的 ACK。

     另一方面、NMI 中断直接连接到 CPU、并始终进行分支。 它们不受 INTM 位或 IERS/ACK 的影响。 请参阅以下说明。

    组编号总体上显示了两个中断同时发生的优先方案。 因此、为了回答您的问题、该声明适用于 RTOSINT、但不适用于 NMI。 有关这方面的更多说明、我建议查看 C28x CPU 参考指南(链接在此处)的 CPU 中断和复位部分。

    如果回答有用、请支持此回答。 Slight smileμ s

    此致、

    Delaney

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

    您好:

    好的-这帮助我到了一点。
    下一个问题是、这是否也适用于 RTOS 中断(我担心是的)?

    我们有一个软件,它不时挂起,没有明显的原因。 即使看门狗(用于调用 ISR)也不起作用、并且 CLA 似乎停止工作、因此我最好的猜测是 ISR 不会返回并在无限循环中挂起。 然后、这将防止执行其他可屏蔽 ISR (例如看门狗 ISR 或触发 CLA 的 ISR)。 因此、我认为也许可以使用 ERAD 来检查、例如是否 在特定时间内重新执行主循环以及这样是否无法触发 RTOS 中断。 但由于这一个也是可屏蔽的-尽管它具有高优先级-那么这个也被阻止-我猜是吗?

    是否可能导致 ERAD 出现 NMI、因为此 INE 不可屏蔽、因此在我看来应该使可屏蔽中断的 ISR 中断。

    此致、

    光线

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

    尊敬的 Rainer:

    是的、如果没有启用嵌套、则 RTOSINT 应在开始执行后运行至完成。  

    您是否能够将调试器连接到应用? 这样、您可以向不同的 ISR 添加计数器、还可以暂停代码以查看其可能卡住的位置。

    如果没有、您能否将 GPIO 切换添加到代码的不同部分(可能在每个 ISR 的开头和结尾、以及后台循环中的一个)来尝试了解发生了什么?

    我将邀请 ERAD 专家提出任何建议。

    此致、

    Delaney

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

    尊敬的 Ray:

    如果您希望使用 ERAD 来帮助跟踪中断的执行顺序、则可以利用 C2000Ware.3中提供的 ERAD 中断顺序示例(ERAD ex6_interrupt_order)

    此示例使用计数器来监视执行的 ISR 序列。  如果所执行的 ISR 未按预期顺序排列、则会生成中断。

    ERAD 示例的完整列表可在此处找到:  

    https://dev.ti.com/tirex/explore/node?node=A__AFDafQ8BojiF4hzpDDIgEg__C2000WARE__1kRFgrO__LATEST&placeholder=true 

    此致、

    Ozino