×

基于Arduino的内部定时器

消耗积分:0 | 格式:rar | 大小:0.35 MB | 2022-12-16

香香技术员

分享资料个

方案介绍

在本项目中,我将解释如何使用 Arduino 的 TIMER0。

概述
如果您需要计算准确的时间,您需要使用计时器,但通常使用 Arduino 的内部计时器并不是那么容易,所以在本教程中,我尝试解释如何以简单的方式使用它们。

使用定时器非常重要,因为在 delay() 函数期间你不能做任何事情,但是使用定时器你可以做任何事情,因为当时刻到来时,它会激活中断。

我使用 TIMER0 是因为它是最简单的计时器,也许将来我会解释其他计时器。

如何运作
您需要查看的第一件事是 ATmega328P 的数据表。

这是计数器框图,看看这个你就可以理解它是如何工作的。

预分频器从一个时钟周期接收一个脉冲,然后将其传递给控制逻辑,因此控制逻辑将 TCNTn 寄存器加 1。

现在我们可以将 TCNTn 的值与特定值进行比较。当 TCNTn 寄存器到达这个值时,你就知道它经过了一个特定的时间。

这种方法称为“比较时清除定时器”的 CTC 模式。TCNTn 寄存器的值与 OCRn 寄存器进行比较,当比较匹配发生时,TOVn 产生中断。

另一个重要的事情是预分频器,用它你可以创建不同的时钟分频,事实上 16MHz 太多了,但是,由于预分频器,你可以创建一些它的约数。这取决于 TCCR0B 寄存器的配置。

另一个重要的事情是确定 OCRn 寄存器的值来计算特定的时间,你需要一点数学功底。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !