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.

[参考译文] TMS320F28377D:##39;n##39;事件后自动触发 CLA 任务

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1435145/tms320f28377d-auto-trigger-cla-task-after-n-events

器件型号:TMS320F28377D

工具与软件:

您好!

是否有可能在 发生一定数量的中断/事件后触发 CLA 任务?

目前,我已经配置了一个 CLA 任务,以使用驱动程序库函数 CLA_setTriggerSource()在每个 SDFM 中断上自动触发

CLA_setTriggerSource(CLA_TASK_1, CLA_TRIGGER_SDFM1INT);

我想修改上述内容、以便 CLA 任务在"n"个 SDFM 中断发生后触发。 我该怎么做呢?

我正在寻找一个类似于 driverlib 函数 EPWM_setInterruptEventCount ()对 EPWM 模块所做的功能。

//*****************************************************************************
//
//! Sets the ePWM interrupt event counts.
//!
//! \param base is the base address of the EPWM module.
//! \param eventCount is the event count for interrupt scale
//!
//! This function sets the interrupt event count that determines the number of
//! events that have to occur before an interrupt is issued.
//! Maximum value for eventCount is 15.
//!
//! \return None.
//
//*****************************************************************************
static inline void
EPWM_setInterruptEventCount(uint32_t base, uint16_t eventCount)

谢谢!

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

    Hi AK、

    实现这种功能的最简单方法是 在 CLA 文件中创建一个全局变量、用于跟踪任务被触发的次数。 你可以在任务开始时检查变量是否等于'n'、然后执行所需的功能性。 如果变量小于 n、您可以使其递增并分出任务。

    如果您对这种方法有任何疑问、请告诉我。

    此致、

    Delaney

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

    尊敬的 Delaney:

    我目前正在实施类似的东西。 我想知道是否有内置方法可以在 MCU 内部执行此操作(无需任何软件干预)。

    这里的重点是 CLA 任务将在每次中断时运行、我不希望一开始就发生这种情况(如果 启用了 CLA 任务 PIE 中断、这不一定会不断中断 CPU)。

    下一个最好的情况是 CLA 任务在每次中断时运行、但是功能可每第 n 个间隔运行一次。

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

    Hi AK、

    我知道;就 CLA 而言、任何 CLA 寄存器中都没有可以将任务配置为在"n"个条件后(如在 ePWM 模块中)触发的特定设置。  

    可能有一种使用 CLB 模块实现此目的的方法。 我将在 CLB 专家处进行评论、尽管他们目前不适合商务旅行、因此请期待在本周末或下周早些时候为他们提供回复。

    此致、

    Delaney

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

    Hi AK、

    在研究之后、实际上我认为 CLB 无法访问 CLA、因此这不是可行的解决方案。

    另一个想法-您可以让 SDFM 触发一个任务、然后在它是第 n 个触发器的情况下(您可以检查全局标志)、第一个任务将触发第二个任务以运行所需的代码。 如果它不是第 n 个触发器、您可以脱离第一个任务。 这第二个任务可用于触发 CPU 中断、因此每次 SDFM 触发时仅触发 CPU。

    这是否适合您的应用?

    此致、

    Delaney

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

    感谢 Delaney、  

    [报价 userid="573616" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1435145/tms320f28377d-auto-trigger-cla-task-after-n-events/5512261 #5512261"]另一个想法-您可以让 SDFM 触发一个任务、然后在这是第 n 个触发条件的情况下(您可以检查全局标志)、第一个任务将触发第二个任务来运行所需代码。 如果它不是第 n 个触发器、您可以脱离第一个任务。 第二个任务可用于触发 CPU 中断、因此每次 SDFM 触发时才会触发 CPU。[/报价]

    这是一个好主意、我将尝试一下。