产品选型

avr单片机的定时器 小5带你飞(10)—AVR(ATmega 328P)单片机定时器的原理和使用(1)

小编 2024-10-13 产品选型 23 0

小5带你飞(10)—AVR(ATmega 328P)单片机定时器的原理和使用(1)

以前写过一个关于ATmega328p的定时/计数器的文章,但是写的不够详细,这一次我将详细的介绍一下ATmega328p的3个片内定时/计数器的相关知识。

328p 有3个定时计数器,分别是8bit的 T/C0 ,16bit的 T/C1和8bit的 T/C2。我们来看这个16bit的T/C2。

我们先看看最简单的普通模式。定时器的基本原理其实就是根据设定的时钟频率,每过一个时钟,计数计时器的值加1。即16位计数器TCNT1一直累加,当计数到0xFFFF之后,由于计数器溢出,TCNT1返回到最小值0x0000重新开始计数。

普通模式涉及到的寄存器有:(对于每一个位,我也只写出在普通模式下面涉及到的)

1.TCCR1A:控制寄存器 A

2.TCCR1B:控制寄存器 B

在普通模式下面,对于这两个寄存器只需要用到下面这个表了:

这个位WGM13:0 就是波形发生模式的设置,我们设置为普通模式,那么WGM13:0均设置为0即可

我们还需要来设置3个重要的位:

位CS12:0 看表如下:作用时钟的选择

3.TCNT1H 与 TCNT1L:数据寄存器。

这是一个16位的,分高八位和低八位,

主要来看一下这个数据在普通模式下怎么计算:

假如现在要做一个定时1s的计数器,即1s产生一个中断,timer1是一个16位的计数器,能够存放的最大值为0xFFFF,

有这样一个公式: TCNT1=0Xffff - 定时时间/(分频数* (1/晶振频率))

再假设分频数为设置为1024,328p的晶振频率为12MHz,那么

TCNT1= 0XFFFF - 1 / (1024 *(1/16000000))= 0xFFFF –0x3D09=0XC2F6

在程序中TCNT1的赋值写法有很多,

TCNT1=0xC2F6

TCNT1H = 0xC2 TCNT1L = 0xF6 均是正确的。

4.TIMSK1 :中断屏蔽寄存器

这只要置位bit0就好了,即开中断使能。

有了这些知识,普通模式下的定时器就可以跑起来了,是不是特别的简单。

再附上demo程序:

更多内容请关注头条号:小5嵌入式

小5带你飞(11)—AVR(ATmega 328P)单片机定时器的原理和使用(2)

在上一篇文章中,我们以timer1为例讲解了普通模式,这一篇我们主要来讲解CTC模式。

作用:

用于输出1/2占空比的方波信号(高电平持续的事件和低电平持续的时间是相等的)

用于产生准确的连续定时信号

时序图如下:

时序图

首先来看一下计数器波形产生模式位的描述列表:

其中Mode4和Mode12为CTC模式,注意一下几点:

当计数器TCNT1达到预先设定的OCR1A或者ICR1的时候,TCNT1被自动的清0,OCR1A或ICR1定义了计数器的最大计数值。

说到这里,先来看一下OCR1A和ICR1寄存器

输出比较寄存器1A

输入捕捉寄存器1

对于这两个寄存器其实没啥好说的,很简单的,就是一个16bit的存数据的地方。这个数据就是计数最大的值。

利用OCF1A或者ICF1标志可以在计数器达到预设值的时候产生中断,在中断服务程序里面更新预设值。

为了在CTC模式下得到输出的波形,可以预设OC1A引脚在每次比较匹配发生时改变逻辑电平。来看TCCR1A寄存器的高4位,他们就是来控制这个功能的。具体看这个。

CTC模式的使用方法:

如果要输出波形,需设置端口为输出

设置波形发生模式及时钟源(TCCR1A TCCR1B)

设置输出模式(TCCR1A)

根据需要设置上限值(OCR1A)

频率的计算公式为:

好了,再附上一个demo程序:在PB1和PB2上分别输出一个1k的方波

再来一个中断的demo:使PB5管脚每隔0.5s实现电平的变换。

更多内容请关注头条号:小5嵌入式

相关问答

频率调节器原理?

频率调节器是利用一频率变化的信号调节照明灯的工作电流或其发光强度,使灯光在1-20Hz内频率不断变化而避免工作在任何单一频率下的仪器。精确的频率控制是现...

请推荐!怎样区分51 单片机 开发板和 AVR单片机 开发板?

[回答]旺扬单片机开发很专业,服务态度一流,资质深实力雄厚,很值得信赖,属于行业内良心企业公司方案设计水平真不错,技术过硬,我们跟他们合作过,项目开发...

STM32是什么啊,是32位的 单片机 吗 - 185****1270 的回答 - 懂得

stm32是一种32位的单片机。单片机是嵌入式系统中最常用的核心部件,stm32本质上也是一种单片机。从事嵌入式方面工作,如果有一定的基础,可以从STM32...

荐 批量定制XKC系列微孔折叠膜机滤芯过滤器供应厂家,XKC系...

[回答]①AVR单片机(ATmega16)的时钟源(晶振、内部RC等)可以不经过分频直接提供给CPU使用,而51的CPU主频等于晶振的12分频,ATmega16外部提供16M的晶振,所以...

单片机 对嵌入式有哪些帮助吗?

学习单片机对学习嵌入式的帮助是全方位的,因为单片机本身就是嵌入式的一部分。既然说到了单片机和嵌入式系统,今天我们就来简单了解一下单片机与嵌入式系统的...

寻找8引脚 单片机 -ZOL问答

SINOWEALTH提供了丰富的8引脚单片机,程序空间从1K至4K,有些型号内建多达5路A/D转换器,有些提供了高速PWM功能,有些内建振荡器时钟电路,内建看门狗定时器,低电...

伺服电机与步进电机比较,各种优点完爆步进电机,为什么步进...

[回答]为使客户方便快捷的获得高品质的产品,星火在国内组建了多个以代表处、代理商为主的销售网点,给客户提供快速便捷的销售服务。星火自动化有一支专业...

如何用51 单片机 驱动2相4线步进电机?

两个。需要同时控制。用两个全局变量控制正反转,两个定时器中断分别控制两个电机,或用一个定时器产生一个时间单位,用两个变量计数分别控制两个电机转速。...

在座的同志!可以推荐一下!!蚌埠靠谱的机器人编程培训,机...

机器人舵机什么是舵机:在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的...

猜你喜欢