定时器在Arduino Due

时间:2013-11-07 07:07:27

标签: arm arduino atmel atsam3x

我是arduino的新手(事实上是编程)。我正在考虑将arduino用于我的学术项目。在浏览它的数据表(来自Atmel的SAM3X8E数据表)时,我遇到了计时器,据说所有都是32位计数器。并且在再次转到0x0000之前它们会计数到0xFFFF。我有点困惑。它们不应该计数到0xFFFFFFFF(在变为零之前),因为它们是32位计数器。我认为16位计数器是一个计数到0xFFFF的计数器。           可能是我问的是愚蠢的,但请注意它。

提前致谢..

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

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

我无法在数据表或Atmel的应用笔记中找到任何反驳您观察结果的内容。这让我相信两件事之一:

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

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

  3. 测试将告诉哪个行为是实际行为。

答案 2 :(得分:0)

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

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

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