定时计数器及应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在对TCNT2、OCR2和TCNT2寄存器进行写入时, ASSR寄存器的位2、1和0会自动置“1”。在ASSR寄存 器的位2、1和0置“1”期间,不能对相应位所指的寄存 器进行操作。
单片机C语言程序设计
T/C2用作实时时钟
• 应用课题1:利用定时器T/C2的实时 时钟晶振,产生1s断, 并在PD7引脚输出0.5Hz 的方波。
单片机C语言程序设计
T/C0计数寄存器 —— TCNT0
7
MSB
6
5
4
3
2
1
0
LSB
T/C2计数寄存器 —— TCNT2
7
MSB
6
5
4
3
2
1
0
LSB
T/C0、T/C2是可以进行读/写访问的向上计数(加法计数)的 计数器。
只要有有效脉冲输入,TCNT0、TCNT2就会在写入值(初值) 的基础上开始计数。一旦TCNT达到0xFF,下一个计数脉冲到来 时便回到0x00,并继续向上开始计数。在TCNT0、2回“0”的 同时,溢出标志TOV0、2置“1”。 TOV0、2标志置“1”可以用于申请中断,也可以作为计数器的第 “9”位使用。
CS0 CS0 CS0 1 1 T/C0时钟选择 位6、位3:计数器计数模式,用于控制 T/C0 的计数和工 2 1 0
比较匹
比较匹
作方式。
0
0
0
无时钟源,T/C0停止
clkI/O(不经过分频器) 0 0 1 位5~4:比较匹配输出模式,决定 T/C0比较匹配发生时, clkI/O/8(来自分频器) 0 PB3 1 )的行为方式。这是 0 输出引脚OC0( I/O的第二功能, clkI/O/64(来自分频器) 0 1 1 相应的方向控制位要置“ 1”,以便将其配置为输出。 1 1 0 0 0 1 clkI/O/256(来自分频器) clkI/O/1024(来自分频器)
S1 S2
中断请求1
0xFE 0xFF 0xFD 0xFC 0xF8 0xF9 0xFB 0xFA 计数器
外部脉冲
溢出标志 1 TF
S3
比较器 比较匹配标志 0 1 中断请求2
0xFC 比值寄存器
计数器输出 OC触发
单片机C语言程序设计
定时原理
定时——当计数器的计数脉冲频率恒定时,计数器所 记录的数值及代表了时间的概念。
7
OCIE2
6
TOIE2
5
TICIE1
4
3
2
TOIE1
1
OCIE0
0
TOIE0
OCIE1A OCIE1B
位7:T/C2输出比较匹配中断使能,为“1”时允许中断,为“0”时 禁止中断。 位6:T/C2溢出中断使能,为“1”时允许中断,为“0”时禁止中断。
位5:T/C1输入捕获中断使能,为“1”时允许中断,为“0”时禁止中断。
• • • • • • • • • TCCR0——T/C0控制寄存器 TCCR2——T/C2控制寄存器 TIMSK——T/C中断屏蔽寄存器 TIFR——T/C中断标志寄存器 TCNT0——T/C0计数寄存器 TCNT2——T/C2计数寄存器 OCR0——T/C0输出比较寄存器 OCR2——T/C2输出比较寄存器 ASSR——异步模式状态寄存器
定时功能是通过计数器的计数来实现的。
外部时钟源
S1 S0
内部时钟源
初值 S0用于选择内 部/外部时钟源 计数器 溢出标志TF
S2
中断请求
定时器的工作原理与计数器相同,只 是要求用于计数的脉冲,其频率恒定。 单片机的定时器用户是可以控制(可 编程)的。
单片机C语言程序设计
2.ATmega16定时/计数器资源
单片机C语言程序设计
计数原理(1)
计数——对外部事件进行统计,外部事件以输入有效 脉冲来表示。
当检测到有有效脉 启动计数器 冲输入时,计数寄 工作 存器加1 中断开放
外部脉冲
S1
计数器 0xF5 0xFF 0xFE 0xFD 0xFC 0xFB 0xFA 0xF9 0xF8 0xF7 0xF6 溢出标志 1 0 TF
单片机C语言程序设计
CTC模式
• 用于输出50%占空比的方波信号 • 用于产生准确的连续定时信号
单片机C语言程序设计
单片机C语言程序设计
异步模式状态寄存器 —— ASSR
7
——
6
——
5
——
4
——
3
AS2
2
TCN2UB
1
OCR2UB
0
TCR2UB
位3:T/C2异步设定位。 当AS2=0时,T/C2使用系统I/O时钟——clkI/O作为时 钟源(同步方式);当AS2=1时, T/C2使用连接在TOSC1 引脚上的晶振作为时钟源(异步方式)。通常连接在TOSC1 引脚上的晶振频率为32.768KHz。 位2:TCNT2更新忙,TCN2UB=0表明TCNT2可以被更新。 位1:OCR2更新忙,OCR2UB=0表明OCR2可以被更新。 位0:TCCR2更新忙,TCR2UB=0表明TCCR2可以被 更新。 位7~4:保留位。
单片机C语言程序设计
T/C中断标志寄存器 —— TIFR
7 6 5 4 3 2 1
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0
0
TOV0
位7:T/C2输出比较匹配标志。当T/C2计数器TCNT2与OCR2的值 匹配时,该位由硬件置“1”。中断响应后,由硬件清“0”,或通过对 该位写“1”来清“0”。 位6:T/C2溢出中断标志。当T/C2计数器TCNT2溢出时,该位由硬 件置“1”。中断响应后,由硬件清“0”,或通过对该位写“1”来清 “ 。 位0” 5: T/C1输入捕获中断标志。当T/C1输入捕获事件发生时,该 位置“1”。 位4:T/C1输出比较A匹配中断标志。
位2~0:T/C0的时钟选择位,用于定义T/C0的时钟 外部T0引脚,下降沿驱动 1 1 0 源。 (用于计数)
1 1 1 外部T0引脚,上升沿驱动 (用于计数)
单片机C语言程序设计
T/C2控制寄存器 —— TCCR2
7
FOC2
6
WGM20
5
COM21
4
COM20
3
WGM21
2
CS22
1
CS21
0
单片机C语言程序设计
PWM输出原理与方法(1)
PWM——Pulse-Width Modulation——脉冲宽度调制 PWM输出的一般形式:
t
τ PWM波形的特点:
• • • • • • T/C的预分频器 8位定时/计数器T/C0、T/C2 T/C2的异步操作 PWM模式下的T/C0、T/C2 16位定时/计数器T/C1 PWM模式下的T/C1
单片机C语言程序设计
T/C1、0的预分频器
clkI/O
PSR10
预分频器的作用是将系统时钟(如
Clear
CK/64 CK/8
单片机C语言程序设计
7
T/C0控制寄存器 —— TCCR0
6 5 4 3 2 1
WGM00
COM01 COM00 WGM01 CS02 CS01
COM0 1
0
COM0 0 0 1
T/C0比 (非P
0
FOC0
CS00
T/C0与 O
0
比较 O
位7:强制输出比较,该位只在WGM位被置为非PWM模 1 0 式下有效。
ATmega16的定时/计数器共有8个中 位3:T/C1输出比较B匹配中断标志。 断源——对应8个中断标志位,这些 标志位当条件满足后,由硬件置 位2:T/C1溢出中断标志。 “1”,中断响应后由硬件清“0”, 位1:T/C0输出比较匹配中断标志。 也可以对这些位通过软件写“1”清 “0”。 位0:T/C0溢出中断标志。
CS20
TCCR2的位7~3与TCCR0位7~3的作用等,完全相同。
CS2 2 CS2 1 CS2 0 T/C2时钟选择 无时钟源,T/C2 T/C2停止 0的时钟选择位,用于定义 0 0 位2~0:T/C2 的时钟源。
其功能与T/C0有不同点,无外部计数功能的选项。
0
0 1
0
0 1
1 0
1 0
1 0
单片机C语言程序设计
T/C0输出比较寄存器 —— OCR0
7
MSB
6
5
4
3
2
1
0
LSB
T/C2输出比较寄存器 —— OCR2
7
MSB
6
5
4
3
2
1
0
LSB
OCR0、OCR2中的8位数据用于同TCNT0、TCNT2寄存器中 的计数值进行连续的匹配比较。 如果TCNT0、TCNT2的值与OCR0、OCR2相等,则比较匹配 发生(比较匹配发生时,对应的定时/计数器输出引脚OC0、 OC2会产生触发事件)。 比较匹配发生后,置“1”相应的中断标志OCF0、OCF2。
单片机C语言程序设计
T/C2的异步操作
T/C2的异步操作——当AS2=1时,T/C2的计数时钟直接取自 于外部引脚TOSC1及TOSC2所接的外部石英晶振,计数时钟与 系统时钟不同步。
在使用异步方式时注意以下几点: 在同步与异步方式之间切换时,TCNT2、OCR2和TCCR2 的内容会受到破坏; ATmega16芯片已经对32.768kHz的手表晶振进行了优化, 加一个其它频率的外部时钟到TOSC1引脚可能会导致T/C2工 作不正常;
单片机C语言程序设计
定 时 | 计 数 器 及 应 用
本章内容
1. 定时与计数原理 2.ATmega16定时/计数器资 源 3.8位定时/计数器应用举例 4.定时/计数器1应用举例 5.看门狗定时器
单片机C语言程序设计
1.定时与计数原理
• • • • 计数原理(溢出、比较匹配) 定时原理 事件捕获原理 PWM输出原理与方法
S2
中断请求
初值 0xF5
初值寄存器作为计数 器回0时的初始值
当计数器计数 中断响应后溢 单片机的计数器用户是可以控制的(可编 溢出时的标志 出标志清“0”
程的),包括计数器的启动、计数脉冲的
有效方式、计数器的初值、计数溢出中断 请求开放或禁止等。
单片机C语言程序设计
计数原理(2)
0xF8 初 值
CK/1024
CK/256
单片机C语言程序设计
8位定时/计数器T/C0、T/C2(1)
ATmega16的定时/计数器共有3个:
1个16位的定时/计数器——定时/计数器1(简称T/C1)
2个8位定时/计数器——定时/计数器0(简称T/C0 )、 定时/计数器2(简称 T/C2) 这3个定时/计数器各具特点:
单片机C语言程序设计
设计思想
T/C2的时钟源——PC6(TOSC1)、PC7(TOSC2)的 32.768kHz的手表晶振;
32.768kHz的手表晶振128分频——分频后的晶振频率为256Hz,周 期为1/256秒,计录256个脉冲时,所需时间为1秒; 32.768kHz的手表晶振256分频——分频后的晶振频率为128Hz,周 期为1/128秒,记录128个脉冲所需时间也正好为1秒。 使用定时器的比较匹配工作方式、计数频率256分频,比较匹配值应为128 即0x80; 为什么将32.768kHz称为“手表晶振”或“实时时钟晶振”,T/C2为 什么可用作“实时时钟RTC——Real Time Clock ”,其道理就在如此。 引脚PD7为T/C2输出OC2,1s反转一次,输出波形频率为0.5Hz。 OC2设置为T/C2比较匹配后触发。
T/C0功能普通——(8位二进制)计数、定时、CTC、PWM
T/C1功能多——(16位二进制)计数、定时、CTC、PWM、
输入捕获
T/C2功能少且特殊——(8位)定时(有异步定时功能,可 作为实时时钟RTC)、PWM
单片机C语言程序设计
8位定时/计数器T/C0、T/C2(2)
ATmega16的8位定时/计数器用户可以控制:
clkT2S(不经过分频器) clkT2S/8(来自分频器)
clkT2S/32(来自分频器) clkT2S/64(来自分频器)
1
1 1
来自百度文库
0
1 1
1
0 1
clkT2S/128(来自分频器)
clkT2S/256(来自分频器) clkT2S/1024(来自分频器)
单片机C语言程序设计
T/C中断屏蔽寄存器 —— TIMSK
位4:T/C1输出比较A匹配中断使能,为“1”时允许中断,为“0”时 禁止中断。 位3:T/C1输出比较B匹配中断使能,为“1”时允许中断,为“0”时 禁止中断。 位2:T/C1溢出中断使能,为“1”时允许中断,为“0”时禁止中断。 位1:T/C0输出匹配中断使能,为“1”时允许中断,为“0”时禁止中断。 位0:T/C0溢出中断使能,为“1”时允许中断,为“0”时禁止中断。
10位T/C预分频器
T0 T1
CS10 CS11 CS12
本实验装置上的系统时钟为 4.000MHz)按设定的比例进行分频, 以产生不同周期的时钟clkT0、clkT1, 分别作为时钟源提供给T/C0和T/C1 使用。
0 0 CS00 CS01 CS02
T/C1时钟源clkT1
T/C0时钟源clkT0
相关文档
最新文档