打印

外部中断问题求教!

[复制链接]
1269|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
情场探花|  楼主 | 2012-4-5 16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用 PCI 板卡定时产生外部中断信号给PC机,PC机每收到一次中断就把计数器累计1并显示出来。但是我遇到的问题是:
1、计数器有误差。
2、经常死(死进程或者死机)
下面把我的工作以及思路都说一下。请热心人指点。

系统配置是:普通PC机,Celerone 2.6G, 1G RAM。Win XP. VC6
板卡是 PCI 板卡,本地主频是8M。

实验一
把板卡的8M分频,得到1Hz的外部中断,送给PC。PC每响应一次中断,屏幕的计数器累计1.  同时用PC自身的时钟做为对比。观察了几千秒,计数器、PC时钟都一致。表明板卡的8M晶振是很准的,而且PC也没有遗漏中断或者多响应(即一次中断响应两次)的情况。同时还观察到程序占用的内存越来越大,开始是4508K,但最终稳定在4512K。
实验二
把板卡的8M分频,得到1KHz的外部中断,送给PC。PC每响应 1000 次中断,屏幕的计数器累计1. 结果只观察几百秒,就发现计数器比PC时钟快了约1%(注意是“快”,从来没有慢过)。而且PC还会死掉。有时是进程死掉,用任务管理器也杀不掉。有时是整个机器死掉,还有两次蓝屏。同时还观察到程序占用的内存从4496K增长到4500K(后面就不知道了,因为死掉了)

罗列所有可能的原因如下 :
1、板卡的晶振不准
2、PC多响应中断,即一次中断响应了两次,结果计数器就多累加了。
3、中断服务程序里申请了空间,但是没有释放。
前两个原因,根据实验一,基本被我否决了。
第三个原因,我看了代码,没有申请空间。
请问还有什么可能呢?

顺便再说一下PC端的程序结构,请看看有没有什么问题:
计数器是全局变量,中断服务程序把计数器加1就退出。另外一个线程反复把计数器显示到屏幕上,线程每次显示完了都 Sleep(1)。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

1203

帖子

6

粉丝