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.

[参考译文] TMS320F2809:有关 Timer_START () 和 Timer_STOP () 的误导信息(使用 SYS/BIOS 6.83.0.18)

Guru**** 2538950 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1553465/tms320f2809-missleading-information-on-timer_start-and-timer_stop-using-sys-bios-6-83-0-18

器件型号:TMS320F2809
主题中讨论的其他器件:SYSBIOS

工具/软件:

大家好

我对 SYS/BIOS 计时器功能有疑问、我不确定它是否按预期工作。 我发现有多个文档和论坛帖子似乎都说了不同的内容。

我期望的是Timer_start(),当我调用时,它应该重置计时器的计数器,并清除所有中断标志。 如果计时器之前已经在运行、则不应停止、而是简单地复位。 调用Timer_stop()应停止计时器。

不过、我发现有多篇论坛帖子说Timer_start()不会重置计时器、这种行为不起作用。 一些文档提到计时器模块有一个错误、而其他来源说它从不会首先复位计时器。 然后、另一个 SYS/BIOS 文档声称它复位计时器。

因此、我想知道的是:

  • 到底Timer_start()Timer_stop()做什么和做什么?
  • 如果我在Timer_start()计时器已在运行时调用、会发生什么情况? 这是个问题吗? 我必须Timer_stop()先打电话吗?
  • 哪个函数调用实际上会复位计时器、哪个函数调用可以清除中断标志?
  • 早期版本的 SYS/BIOS 中是否确实存在错误、如果存在、则是在哪个版本中修复的?
  • 这是 SYS/BIOS 版本的正确文档 6.83.0.18

我们拥有的系统可靠性不是 100%、我们不确定问题是由计时器模块本身引起、还是我们使用该模块的方式引起、还是某种完全不同的情况、因此能够更详细地了解这一点会非常有用。

非常感谢。
此致、
Dominik

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

    您可以在 C:\ti\bios_6_83_00_18\packages\ti\sysbios\family\c28\Timer.c 中查看计时器模块代码

    但要总结一下:

    TIMER_START() 执行 Hwi_disable()、清除并启用计时器 Hwi、设置 TCR.tie(中断使能)、设置 TCR.TRB TSS(重新加载计时器)、清除 TCR.TR.TCR(这是计时器停止位,因此清除它将启动计时器)、并执行 Hwi_restore ()。 此外、鉴于 TIF 位是 write-1-to-clear 位的方式、在这些对 TCR 的其他写入中执行的读取 — 修改-写入操作将清除 TIF(如果已设置)。

    TIMER_STOP() 只设置 TCR.Hwi 并禁用 TSS。

    你是否有任何关于这个 bug 的更多信息(像它被提到的线程)? 我没有找到任何明显与计时器相关的错误记录、而且 自 2014 年以来、计时器代码并没有发生任何代码更改、看起来像是错误修复。

    Whitney