【问题标题】:Timers in Arduino DueArduino Due 中的定时器
【发布时间】:2013-11-07 07:07:27
【问题描述】:

我是 arduino 的新手(事实上是编程)。我正在考虑将 arduino 用于我的学术项目。在浏览它的数据表(来自 Atmel 的 SAM3X8E 数据表)时,我遇到了计时器,据说都是 32 位计数器。他们计数到 0xFFFF,然后再次进入 0x0000。我有点困惑。它们不应该一直计数到 0xFFFFFFFF(在归零之前),因为它们是 32 位计数器。我认为 16 位计数器是一个计数到 0xFFFF 的计数器。 可能我的要求很愚蠢,但请说明一下。

提前谢谢..

37.6 功能描述 , 37.6.2 32 位计数器 ,页码:数据表中的 873

【问题讨论】:

  • 您可能希望在数据表中包含您看到的位置。
  • 为了兼容性,Arduino 可能已将其 SAM3X8E 功能的大小与 ATmega 相同。

标签: arm arduino atmel atsam3x


【解决方案1】:

也许我的图书馆可以帮助你:https://github.com/ivanseidel/DueTimer

也请阅读此帮助文件:https://github.com/ivanseidel/DueTimer/blob/master/TimerCounter.md

我知道这不是你想要的,但可能是你想要的最终结果。

【讨论】:

    【解决方案2】:

    我在数据表或 Atmel 的应用说明中找不到任何反驳您观察的内容。这让我相信以下两件事之一:

    1. 数据表中的描述不完整。所描述的行为仅适用于低位字,完整的 32 位定时器按顺序从 0x00000000 递增到 0xffffffff,溢出仅注册低 16 位。

    2. 行为与数据表中的描述完全相同,并且软件可以将定时器计数器设置为介于 0x00010000 和 0xffffffff 之间的值,以便在定时器在 0x0000ffff 溢出之前允许一次更长的时间。

    测试将判断哪种行为是实际行为。

    【讨论】:

      【解决方案3】:

      您在他们的文档中发现了一个错误,但他们已修复它。

      在当前版本的数据表中,现在位于第 36.6.2 节,第 860 页,这更有意义:

      “当计数器达到值 2^32-1 并传递到零时,发生溢出...”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-26
        • 2015-04-09
        • 1970-01-01
        相关资源
        最近更新 更多