我是arduino的新手(事实上是编程)。我正在考虑在我的学术项目中使用 arduino。在浏览它的数据表(SAM3X8E Atmel 的数据表)时,我遇到了计时器,据说都是 32 位计数器。他们数到0xFFFF,然后再去0x0000。我有点困惑。它们不应该计数到 0xFFFFFFFF(在归零之前),因为它们是 32 位计数器。我认为 16 位计数器是一个计数到0xFFFF。 也许我问的很愚蠢,但请对此有所了解。
提前谢谢..
37.6 功能描述 , 37.6.2 32 位计数器,页码:873 在数据表中
也许我的图书馆可以帮助你: https://github.com/ivanseidel/DueTimer
另请阅读此帮助文件:https://github.com/ivanseidel/DueTimer/blob/master/TimerCounter.md
我知道这不是你想要的,但可能是你想要的最终结果。
我在数据表或 Atmel 的应用笔记中找不到任何反驳您观察的内容。这让我相信以下两件事之一:
-
数据表中的说明不完整。所描述的行为仅适用于较低的字,完整的 32 位计时器按顺序从 0x00000000 递增到 0xffffffff,溢出仅注册底部 16 位。
-
该行为与数据表中描述的完全一致,软件可以将定时器计数器设置为介于 0x00010000 和 0xffffffff 之间的值,以便在定时器在0x0000ffff溢出之前允许一次性更长的时间。
测试将判断哪种行为是实际行为。
您在他们的文档中发现了一个错误,但他们修复了它。
在当前版本的数据表中,这现在位于第 36.6.2 节第 860 页中,它更有意义:
"当计数器达到值 2^32-1 并传递到零时,会发生溢出..."