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.

[参考译文] TMS320F28377S:如何知道我们是否处于中断上下文中?

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/623289/tms320f28377s-how-know-if-we-are-under-interrupt-context

器件型号:TMS320F28377S

您好!

我在使用 F28377S 的定制板上。 我们可以考虑使用与 controlCARD F28377D 相同。

我正在使用 Code Composer Studio 7、我的应用是来自 IDDK 套件示例的问题。 (控制无刷电机)

对于我的应用、我有一个外部存储器(FRAM 25CL64)

我开发了一个驱动程序、允许我从该外部存储器进行读取/写入。

应用程序可以有两种环境、例如在 IDDK 示例中完成的环境:

-在 main()末尾调用的接地循环。

- 在 PWM 中断上调用的 ISR 函数,用于管理电机控制。

我可以在之前有另一个高电平中断来管理旋转变压器反馈。

目前、如果从底层任务执行写入存储器并被 ISR 中断(其中也完成了写入访问)、则我的驱动程序不受保护。

我的当前代码将永远不会出现这种情况。 但是对于未来(我不知道它是否会始终保持这种软)、我想检测是否从 ISR 上下文中调用我的内存写入例程。

因为在这种情况下、之前的写入(在接地环路中)可能会在 SPI 协议期间中断。

因此、我认为解决方案:

我的存储器写入例程应该检测当前上下文(GroundLoop / ISR)、然后如果 ISR 上下文、生成一个特定的错误消息 Log...

我的问题是:

我是否有办法轻松了解我是在接地环路上还是在 ISR 上下文中?

谢谢

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

    您好!

    在 IDDK 的 ePWM 中断结束时、您将注意到有一个写入 ePWM11的 ETCLR[INT]。  这会清除在触发中断时置位的 ETFLG[INT]。  

    我认为您应该能够在驱动程序中使用 ETFLG[INT]。


    谢谢、
    Brett

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

    你好

    好的、这是一个好主意!

    谢谢