linux 定时器计数值,i8253定时器分析 一

本文深入探讨了Intel的8253可编程间隔定时器,介绍了其内部结构、功能、工作方式以及在Linux系统中的应用。通过解析i8253的各个组成部分,如数据总线缓冲器、读/写逻辑和计数器,阐述了定时器的计数原理和计数器的六种工作模式,强调了在不同模式下输出信号的变化和计数初值的计算。文章还讨论了i8253的引脚、控制字、读写操作,为理解Linux如何使用i8253提供基础。
摘要由CSDN通过智能技术生成

本文首先i8253定时器的内部结构和编程,然后以Linux对i8253定时器的操作为例,分析Linux对i8253定时器的使用,O(∩_∩)O~

第一部分 定时器概述

在控制系统中常常要求有一些实时时钟以实现定时或延时控制,如定时中断、定时检测、定时扫描等,也往往要求有计数器能对外部事件计数。要实现定时或延时控制,有三种主要方法:软件定时、不可编程的硬件定时、可编程的硬件定时器。

软件定时,即让计算机执行一个程序段,这个程序段本身没有具体的执行目的,但由于执行每条指令都需要时间,则执行一个程序段就需要一个固定的时间。通过正确地挑选指令和安排循环次数很容易实现软件定时,但软件定时占用了CPU的时间,降低了CPU的利用率。

不可编程的硬件定时可以采用小规模集成电路器件,外接定时部件——电阻和电容构成。这样的定时电路简单,而且利用改变电阻和电容,可以使定时在一定的范围内改变。但这种定时电路在硬件连接好以后,定时值及定时范围不能由程序(软件)来控制和改变,由此就生产了可编程的定时器电路。

可编程定时器电路的定时值及其范围,可以很容易地由软件来确定和改变。所以,功能较强,使用灵活。本问就介绍这种定时器电路。

第二部分 i8253定时器

Intel系列的计数器/定时器电路为可编程序间隔定时器PIT(Programmable Interval

Timer),型号为8253,改进型为8254。Intel

8253具有3个独立的16位计数器通道,使用单一5V电源,它是24个引脚的双列直插式器件。

2.1 i8253-PIT的主要功能

Intel 8253-PIT具有以下主要功能:

一个芯片上有三个独立的16位计数器通道;

每个计数器都可以按照二进制或二—十进制计数;

每个计数器的计数速率可高达2MHz;

每个通道有6种工作方式,可由程序设置和改变;

所有的输入输出都与TTL兼容。

2.2

i8253-PIT的内部结构

i8253的内部结构如图1所示

a4c26d1e5885305701be709a3d33442f.png

图1 i8253定时器结构

数据总线缓冲器:数据总线缓冲器是i8253/i8254与CPU数据总线连接的8位双向三态缓冲器。CPU用输入/输出指令对i8253/i8254进行读/写操作的所有信息都是通过这8条总线传送的。这些信息包括:CPU在初始化编程时写入i8253/i8254的控制字、CPU向i8253/i8254某一计数器写入的计数初值、CPU从i8253/i8254某一计数读取的计数值。

读/写逻辑:读/写逻辑是i8253/i8254内部操作的控制部分。当片选信号有效, 即CS(上划线)

=0时,读/写逻辑才能工作。该控制逻辑根据读/写命令及送来的地址信息,决定三个计数器和控制字寄存器中哪一个工作,并控制内部总线上数据传送的方向。

控制字寄存器:在i8253/i8254初始化编程时,由CPU向控制字寄存器写入控制字,以决定每个计数器的工作方式。此寄存器只能写入而不能读出。

计数器0,计数器1,计数器2:计数器0、1、2是3 个16位减1计数器,它们互相独立,

内部结构和功能相同。每个计数器有3根信号线,它们是时钟输入CLK、门控输入GATE和输出OUT。计数器从CLK端接收时钟脉冲或事件计数脉冲,在脉冲下降沿按照二进制或BCD格式的十进制从预置的初值开始进行减1计数。当计数值减到零时,从OUT端送出一个信号。计数器在开始计数和计数过程中,受到门控信号GATE的控制。

备注:计数器0,计数器1,计数器2,有时也称为通道0,通道1,通道2。

定时/计数器初值的计算

定时时间 = 时钟脉冲周期×预置的计数初值

定时频率 = 时钟脉冲频率÷预置的计数初值

i8253CLK输入脉冲的最大频率位2MHz,计数器的初值必须在开始计数之前,由CPU用输出指令预置。在计数过程中,CPU随时可用输入指令读取任一计数器的当前计数值,这一操作对计数没有影响。

2.3 i8253-PIT的引线

Intel i8253-PIT的引线如图2:

a4c26d1e5885305701be709a3d33442f.png

图2 i8253-PIT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值