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.

[参考译文] TMS320F28388D:在运行时禁用和重新启用 CLA 任务

Guru**** 2589280 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1115532/tms320f28388d-disable-and-re-enable-cla-task-at-run-time

器件型号:TMS320F28388D

您好!

我想知道如何 停止 CLA 任务并正确重新启用它。 这很关键、因为在该任务中、我计算转换器的控制环路。

以下是我的应用:

ePWM1在 SOCA 上生成脉冲

该脉冲触发 SOC0

EOC0触发 ADCAINT1

ADCAINT1触发 CLA 任务1  

问题:当发生特殊事件(例如作为保护)时,我想停止计算任务1。 在此之前、我使用了 ePwm1Regs 中 ETSEL 寄存器的 SOCAEN 位来停止触发 SOC0的脉冲。

但是、当我重新启用它时、CLA 任务1首先使用 ePWM1模块=>异步计算 、并且在这个奇怪的现象发生后、它返回正常运行。

您可以在下面看到、蓝色曲线显示了通过在任务1的开头和结尾切换 I/O 来计算任务1。 另一条曲线是 ePWM1输出。 我不希望出现第一个异步蓝色模块。

那么,是否有办法正确地执行它? 我对 CPU 中断有同样的问题,停止中断并重新启用中断的正确方法是什么?

谢谢、

Adrien

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

    我刚刚尝试了同样的操作(为了使用 SOCEN 位停止并重新启用中断、我还尝试使用寄存器来禁用中断)、使用 CPU 而不是 CLA、我得到了相同的行为。 前2个脉冲与 ePWM1模块不同步。 那么、我需要的是一种为 CPU (或 CLA 任务)停止和重新启用中断的正确方法吗? 在 TRM 中、没有明确的答案来实现这一点。

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

    Adrien、您好!

    很抱歉耽误你的答复。 我正在就此主题与专家进行联系、并将很快再次与您联系。

    谢谢、

    Ashwini

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

    Adrien、您好!

    一个建议-如果目标是禁用/启用 CLA 任务、则另一个选项是:

    1.禁用任务

    将 MIER 中断使能寄存器中的 INT1位清零以阻止任务。

    2.重新启用任务

    使用 MICLR 清除暂挂中断标志。 然后使用 MIER 启用任务。  

    如果您有任何疑问、请告诉我。

    谢谢、

    Ashwini

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

    您好!

    感谢您的回复。 目前我的解决方案是不再禁用任务、而是通过使用标志的软件来管理任务。 它需要更多的资源、但我认为它比在程序运行时启用/禁用任务更强大。 当我有时间时、我将尝试清除您在启用任务之前提到的挂起中断标志。 这可能是问题所在。

    Adrien