2

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

提前致谢..

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

4

3 回答 3

4

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

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

我知道这并不完全是您想要的,但可能是您想要的最终结果。

于 2013-11-17T00:10:16.717 回答
1

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

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

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

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

于 2013-11-07T07:32:12.413 回答
0

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

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

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

于 2016-06-09T05:51:06.283 回答