ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:1.19MB ,
资源ID:1632814      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1632814.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第8章 定时计数器的结构与应用.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第8章 定时计数器的结构与应用.docx

1、第8章 定时计数器的结构与应用第8章 定时计数器的结构与应用定时计数器(Timer/Counter)是单片机中最基本的接口之一,它的用途非常广泛,常用于计数、延时、测量周期、频率、脉宽、提供定时脉冲信号等。在实际应用中,对于转速,位移、速度、流量等物理量的测量,通常也是由传感器转换成脉冲电信号,通过使用定时计数器来测量其周期或频率,再经过计算处理获得。相对于一般8位单片机而言,AVR不仅配备了更多的定时计数器接口,而且还是增强型的,如通过定时计数器与比较匹配寄存器相互配合,生成占空比可变的方波信号,即脉冲宽度调制输出PWM信号,用于D/A、马达无级调速控制、变频控制等,功能非常强大。ATmeg

2、a16一共配置了2个8位和1个16位,共3个定时计数器,它们是8位的定时计数器T/C0、T/C2和16位的定时计数器T/C1。本章将着重对AVR的8位定时计数器的结构、功能和应用进行讲解,并介绍基本的使用设计方法。8.1 定时计数器的结构在单片机内部,一般都会集成由专门硬件电路构成的可编程定时计数器。定时计数器最基本的功能就是对脉冲信号“自动”进行计数。这里所谓的“自动”,指计数的过程是由硬件完成的,不需要MCU的干预。但MCU可以通过指令设置定时计数器的工作方式,以及根据定时计数器的计数值或工作状态做必要的处理和响应。学习和使用定时计数器时,必须注意以下的基本要素: 定时计数器的长度。定时计

3、数器的长度是指计数单元的位长度,一般为8位(一个字节)或16位(2个字节)。 脉冲信号源。脉冲信号源是指输入到定时计数器的计数脉冲信号。通常用于定时计数器计数的脉冲信号可以由外部输入引脚提供,也可以由单片机内部提供。 计数器类型。计数器类型是指计数器的计数运行方式,可分为加一(减一)计数器,单程计数或双向计数等。 计数器的上下限。计数器的上下限指计数单元的最小值和最大值。一般情况下,计数器的下限值为零,上限值为计数单元的最大计数值,即255(8位)或65535(16位)。需要注意的是,当计数器工作在不同模式下时,计数器的上限值并不都是计数单元的最大计数值255或65535,它将取决于用户的配置

4、和设定。 计数器的事件。计数器的事件指计数器处于某种状态时的输出信号,该信号通常可以向MCU申请中断。如当计数器计数到达计数上限值255时,产生“溢出”信号,向MCU申请中断。8.1.1 8位定时计数器T/C0的结构ATmega16中有两个8位的定时计数器:T/C0、T/C2,它们都是通用的多功能定时计数器,其主要特点是: 单通道计数器。 比较匹配时清零计数器(自动重装特性,Auto Reload)。 可产生无输出抖动(glitch-free)的,相位可调的脉宽调制(PWM)信号输出。 频率发生器。 外部事件计数器(仅T/C0)。 带10位的时钟预分频器。 溢出和比较匹配中断源(TOV0、OC

5、F0和TOV2、OCF2)。 允许使用外部引脚的32kHz手表晶振作为独立的计数时钟源(仅T/C2)。T/C0、T/C2的主要结构和大部分的功能是相同或类似的,因此,我们先介绍T/C0的结构和应用。1T/C0的组成结构图8-1为8位T/C0的硬件结构框图。图中给出了MCU可以操作的寄存器以及相关的标志位。在T/C0中,有两个8位的寄存器:计数寄存器TCNT0和输出比较寄存器OCR0。其它相关的寄存器还有T/C0的控制寄存器TCCR0,中断标志寄存器TIFR和定时器中断屏蔽寄存器TIMSK。T/C0的计数器事件输出信号有两个,计数器计数溢出TOV0和比较匹配相等OCF0。这两个事件的输出信号都可

6、以申请中断,中断请求信号TOV0、OCF0可以在定时器中断标志寄存器TIFR中找到,同时在定时器中断屏蔽寄存器TIMSK中,可以找到与TOV0、OCF0对应的两个相互独立的中断屏蔽控制位TOIE0、OCIE0。图8-1 8位T/C0的结构框图(1)T/C0的时钟源T/C0的计数时钟源可由来自外部引脚T0的信号提供,也可来自芯片的内部。图8-2为T/C0时钟源部分的内部功能图。 T/C0计数时钟源的选择T/C0的时钟源的选择由T/C0的控制寄存器TCCR0中的3个标志位CS02:0确定,共有8种选择。其中包括无时钟源(停止计数),外部引脚T0的上升沿或下降沿,以及内部系统时钟经过一个10位预定比

7、例分频器分频的5种频率的时钟信号(1/1、1/8、1/64、1/256、1/1024)。T/C0与T/C1共享一个预定比例分频器,但它们时钟源的选择是独立的。 使用系统内部时钟源当定时计数器使用系统内部时钟作为计数源时,通常作为定时器和波形发生器使用。因为系统时钟的频率是已知的,这样通过计数器的计数值就可以知道时间值。AVR在定时计数器和内部系统时钟之间增加了一个预定比例分频器,分频器对系统时钟信号进行不同比例的分频,分频后的时钟信号提供定时计数器使用。利用预定比例分频器,定时计数器可以从内部系统时钟获得几种不同频率的计数脉冲信号,使用非常灵活。图8-2 T/C0的时钟源与10位预定比例分频器

8、 使用外部时钟源当定时计数器使用外部时钟作为计数源时,通常作为计数器使用,用于记录外部脉冲的个数。图8-3为外部时钟源的检测采样逻辑功能图。图8-3 T/C0外部时钟检测采样逻辑功能图外部引脚T0(PB0)上的脉冲信号可以作为C/T0的计数时钟源。PB0引脚内部有一个同步采样电路(Synchronization),它在每个系统时钟周期都对T0引脚上的电平进行同步采样,然后将同步采样信号送到边沿检测器(Edge Detector)中。同步采样电路在系统时钟的上升沿将引脚信号电平打入寄存器,因此当系统的时钟频率大大高于外部引脚上电平变化的频率时,同步采样寄存器可以看作是透明的。边沿检测电路对同步采

9、样的输出信号进行边沿检测,当检测到一个正跳变(CS02:0=7)或负跳变(CS02:0=8)时产生一个计数脉冲CLKT0。由于引脚内部的同步采样和边沿检测电路的存在,引脚电平的变化需要经过2.53.5个系统时钟后才能在边沿检测的输出端上反映出来。因此,要使外部时钟源能正确的被引脚的检测采样,外部时钟源的最高频率不能大于fclk_I/O/2.5,脉冲宽度也要大于一个系统时钟周期。另外,外部时钟源是不进入预定比例分频器进行分频的。(2)T/C0的计数单元T/C0的计数单元是一个可编程的8位双向计数器,图8-4是它的逻辑功能图,图中符号所代表的意义如下: 计数(count) TCNT0加1或减1。

10、方向(direction) 加或减的控制。 清除(clear) 清零TCNT0。 计数时钟(clkT0) C/T0时钟源 顶部值(TOP) 表示TCNT0计数值到达上边界。 底部值(BOTTOM) 表示TCNT0计数值到达下边界(零)。图8-4 T/C0计数单元逻辑功能图T/C0根据计数器的工作模式,在每一个clkT0时钟到来时,计数器进行加1、减1或清零操作。clkT0的来源由标志位CS02:0设定。当CS02:0=0时,计数器停止计数(无计数时钟源)。T/C0的计数值保存在8位的寄存器TCNT0中,MCU可以在任何时间访问(读/写)TCNT0。MCU写入TCNT0的值将立即覆盖其中原有的内

11、容,同时也会影响到计数器的运行。计数器的计数序列取决于寄存器TCCR0中标志位WGM01:0的设置。WGM01:0的设置直接影响到计数器的计数方式和OC0的输出,同时也影响和涉及T/C0的溢出标志位TOV0的置位。标志位TOV0可以用于产生中断申请。(3)比较匹配单元图8-5 T/C0比较匹配单元逻辑功能图图8-5为T/C0的比较匹配单元逻辑功能图。在T/C0运行期间,比较匹配单元一直将寄存器TCNT0的计数值同寄存器OCR0的内容进行比较(硬件进行自动比较处理)。一旦两者相等,在下一个计数时钟脉冲到达时置位OCF0标志位。标志位OCF0也可以用于产生中断申请。根据WGM01:0和COM01:

12、0的不同设置,可以控制比较匹配单元产生和输出不同类型的脉冲波形。寄存器OCR0实际上配置有一个辅助缓存器。当T/C0工作在非PWM模式下时,该辅助缓存器处于被禁止使用状态,此时MCU直接访问和操作寄存器OCR0。当T/C0工作在PWM模式时,该辅助缓存器投入使用,这时MCU对OCR0的访问操作,实际上是对OCR0的辅助缓存器操作。一旦计数器TCNT0的计数值达到设定的最大值(TOP)或最小值(BOTTOM)时,辅助缓存器中的内容将同步更新比较寄存器OCR0的值。这将有效防止产生奇边非对称的PWM脉冲信号,使输出的PWM波中没有杂散脉冲。 强制输出比较在非PWM波形发生模式下,写1到强制输出比较

13、位(FOC0)时,将强制比较器产生一个比较匹配输出信号。强制比较输出信号不会置OCF0标志位或重新装载/清零计数器,但是会像真的发生了比较匹配事件一样更新OC0输出引脚输出。 通过写TCNT0寄存器屏蔽比较匹配事件任何MCU对TCNT0寄存器的写操作都会屏蔽在下一个定时器时钟周期中的发生的比较匹配事件,即使在定时器暂停时。这一特性使OCR0可以被初始化为与TCNT0相同的值,而不会在定时计数器被使能时触发中断。 使用输出比较单元由于在任何工作模式下,写TCNT0寄存器都会使得输出比较匹配事件被屏蔽一个定时器时钟周期,因此可能会影响比较匹配输出的正确性。例如,写入一个与OCR0相同的值到TCNT

14、0时,将丢失一次比较匹配事件,从而引起发生不正确的波形。同样,当定时器是向下计数时,不要将下边界的值写入TCNT0。外部引脚OC0的设置必须在设置该端口引脚(PB3)为输出之前。设置OC0的值最简单的方法是在通常模式下使用FOC0来设置,这是因为在改变工作模式时,OC0寄存器将保持其原来的值。需要注意的是,COM01:0是无缓冲的,改变COM01:0位的设置,会立即影响T/C0的工作方式。(4)比较匹配输出单元标志位COM01:0有两个作用:定义OC0的输出状态,以及控制外部引脚OC0是否输出OC0寄存器的值。图8-6为比较匹配输出单元的逻辑图。图8-6 T/C0比较匹配输出单元逻辑图当标志位

15、COM01:0中任何一位为“1”时,波形发生器的输出OC0取代引脚PB3原来的I/O功能,但引脚的方向寄存器DDRB3仍然控制OC0引脚的输入/输出方向。如果要在外部引脚PB3上输出OC0的逻辑电平,应设定DDRB3定义该引脚为输出脚。采用这种结构,用户可以先初始化OC0的状态,然后再允许其由引脚PB3输出。(5)比较输出模式和波形发生器T/C0有四种工作模式,根据COM01:0的不同设定,波形发生器将产生各种不同的脉冲波形,如PWM波形的产生和输出。但只要COM01:0=0,波形发生器对OC0寄存器没有任何作用。2与8位T/C0相关的寄存器(1)T/C0计数寄存器TCNT0位76543210$32($0052)TCNT0读/写R/WR/WR/WR/WR/WR/WR/WR/W初始化值00000000TCNT0是T/C0的计数值寄存器,该寄存器可以直接被MCU读写访问。写TCNT0寄存器将在下一个定时器时钟周期中阻塞比较匹配。因此,在计数器运行期间修改TCNT0的内容,有可能将丢失一次TCNT0与OCR0的匹配比较操作。(2)输出比较

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1