关于8253 芯片计数器初值的问题
来源:互联网 发布:win10清理软件 编辑:程序博客网 时间:2024/04/28 00:55
汇编接口上提到,传说Linux 0.11内核中把8253计时器设置成每隔10ms 发送一个中断,这个数字是Linux 内核的脉搏,然而在送端口40h 的时候为什么把11930 设置成初值呢?
原因是这样的:
8253 芯片通道0 的GATE引脚接高电平,机器上电的时候芯片默认被设置成工作方式3(方波),默认值0(最大,0h -1h= FFFFh = 65536)。PC上,8253 芯片接收主板上一个石英震荡器产生的频率,石英震荡器每秒震荡1193180次,所以8253 芯片的主频就是1.193180Mhz。我们又知道计数器从65536递减到0就会产生一个方波,所以OUT0 引脚会每秒产生1.193180Mhz/65536 = 18.2 次的方波信号。OUT0 被连接至可编程中断控制器8259芯片的0级中断请求端。方波的上升沿会触发中断请求,使得系统每间隔1000ms/18.2hz = 54.9ms 就发出一个中断请求。
根据公式
计数器初值 = 输入频率 / 输出频率
有:
N = f(CLK) / f(OUT)
f(OUT) = 1.193180Mhz / N
Linux 0.11中要每隔10ms 得到一个中断,那么频率 f(OUT) = 1000ms / 10ms = 100hz
所以100 = 1.193180Mhz / N
N = 1193180 / 100 ≈ 11930。
把11930 分2次写入通道0的端口40h 就能大约每10ms 得到一个第8号中断。
大约就是这个样子。
- 关于8253 芯片计数器初值的问题
- 关于数组的初值
- C语言中几个关于初值的问题
- 定时器计数器初值求解
- 定时/计数器的初始化与计数初值的计算
- 51单片机中定时器/计数器初值的计算
- 关于磁盘性能计数器的问题
- 关于LDO芯片的选型问题
- 关于字符串赋初值的错误
- 关于CSDN的计数器
- 关于《网页中使用天堂免费计数器》的问题
- 【转】关于“手动重新生成注册表性能计数器”的问题
- PHP计数器的问题
- 关于芯片的制造
- 关于芯片的封装
- 关于WT588D语音芯片不能循环播放的问题
- quartus中的寄存器类型关于赋初值的测试
- java static 标示,以及static赋初值的问题。
- SQL字符串处理函数大全
- 调查显示16%的人年终奖不足2000元 17%高于3万
- Math.Inc 分型图形库数学函数头文件 数字函数+向量和矩阵函数+仿射变换
- MyEclipse+WebLogic+MySQL数据源的配置图解
- 【攻略】如何将DNS从新网转到DNSPod?
- 关于8253 芯片计数器初值的问题
- XMLHTTPRequest的属性和方法简介
- C#学习之接口
- 远程桌面端口
- Delphi泛型
- 新建类在ClassView中不能显示问题解决办法
- linux中shell命令
- 使用Eclipse工具 签名【android开发】
- socket实现大型文件传输 .