计数器

一、作用

定时器/计数器以定时器的作用最为突出。一般来说涉及到定时器,都可以算作定时器算法。简单的如秒表等。复杂的如果系统内核的定时算法等。在学习单片机的路上,必学会定时器。

二、工作原理

定时器/计数器的原理其实没那么难。

定时器也就是一个计数器。而每计一个数的时间是一定的,于是就等价了定时器。51的定时器是从你设置的初值开始计数,直到他所能达到的最高数值为止。即:

定时时间 =(最大值 – 初值)X 每计一个数的时间

最大值因不同模式而定,初值需要你设计。

当达到定时器最大值的时候,就会触发定时器标志置位。当开启全局中断和定时器中断的时候,定时器标记置位会触发定时器中断函数,执行玩中断后,标记会自动复位。备注:如果没有触发中断函数,标记不会自动复位。

三、定时器术语理解

1、溢出:当定时器达到定时或者计数标准的时候,定时器就处在溢出停止状态。

2、溢出标记:当定时器溢出的时候,定时器标志就会置位。

3、初值:设计者自行设计的定时器计数的起步值。定时器是从这个值开始定时或者计数到最大值。

4、初值的计算:定时器有装载定时计数的寄存器,只要对这个寄存器进行操作即可。

四、工作模式寄存器TMOD,地址89H(不可按位寻址)

51单片机的定时计数器

GATE:定时操作开关控制位。当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。

C/T:定时器/计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。

M1和M0为定时器工作模式选择位。

定时器的工作模式如图2所示:

51单片机的定时计数器

五、控制寄存器TCON,地址位88H(可按位寻址)

51单片机的定时计数器

TF1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。

TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。

TR1:T1充许计数控制位,为1时充许T1计数。

TR0:T0充许计数控制位,为1时充许T0计数。

备注:其他位供其他功能使用

六、控制寄存器T2CON

51单片机的定时计数器

TF2:T2溢出中断标志。TF2必须由用户程序清“0”。当T2作为串口波特率发生器时,TF2不会被置“1”。

EXF2:定时器T2外部中断标志。EXEN2为1时,当T2EX(P1.1)发生负跳变时置1中断标志DXF2,EXF2必须由用户程序清“0”。

TCLK:串行接口的发送时钟选择标志。TCLK=1时,T2工作于波特率发生器方式。

RCLK:串行接口的接收时钟选择标志位。RCLK=1时,T2工作于波特率发生器方式。

EXEN2:T2的外部中断充许标志。

C/T2:外部计数器/定时器选择位。C/T2=1时,T2为外部事件计数器,计数脉冲来自T2(P1.0);C/T2=0时,T2为定时器,振荡脉冲的十二分频信号作为计数信号。

TR2:T2计数/定时控制位。TR1为1时充许计数,为0时禁止计数。

CP/RL2:捕捉和常数自动再装入方式选择位。为1时工作于捕捉方式,为0时T2工作于常数自动再装入方式。当TCLK或RCLK为1时,CP/RL2被忽略,T2总是工作于常数自动再装入方式。

定时器2工作模式如图5所示:

51单片机的定时计数器

七、定时器应用技巧

1、定时器定时长度扩展。可以人为的加入变量,每当定时器溢出,变量进行自加。这样就可以无限的扩展定时时间长度。

2、定时器误差问题。因为在执行定时器中断的时候,执行里面指令肯定要耗时。所以减少误差的就两种办法:简化中断服务程序;将定时器中断的程序外迁。

转自:武力戡乱的博客

围观 8
762

定时/计数器结构(T0和T1)
51单片机 | 定时/计数器原理及结构
16位寄存器T0、T1分别由TH0、TL0和TH1、TL1四个8位计数器组成

  • 定时器的区别:

    • T0可分成2个独立的8位定时器,而定时器1则不能;
    • T1可作为串口的波特率发生器,而定时器0则不能。
  • 工作原理

    • 用途:定时器和计数器
    • 核心:加1计数器
    • 原理:每来一个脉冲则加1计数器加1,当加到全1时再来一个脉冲使加1计数器归零,同时加1计数器的溢出使TCON寄存器中的TF0(或TF1)置1,向CPU发出中断请求
    • 脉冲来源:

      • 定时器:脉冲来源是由系统的时钟晶振器输出脉冲源提供
      • 计数器:脉冲来源是由T0或T1引脚(P3.4或P3.5)输入的外部脉冲源提供

注:T0或T1都不能同时既做定时器也做计数器

补充:

  • 计数器工作原理:

    用作计数器时,对T0或T1引脚的外部脉冲计数,如果前一个机器周期采样值为1,后一个机器周期采样值为0 ,则说明有一个脉冲,计数器加1。

    在每个机器周期的S5P2期间采样引脚输入电平。新的计数初值于下一个机器周期的S3P1期间装入计数器。

    此种方式需要两个机器周期来检测一个1->0负跳变信号,因此最高的计数频率为时钟频率的1/24。

  • S5P2:

    S5P2指的是第5个时钟周期的相位2。

    晶体振荡器的振荡信号从XTAL2端输入到片内的时钟发生器上,时钟发生器是一个二分频触发器电路,它将振荡器的信号频率除以2,向CPU提供了两相时钟信号P1和P2。时钟信号的周期称为机器状态时间S,它是振荡周期的2倍。在每个时钟周期(即机器状态时间S)的前半周期,相位1(即P1信号)有效,在每个时钟周期的后半周期,相位2(即P2信号)有效。

使用的寄存器

  • TCON控制寄存器:启动和停止定时/计数器的计数,并控制定时器的工作状态,不能按位寻址
  • 51单片机 | 定时/计数器原理及结构
  • TMOD方式寄存器:设置定时器的工作方式,选择定时或计数的功能,可以按位寻址。(和中断共用寄存器,高四位为定时计数器使用,低四位为中断使用)
  • 51单片机 | 定时/计数器原理及结构51单片机 | 定时/计数器原理及结构

    注:GATE逻辑结构此处略过

工作方式:

  • 方式0
    • 计算公式:
      51单片机 | 定时/计数器原理及结构
    • 最大计数:8192个机器周期
    • 工作原理:
      13位计数器,使用TL0的低5位和TH0的高8位组成,TL0的低5位溢出时向TH0进位。TH0溢出时发出中断请求。
      51单片机 | 定时/计数器原理及结构
  • 方式1
    • 计算公式:
      51单片机 | 定时/计数器原理及结构
    • 最大计数:65536个机器周期
    • 工作原理:
      16位计数器,TL0作为低8位,TH0作为高8位
      51单片机 | 定时/计数器原理及结构
  • 方式2:自动重装初值的8位计数方式
    • 计算公式:
      p.s.晶振频率必须选择12的整数倍,因为定时器的频率是晶振频率的1/12。
      51单片机 | 定时/计数器原理及结构
    • 最大计数:256个机器周期
    • 优点:
      适合做比较精准的脉冲信号发生器
    • 缺点:
      51单片机 | 定时/计数器原理及结构
    • 工作原理:
      计数器溢出后,计数器自动将上次设置的初值重装。
      51单片机 | 定时/计数器原理及结构
  • 方式3:p.s.只能用于定时/计数器T0,T0工作在方式3时,T1不要使用在有中断的场合。通常该种情况下T1用作串口波特率发生器
    • 工作原理:
      将T0分成两个独立的8位定时/计数器TL0和TH0。

      TL0为正常的8位定时/计数器,计数器溢出后置位TF0,申请中断,之后重装初值。

      TH0也是8位定时/计数器,但由于TL0占用了TF0和TR0,因此TH0占用定时器TF1和TR1(所以T1不能用)
      51单片机 | 定时/计数器原理及结构

时钟周期/机器周期计算:
51单片机 | 定时/计数器原理及结构

定时/计数器初始化

  • 对TMOD赋值,确定T0和T1的工作方式
  • 计算初值,并将其写入TH.x和TL.x
  • 使用中断方式时对IE寄存器赋值开发中断
  • 使TR0或TR1置位,启动定时/计数器

转自: hugh.dong

围观 8
1644

在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这几部分内容是单片机学习的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。

计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。

在定时器和计数器中都有一个溢出的概念,那什么是溢出了。呵呵,我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断,至于什么是中断我们下次再讲,这里只是初步的提下概念,中断就是能够打断系统正常运行,而去运行中断服务程序的过程,当服务程序运行完以后又自动回到被打断的地方继续运行。

在定时器计数器中,我们有个概念叫容量,就是最大计数量。方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。

在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。问题1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想象,如果拿一个空碗去接水,那么还是得要100滴水才能溢出,但是如果我们拿一个已经装有水的碗拿去接,那就不用100滴了。到此我们可以算出,要使10滴水让碗中的水溢出,那么碗中就先要装90滴水。

在定时计数器中,这90滴水就是我们所谓的初始值。问题2,在一个车间我们如何利用单片机对100件产品进行计件,并进行自动包装呢?

我们可以利用计数器计数100,在中断中执行一个自动包装的动作就可以了。

在这里计数初值有3个,假设有方式0:计数初值=8912(2的13次方)—100=8812。方式1:计数初值=65536(2的16次方)—100=65436。方式0:计数初值=256(2的8次方)—100=156。

根据所得的初始值,再将其转换为16进制或者2进制,就可以进行计数或者定时了。当然要让程序完全的运行起来还需要相应的寄存器进行设置。

来源:网络

围观 12
1354

作者: Avi Avanindra,Devardhi Mandya,Cypress

网络路由器带有用于性能监控、流量管理、网络追踪和网络安全的统计计数器。计数器用来记录数据包到达和离开的次数以及特定事件的次数,比如当网络出现坏包时。数据包的到达会使多个不同的统计计数器发生更新;但一台网络设备中的统计计数器的数量及其更新速度常常受到存储技术的限制。

管理统计计数器需要高性能的存储器才能满足多重的读—修改—写操作。本文将描述一种使用IP方法的独特统计计数器,这种计数器的一端可以连接网络处理器(NPU),另一端可以连接Xilinx公司的QDR-IV存储控制器。QDR-IV统计计数器IP是一种带有QDR-IV SRAM、为网络交流管理和其他计数器应用提供高效统计计数器的软IP。

1、QDR-IV SRAM概述

QDR-IV SRAM配备两个双向数据端口A和B,可以在一个时钟周期内完成两次数据写入或两次数据读取操作,或一次读写结合的操作。因此,这一特点带来了额外的灵活性,架构师可将之用于读/写并不一定平衡的应用中。每个端口在两个时钟沿均可进行数据传输(DDR(双倍数据速率)操作),工作模式为突发式,每个时钟周期的突发长度为两个字(每个字为X18或X36)。地址总线为通用型,其上升沿和下降沿能分别为端口A和端口B提供地址。部分制造商的QDR-IV SRAM还可支持嵌入式ECC(错误检查和纠正),可从根本上消除软错误,提高存储器陈列的可靠性。

QDR-IV SRAM分为两种:高性能 (HP) QDR-IV和超高性能 (XP) QDR-IV。HP设备的最大运行频率为667 MHz,而XP设备的最大运行频率为1066 MHz。QDR-IV XP能够通过将存储空间分成分成8个内存条来增加性能,用地址的3个最低有效位(LSB)表示。要求的存储方案是在同一周期内存取不同的内存条。从一个周期到另一周期,所有的内存条均可存取,系统设计师可通过规划系统架构来相应地分配记忆库地址,以充分发挥极速存储器的RTR性能。这样,开发人员可以在降低总系统成本的同时大幅提高性能。

2、统计计数器IP

QDR IV统计计数器是一种带有QDR-IV SRAM,并且为网络交流管理和其他计数器应用提供统计计数器的软IP。该IP采用支持系统管理存取端口的读—修改—写逻辑。该IP的一端可以连接网络处理单元(NPU),另一端可以连接 QDR-IV存储控制器。由于该统计计数器支持400Gbps及更快速率的线卡,因此性能仅受限于所使用的FPGA和QDR-IV设备。

3、统计计数器IP的运行

图1是使用QDR-IV和统计计数器IP的用例。典型的网络处理单元(NPU)以800M的每秒配对物更新速率发送统计(STATS)更新请求。每一项STATS请求包含在一个72位字中带有两个计数器(数据包和字节计数)的入口/出口包命令令牌。整个计数器缓存数据以1秒为间隔,更新到系统存储器中的终身计数器(通常为DRAM)。这一来自NPU的回读被称为处理器(PROCS)更新请求。PCIe接口用于传输计数器缓存数据以更新终身计数器。下图显示了STATS IP的设置和与Xilinx存储控制器、PCIe总线和NPU连接的QDR-IV存储器。

基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计
图1:带统计IP、NPU和存储器的完整基础架构

统计IP适用于HP和XP QDR-IV存储器。其运行模式通过位于IP设计顶层接口的单一参数控制。两个计数器(数据包和字节)的每个流地址为单72位字。一个144Mb QDR-IV SRAM支持四百万计数器。该设计所要求的IP接口数量与所使用的QDR-IV SRAM的数量相当。

正如模块图所示,NPU通过4x25Gbps链路将统计和处理请求推送到IP中。IP的运行频率为存储器存取频率的四分之一,并且使用四条被称为“通道”的平行数据路径以匹配存储器带宽。在存储接口HP和XP运行模式中,端口A作为读取端口,端口B作为写入端口。每项统计请求对保存在与该请求相关的独特存储位置中的计数器数据进行读—修改—写操作。

读写请求通过分阶段来延迟与QDR-IV存储器读取延迟以及存储控制器延迟的匹配。分阶段设计也作为本地缓存累积延迟过程中的服务更新请求。在HP模式中,没有统计/处理器更新地址限制通过四根通道中的任何一根。地址的发生可能是随机的,并且无需给每根通道分配特定类型的地址。但由于在XP模式中存储器的区块结构和限制与其相关,因此通道0和1被分配到保存入口流数据的奇数地址位置,通道2和3被分配到保存出口流数据的偶数地址位置。这一独特的安排可以预防可能在XP模式中发生的分块限制位置。
处理器发出的一秒钟回读请求常见于这两种运行模式。整个存储位置需要以一秒钟间隔回读,因此处理器不发出连续请求,并且以一秒钟间隔时间分布。该活动在每次通过处理器请求读取后复位存储器位置。

4、统计IP架构

图2中的STATS_IP架构模块图标出了三个子部件:每条通道的同地址比较管道(SACOMP)区块、请求-复用-解复用(REQ_MXDMX_CHn)区块以及每条QDR IV应用通道1个的4个A-B通道配对计数器逻辑(ABCH_CTRL_CHn)区块实例。

基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计
图2:统计IP架构

SACOMP模块图包含两个管道阶段,其中一个用于通过比较将同一时钟周期上的所有四条通道进行压缩(SACOMP_ChN-to-All),另一个用于对单一通道上的同一地址进行双向(突发2)比较(SACOMP_B2BChN)。当两条或更多条通道在指定的时间实例中为同一地址时,优先性最高的通道积累地址相同的通道上出现的数据,而所有其他优先性较低、地址相同的通道都将失效。这确保了单一统计请求覆盖所有地址相同的通道,从而预防出现任何数据一致性问题。比较和积累算法对所有可能的情况进行快速评估。此外,在单根通道上,如果有同一存储位置的双向统计更新请求,则最新请求失效,其数据通过之前发生的请求积累。这样能够确保任何同一地址位置的双向存取不会在QDR-IV存储设备定义的读取延迟中发生。

图2所示的请求-复用– 解复用(RQMXDMXChn)区块接收对应通道数的处理器更新请求和统计更新请求。由于处理器更新请求的间隔时间固定,因此RQMXDMXchN选择对应下一个时钟服务的处理器请求,并且通过“请求就绪”回压信号停止统计请求。在开始处理每个一秒更新请求后,RQMXDMXchN停止配置时钟数(默认为10)的处理器请求通道以确保不会提供连续的一秒更新请求服务。停止信号发送至NPU,确保在回压信号失效前不会产生新的请求。该机制能够在不堵塞这一设计的情况下处理统计和处理器请求。

在最终阶段,A-B通道配对计数器逻辑(ABCH_CTRLn)对每项统计请求实施实际的读—修改—写机制,同时确保对每一项处理器请求进行最新读取。该阶段包含读取-延时管道逻辑、控制复用、读写管道和QDR-IV控制器接口逻辑。读写延时管道考虑了内存和控制器延迟。来自邻近通道和同一通道控制复用的反馈机制杜绝所有数据一致性问题发生的可能性。管道中的请求流发起统计和处理器更新。控制复用(CTRL_MUX)区块区分处理器和统计请求,从而使当前数据能够作为处理器读取数据转发或者推送到控制器接口区块以便进行进一步处理。控制器接口区块将实际的读写请求转换为端口A和端口B上的控制器特定命令。

5、QDR-IV接口运行和应用通道映射

统计流四通道和一秒(处理器)更新四通道接口作为应用通道。QDR IV控制器采用带有为QDR IV端口A和端口B定义的专用四通道端口界面的4:1/1:4通道复用/解复用功能。QDR-IV控制器以固定顺序对通道进行复用和解复用,应用端和以4X时钟频率运行的QDR IV设备端之间的顺序为ch0、ch1、ch2和ch3。图3为所假设的QDR-IV控制器顺序和建议的QDR IV HP统计计数器解决方案和QDR IV XP统计计数器解决方案应用通道映射。

基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计
图3 QDR-IV接口4:1/1:4 复用/解复用和应用通道映射

在QDR-IV HP统计计数器中,端口A和端口B 的请求独立于地址并按照Ch0-Ch1-Ch2-Ch3顺序的排列。这是因为HP模式无区块要求,并且端口A和端口B上的请求可能包含同一位置的地址。但在QDR-IV XP统计计数器中,端口A和端口B的请求是以奇数-偶数-奇数-偶数为顺序的排列的,这样端口A和端口B在同一时钟周期中就不会出现两个属于同一区块的地址。

基于 QDR-IV SRAM的QDR IV 统计计数器IP为网络流量管理和其他计数器的应用提供了高效的统计计数方案。了解更多关于QDR-IV SRAM的相关信息,敬请访问:http://www.cypress.com/search/all/QDR-iv

围观 2
877
订阅 RSS - 计数器