第8章定时器资源及其应用概要

上传人:今*** 文档编号:110026839 上传时间:2019-10-28 格式:PPT 页数:122 大小:1.88MB
返回 下载 相关 举报
第8章定时器资源及其应用概要_第1页
第1页 / 共122页
第8章定时器资源及其应用概要_第2页
第2页 / 共122页
第8章定时器资源及其应用概要_第3页
第3页 / 共122页
第8章定时器资源及其应用概要_第4页
第4页 / 共122页
第8章定时器资源及其应用概要_第5页
第5页 / 共122页
点击查看更多>>
资源描述

《第8章定时器资源及其应用概要》由会员分享,可在线阅读,更多相关《第8章定时器资源及其应用概要(122页珍藏版)》请在金锄头文库上搜索。

1、1,第8章 定时/计数器的结构与应用,2,概述,控制系统中常用到实时钟以实现: 定时 延时 外部事件计数 外部突发事件捕捉 PWM波形产生 几乎所有单片机内部都有定时器单元 M16有三个独立定时器T0、T1和T2,3,概述,定时器实质上是一个脉冲计数电路 脉冲源来自内部时钟则被称为定时器 脉冲源来自外部引脚输入信号则被称为计数器,4,使用定时计数器时,必须注意的基本要素,1.定时计数器的长度。 2.脉冲信号源:外部和内部 3. 计数器类型 计数器类型是指计数器的计数运行方式,可分为加一(减一)计数器,单程计数或双向计数等。 4. 计数器的上下限:即255(8位)或65535(16位 5. 计数

2、器的事件 计数器的事件指计数器处于某种状态时的输出信号,该信号通常可以向MCU申请中断。如当计数器计数到达计数上限值255时,产生“溢出”信号,向MCU申请中断。,5,8 位定时计数器T/C0 的结构,T/C0 是一个通用的单通道8 位定时器/ 计数器模块。其主要特点如下: 单通道8位计数器 比较匹配发生时清除定时器( 自动重装特性,Auto Reload) 无输出抖动,相位精确可调的PWM输出 频率发生器 外部事件计数器 10 位的时钟预分频器(1、8、64、256、1024) 溢出和比较匹配中断源 (TOV0 和 OCF0) 允许使用外部引脚的 32kHz 手表晶振作为独立的计数时钟源(仅

3、 T/C2),6,8位定时器T0,7,MCU的T/C0中可以操作的寄存器以及相关的标志位,1. 两个8位的寄存器; 2. 计数寄存器TCNT0 3. 输出比较寄存器OCR0。 4. T/C0的控制寄存器TCCR0 5. 中断标志寄存器TIFR 6. 定时器中断屏蔽寄存器TIMSK。,8,T/C0的计数器事件输出信号有两个,1.计数器计数溢出TOV0 2.比较匹配相等OCF0。,9,T0的时钟源及预分频器,T/C0的时钟源的选择由T/C0的控制寄存器TCCR0中的3个标志位CS02:0确定,共有8种选择。 无时钟源(停止计数),外部引脚T0的上升沿或下降沿,以及内部系统时钟经过一个10位预定比例

4、分频器分频的5种频率的时钟信号(1/1、1/8、1/64、1/256、1/1024)。,10,11,T/C0的时钟源与10位预定比例分频器,12,13,使用外部时钟源,T/C0外部时钟检测采样逻辑功能图,14,T0的计数单元,count 使TCNT0 加 1 或减1 direction 选择加操作或减操作 clear 清除TCNT0,clkTn T/C 的时钟, clkT0 top 表示TCNT0 已经达到了最大值 bottom 表示TCNT0 已经达到了最小值(0),15,T0的计数单元,TCNT0中存放计数值,逻辑控制在每个T0时钟修改TCNT0中的数值 MCU可以在任意时间访问TCNT0

5、,并可修改其数值,写入的值立即覆盖原有内容,并会影响T0的运行 T0计数时序取决于TCCR0中的WGM1:0的设置。 T0计数溢出时,置溢出中断标志TOV0,16,T0的比较匹配单元,8位比较器持续对TCNT0和输出比较寄存器OCR0进行比较。相等则比较器就给出匹配信号。 一旦TCNT0等于OCR0,在匹配发生的下一个定时器时钟周期输出比较标志OCF0 置位。 若此时OCIE0 = 1 且SREG 的全局中断标志I 置位,CPU 将产生输出比较中断。 执行中断服务程序时OCF0 自动清零,或者通过软件写”1” 的方式来清零 WGM01:0和COM01:0决定OC0引脚上输出不同波形,17,T0

6、的比较匹配单元,18,T0的比较匹配单元,比较输出寄存器OCR0配备了一个辅助缓存,以防产生奇边非对称的PWM波形 无需关心MCU如何管理此辅助缓存 MCU 对TCNT0 的写操作会屏蔽在下一个定时器时钟周期发生的比较匹配事件,19,T0的比较匹配的输出单元,TCCR0中的COM1:0用于设置比较匹配模式 波形发生器利用COM01:0 来确定下一次比较匹配发生时的输出比较状态(OC0) COM01:0 还控制OC0 引脚输出信号的来源。 若COM01:0=0则OC0寄存器不会影响OC引脚状态 OC引脚输出OC0寄存器的值必须设置OC引脚DDRx为输出,20,T0的比较匹配的输出单元,21,比较

7、输出模式和波形发生,T/C0有四种工作模式,根据COM01:0的不同设定,波形发生器将产生各种不同的脉冲波形,如PWM波形的产生和输出。但只要COM01:0=0,波形发生器对OC0寄存器没有任何作用。,22,与8位T/C0相关的寄存器,T/C0计数寄存器TCNT0,TCNT0是T/C0的计数值寄存器,该寄存器可以直接被MCU读写访问。写TCNT0寄存器将在下一个定时器时钟周期中阻塞比较匹配。因此,在计数器运行期间修改TCNT0的内容,有可能将丢失一次TCNT0与OCR0的匹配比较操作。,23,输出比较寄存器OCR0,8位寄存器OCR0中的数据用于同TCNT0寄存器中的计数值进行匹配比较。 在T

8、/C0运行期间,比较匹配单元一直将寄存器TCNT0的计数值同寄存器OCR0的内容进行比较。一旦TCNT0的计数值与OCR0的数据匹配相等,将产生一个输出比较匹配相等的中断申请,或改变OC2的输出逻辑电平。,24,定时计数器中断屏蔽寄存器TIMSK,位7(位1) OCIE2(OCIE0):T/C2(T/C0)输出比较匹配中断允许标志位 当OCIE2(OCIE0)被设为“1”,且状态寄存器中的I位被设为“1”时,将使能T/C2(T/C0)的输出比较匹配中断。若在T/C2(T/C0)上发生输出比较匹配,即OCF2=1(OCF0=1)时,则执行T/C2(T/C0)输出比较匹配中断服务程序。 位6(位0

9、) TOIE2(TOIE0):T/C2(T/C0)溢出中断允许标志位 当TOIE2(TOIE0)被设为“1”,且状态寄存器中的I位被设为“1”时,将使能T/C2(T/C0)溢出中断。若在T/C2(T/C0)上发生溢出,即TOV2=1(TOV0=1)时,则执行T/C2(T/C0)溢出中断服务程序。,25,定时计数器中断标志寄存器TIFR,位7(位1) OCF2(OCF0):T/C2(T/C0)比较匹配输出的中断标志位 当T/C2(T/C0)输出比较匹配成功,即TCNT2=OCR2(TCNT0=OCR0)时,OCF2(OCF0)位被设为“1”。当转入T/C2(T/C0)输出比较匹配中断向量执行中断

10、处理程序时,OCF2(OCF0)由硬件自动清零。写入一个逻辑“1”到OCF2(OCF0)标志位将清除该标志位。当寄存器SREG中的I位、OCIE2(OCIE0)以及OCF2(OCF0)均为“1”时,T/C2(T/C0)的输出比较匹配中断被执行。 位6(位0) TOV2(TOV0):T/C2(T/C0)溢出中断标志位 当T/C2(T/C0)产生溢出时,TOV2(TOV0)位被设为“1”。当转入T/C2(T/C0)溢出中断向量执行中断处理程序时,TOV2(TOV0)由硬件自动清零。写入一个逻辑“1”到TOV2(TOV0)标志位将清除该标志位。当寄存器SREG中的I位、TOIE2(TOIE0)以及T

11、OV2(TOV0)均为“1”时,T/C2(T/C0)的溢出中断被执行。在PWM模式中,当T/C2(T/C0)计数器的值为0x00并改变计数方向时,TOV2(TOV0)自动被置为“1”。,26,(5)T/C0控制寄存器TCCR0,8位寄存器TCCR0是T/C0的控制寄存器,它用于选择计数器的计数源,工作模式和比较输出的方式等。 位7FOC0:强制输出比较 FOC0位只在T/C0被设置为非PWM模式下工作时才有效,在PWM模式下写TCCR0寄存器时,该位必须被写零。当将一个逻辑“1”写到FOC0位时,会强加在波形发生器上一个比较匹配成功信号,使波形发生器依据COM01:0位的设置而改变OC0输出状

12、态。注意:FOC0的作用仅如同一个选通脉冲,而OC0的输出还是取决于COM01:0位的设置。 一个FOC0选通脉冲不会产生任何的中断申请,也不影响计数器TCNT0和寄存器OCR0的值。一旦一个真正的比较匹配发生,OC0的输出将根据COM01:0位的设置而更新。,27,这两个标志位控制T/C0的计数和工作方式,计数器计数的上限值,以及确定波形发生器的工作模式(见表8.1)。T/C0支持的工作模式有:普通模式,比较匹配时定时器清零(CTC)模式,以及两种脉宽调制(PWM)模式。,位3,6WGM01:0:波形发生模式,28,位5,4COM01:0:比较匹配输出方式 这两个位用于控制比较输出引脚OC0

13、的输出方式。如果COM01:0中的任何一位或两位被置“1”,OC0的输出将覆盖PB3引脚的通用I/O端口功能,但此时PB3引脚的数据方向寄存器DDRB3位必须置为输出方式。当引脚PB3作为OC0输出引脚时,其输出方式取决于COM01:0和WGM01:0的设定。 表8.2给出了在WGM01:0的设置为普通模式和CTC模式(非PWM)时,COM01:0位的功能定义。,29,表8.3给出了在WGM01:0的设置为快速PWM模式时,COM01:0位的功能定义。,WGM01:0设置为相位可调的PWM模式时,COM01:0位的功能定义。,30,位2,0CS02:0:T/C0时钟源选择 这3个标志位被用于选

14、择设定T/C0的时钟源,见表8.5。,31,T0的工作方式,T0可以工作在一下四种方式中 方式0:普通模式(WGM01:0=00) 方式2:比较匹配清零计数器CTC模式(WGM01:0=10) 方式3:快速PWM模式(WGM01:0=11) 方式1:相位可调PWM模式(WGM01:0=01) OC0输出模式由COM1:0的设置和工作方式决定,32,T0的工作方式0:普通模式,WGM01:0=0时,T0工作在普通模式 T0为单向加一计数器,直到TCNT0值到达0xFF,下个计数脉冲到来时,由于数值溢出计数器简单地返回到最小值0x00 重新开始 在TCNT0 溢出时,置溢出标志位TOV0 用户可以

15、随时通过写入TCNT0初值调整计数器溢出时间间隔 输出比较单元可以用来产生中断,但是不推荐在普通模式下利用输出比较来产生波形,因为这会占用太多的CPU 时间。 用于普通定时,33,T0的工作方式0:普通模式,要求:8M外部晶振,定时100us 每个系统时钟周期1/8us T0时钟采用8分频,一个T0时钟周期1us 100个T0时钟周期后产生溢出中断 TCNT0值 256-100=156 0x9C TCCR0的值?,34,T0的工作方式0:普通模式,TCCR0中的WGM00和WGM01为00时即为普通模式 COM01和COM00为00时不影响OC0,35,T0的工作方式0:普通模式,CS02、C

16、S01和CS00为 010,36,T0的工作方式0:普通模式,0 0 0 0 0 0 1 0 TCCR0 = 0x02,37,T0的工作方式0:普通模式,定时器中断屏蔽寄存器TIMSK 允许溢出中断 TOIE0为1 TIMSK|=0x01,38,T0的工作方式0:普通模式,T0初始化 void timer0_init(void) TCCR0 = 0x00; /stop TCNT0 = 0x9C; /set count TCCR0 = 0x02; /start timer TIMSK |= 0x01; /timer interrupt sources SEI(); /re-enable interrupts ,39,T0的工作方式0:普通模式,T0溢出中断服务程序 #pragma interrupt_handler timer0_ovf_isr:iv

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号