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.

[参考译文] C2000-DIGITAL-CONTROL-LIBRARY:禁用中断问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1249019/c2000-digital-control-library-disabling-interrupts-issue

器件型号:c2000-digal-control-library

您好!

我在 DCL 用户指南中看到了有关在参数更新期间禁用中断的以下句子、想进一步了解这一点。

"第一个这样的子结构包含一个影子参数集(SPS)、用户在执行参数更新序列之前加载该参数集。 更新序列将 SPS 参数安全复制到主控制器结构中 通过禁用中断 然后重新启用它们。 这可确保控制器绝不会使用部分更新的参数集运行、并允许更新控制器参数而不干扰控制循环。"

1) 1)哪个函数会禁用中断、它在软件中写入的位置? 您能向我显示相关线路吗?

2) 2)这种禁用特性是否会禁用所有中断或其中的一部分? 您能提供更多信息吗?

3) 3)我的中断被禁用多少个系统周期?

4) 4)我将在系统测试上调整 PID、因此、我需要在参数更新期间继续设置中断。 我可以禁用此功能吗?

提前感谢。

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

    尊敬的 Gokhan:

    此处的答案与您的 Q 格式相同。

    1)只有函数以 DCL_updateXXX 开头可通过调用 DCL_disable_ints 来禁用中断、您可以搜索 DCLF32.h  中出现的所有 DCL_disable_ints。

    2) 2)除了定期更新例程之外、我们还根据 DCL_fupdateXXX 提供了"强制"更新例程、该例程不会禁用中断。 确保在项目根目录中包含.asm 文件、因为它是作为外部汇编模块实现的。

    3)它取决于您所使用的控制器的类型,因为 参数大小不同。 所有 float32_t 属性分配都是原子性的、因此禁用的时钟周期时间将是控制器的 SPS 结构中属性的数量。 (例如、DCL_PI 将为6、DCL_PID 将花费8个周期)

    4) 4)是的、当然可以、您也可以使用 DCL_fupdateXXX、以便它不会禁用中断。 但是、如果您希望让 ISR 不断检查是否需要通过信标更新控制器(由  DCL_request_update (ptr)设置 )、您可以进入 DCL_updateXXX 实现并手动删除与 DCL_disable_ints 和 DCL_restore_ints 相关的行。

    如果您需要进一步说明、请告诉我。 希望这对您有所帮助!

    此致!

    王森

x 出现错误。请重试或与管理员联系。