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.

[参考译文] LAUNCHXL-F28P55X:CLB 计数器在来自 HLC 的 MOV 命令上永远停止

Guru**** 2562960 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1566194/launchxl-f28p55x-clb-counter-stops-forever-on-mov-command-from-hlc

器件型号:LAUNCHXL-F28P55X


工具/软件:

我的设置是:
我用 149 配置了 CLB 预分频器并将其激活

我将 3 个 GPIO 输入设置为在任何边沿上滤波、作为 CLB 输入 0 至 2  

我将 CLB 输入 4 设置为 CLB 预分频器

我将 LUT0 设置为三个 GPIO 输入的或、从而在 GPIO 的任何一次变化时提高输出

我在边界输入 4 上配置了计数器事件、因此计数器使用 CLB 输入进行计数

R3 设置为 0

我在任何 LUT0 上触发 HLC 事件

该程序为:

按 C0   
MOV R3、C0

我本来期望这会将计数器设置为 0、但当执行 MOV 时、它会将计数器停止在该值处、但计数器事件(=预分频时钟信号)会继续运行。 看来,这是一个很好的办法。 这是错误还是预期的行为? 如果是较晚的、请重新启动它。

当我按下 C0 时、计数器继续运行。

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

    边界输入 4 上的计数器事件的用途是什么? 此事件的选定行为是什么?

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

    选择的行为是:ADD 1。 因此、它使用预分频时钟对计数器进行递增计数。 该设置的目的是读取计数器值(=两个 LUT0 事件之间的时间) 并将该时间推送到 FIFO。 只要我不执行 MOV R3、C0 命令、该功能就可以正常工作。

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

    push 命令与实际到达 push fifo 之间可能存在一些延迟。 如果您尝试将 C0 值写入另一个寄存器(如 R2)、并通过 HLC 程序触发的 CLB ISR 读取 R2、您是否仍然看到此问题?

    谢谢您、

    Luke

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

    谢谢你的答复,对不起,我不会花更多的时间来调试这个。 对于我的代码,我找到了一个解决方法,只是不需要重置计数器。 看起来像是 CLB 引擎中的一个错误。