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.

[参考译文] TM4C1290NCPDT:TI 的使用 SMBus 实现的 ISR

Guru**** 2541110 points
Other Parts Discussed in Thread: TM4C1290NCPDT, SEGGER

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/848285/tm4c1290ncpdt-isr-using-the-smbus-implementation-from-ti

器件型号:TM4C1290NCPDT
主题中讨论的其他器件: SEGGER

大家好

我将在具有 TM4C1290NCPDT 的定制板上使用 TI SMBus 实现。 我们之所以选择该器件、是因为它具有大量的 I2C 控制器。 该代码运行 FreeRTOS 系统、每个 I2C 控制器都有自己的 FreeRTOS 任务。  

我使用的是中断驱动型 I2C 控制器、具有如下所示的 ISR

//针对 I2C
void
SMBusMasterIntHandler1 (void)
的 SMBus 特定处理程序{
BaseType_t xHigherPriorityTaskWoken = pdfFALSE;

//
处理中断。
//
eStatus1 = SMBusMasterIntProcess (&g_sMaster1);
//处理返回函数
portYIELD_FER_ISR (xHigherPriorityTaskWoken)中的错误;
} 

并为每个中断处理程序提供一个副本。  

对 SMBusMasterIntProcess 的调用、这是 TI 库中的一个函数、我认为这可能不是正确的方法。 它处理 SMBus/I2C 状态机,是一段长代码(数百行)。 ‘代码有时会在中断处理程序中崩溃,我想知道/担心中断处理程序是否“太长”。 我的印象是、中断处理程序应该尽可能的短、这似乎违反了这个 maxim。 不幸的是,当代码进入这种状态(不是崩溃,而是陷入困境)时,调试器就没有用处(我使用 SEGGER JLINK,有时似乎对 FreeRTOS 感到非常困惑,即使我使用的是 FreeRTOS 插件。)

那么、我的问题是、我的中断处理程序是否存在明显的错误? 我应该在这里做其他事情吗?  有智慧的话吗?

感谢您的任何指导

Peter

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

    尊敬的 Peter:

      读取 SMBusMasterIntProcess 的源代码时、我确实会看到该函数非常长。 我认为 SMBus 堆栈基于中断驱动状态机。 我觉得它并不是真正考虑操作系统环境、或者至少不是直接在操作系统运行的中断处理程序中调用它。 我不确定 SMBusMasterIntProcess 是否花费了超过操作系统节拍计划的时间。 由于我不熟悉 FreeRTOS、所以我只能问您是否可以通过某种方式更改操作系统刻度、看看这是否会有所不同。 是否可以不调用 中断处理程序中的 SMBusMasterIntProcess? 您可以使用操作  系统设置某种类型的信标、以便 SMBusMasterIntProcess 作为单独的任务运行并挂起(等待)、直到 SMBusMasterIntHandler1发布信标信号。 同样、我不知道使用 FreeRTOS 的实际信标用法和设置语法、这是我对使用 TI-RTOS 等常规 RTOS 的理解。   

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

    尊敬的 Peter:

       我没有听到你的反馈。 我假设您的问题已解决。 我希望我使用信标的建议能对您的结果产生影响。 我现在要关闭这个线程。 如果问题未解决、您可以更新此帖子以重新打开该主题。  

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

    谢谢、我还没有机会深入探讨这一点、但我将继续您的建议。

    最好

    Peter