第1节 计数器/定时器的基本工作原理
推荐给好友
打印
加入收藏
更新于2008-07-25 19:56:10

在嵌入式应用系统中,有时要求能对外部脉冲信号或开关信号进行计数,这可通过计数器来完成。有些设备要求每间隔一定时间开启并在一段时间后关闭,有些指示灯要求不断地闪烁,这可利用定时信号来完成。个人计算机也经常要用到定时信号,如系统日历时钟的计时、产生不同频率的声源等。在计算机系统中,计数与定时问题的内容是一致的,只不过是同一个问题的两种表现形式。本节首先讨论计数与定时的一般方法,比较各种计数与定时方式的优缺点。然后阐述MC908GP32 MCU定时接口模块的基本功能。

12.1.1 实现计数与定时的基本方法

实现计数与定时的基本方法有三种:

(1) 完全硬件方式
在过去许多仪器仪表或设备中,需要进行延时、定时或计数,经常使用数字逻辑电路实现,即完全用硬件电路实现计数/定时功能,若要改变计数/定时的要求,必须改变电路参数,通用性和灵活性差。微型电子计算机出现以后,特别是随着单片微型计算机的发展与普及,这种完全硬件方式实现定时与计数的方法已较少使用。

(2) 完全软件方式
在计算机中,通过编程,利用计算机执行指令的时间实现定时,称为完全软件方式,简称软件方式。在这种方式中,一般是根据所需要的时间常数来设计一个延时子程序,延时子程序中包含一定的指令,设计者要对这些指令的执行时间进行严密的计算或者精确的测试,以便确定延时时间是否符合要求。当时间常数比较大时,常常将延时子程序设计为一个循环程序,通过循环常数和循环体内的指令来确定延时时间。这样,每当延时子程序结束以后,可以直接转入下面的操作,也可以用输出指令产生一个信号作为定时输出。这种方法的优点是节省硬件。主要缺点是执行延时程序期间,CPU一直被占用,所以降低了CPU的效率,也不容易提供多作业环境;另外,设计延时子程序时,要用指令执行时间来拼凑延时时间,显得比较麻烦。不过,这种方法在实际应用中还是经常使用的,尤其是在已有系统上作软件开发时,以及延时时间较小而重复次数又较少时,常用软件方法来实现定时。在计算机控制软件开发过程中,作为粗略的延时,经常使用这种方式。

(3) 可编程计数器/定时器
利用专门的可编程计数器/定时器实现计数与定时,克服了完全硬件方式与完全软件方式的缺点,综合了它们的优点,其计数/定时功能可由程序灵活地设置,设定之后与CPU并行地工作,不占用CPU的工作时间。应用可编程计数器/定时器,在简单的软件控制下,可以产生准确的时间延时。这种方法的主要思想是根据需要的定时时间,用指令对计数器/定时器设置定时常数,并用指令启动计数器/定时器。计数器/定时器开始计数,当计到确定值时,便自动产生一个定时输出。在计数器/定时器开始工作以后,CPU不必去管它,而可以去做其他工作。这种方法最突出的优点是计数时不占用CPU的时间,并且,如果利用计数器/定时器产生中断信号就可以建立多作业的环境,所以,可大大提高CPU的利用率。加上计数器/定时器本身的开销并不很大,因此,这种方法在微机应用系统中广泛使用。

12.1.2 MC908GP32 MCU的定时接口的基本原理概述

MC68HC08系列的单片机可以提供多个独立的定时器,例如,MC908GP32芯片有两个定时器,分别叫定时器1、定时器2,它们的工作原理是一致的,下面的说明均以定时器1为例。

HC08系列的单片机定时器的核心是一个工作时处于不断加1的16位计数寄存器,简称为计数器。该计数器的时钟频率由外部晶振时钟(也可以是由锁相环模块得到的总线时钟)经过预定的分频因子分频得到,相互独立的定时器可以使用不同的分频因子。同一个定时器的所有动作都以这个经过分频的频率作为参考,所以相互之间都有确定的关系。从MCU的角度看,真正的时间间隔被这个计数器的定时计数所代替。所以在任何时候可以通过读取计数器的值确定经历的时间。

 在定时器内部有个控制和状态寄存器,通过对它某些位的设置,就可以确定多少时间计数器加1,即定时间隔。
在定时器内部还有个预置寄存器,当计数器的值等于预置寄存器的值时,称为计数器溢出,当计数器溢出时,计数器的值被赋0,同时将计数器溢出标志等状态置于控制和状态寄存器中。

通过对控制和状态寄存器的某位进行设置,可以决定在计数器溢出时,是否允许中断,利用这个中断,可以编写中断例程,实现希望的功能。

使用预置计数功能可以得到精确的溢出时间,可以在任何时候暂停或清除计数器的计数。溢出功能是定时器的最基本功能,本章介绍它的应用。

另外,HC08系列的单片机定时器还具有输入捕捉、输出比较、PWM脉冲输出、DMA直接存储器访问等功能。定时器的这些功能可以应用于不同的场合:利用输入捕捉测量脉宽、测量频率、输出特定的波形、直接输出脉宽调制波(PWM);使用输入捕捉配合输出比较还可以用来输出同步波形以及用于延时。以下简要给出MC908GP32的定时器的主要特征:
①每个定时器具有两路独立的输入捕捉/输出比较通道;
②带缓冲(Buffered)和不带缓冲(Unbuffered)的脉宽调制波;
③七种可编程选择的分频因子;
④预置计数;
⑤计数器停止或清除;
⑥16位输入捕捉和通道寄存器;

 说明:由于有两个定时器模块,使用时,寄存器名称中x值相应选用1或2。
⑦定时器溢出中断、每路通道的输入捕捉/输出比较中断。
每一个定时器都由两个引脚和11个寄存器组成。在MC908GP32的不同封装形式中,这两个引脚的布局可能是不同的,需要查阅具体的芯片说明。而在40脚的双列直插式封装中只提供了一个定时器的引脚。
MC908GP32两个定时器寄存器的设置和功能是完全相同的,只是寄存器的地址不同,表12-1给出了寄存器地址及功能简要说明。
图12-1给出了GP32的定时器模块的功能框图


<<上一节 下一节>>

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.