greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2709回复:28

关于中断处理

楼主#
更多 发布于:2002-04-23 10:52
我在写一硬件中断驱动程序,中断频率为8kHz。
有个问题想请教各位:什么叫异步事件,在我的中断处理中要不要安排一个异步事件函数,怎么办????

最新喜欢:

dongjundongju...
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
yangyang
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2009-04-18
  • 粉丝0
  • 关注0
  • 积分368分
  • 威望67点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-23 21:32
没分---能有答案吗?
----------------------------------------------------
傻瓜才告诉你!!!!!!!
欢迎大家访问中国电子开发网 http://www.cedn.cn vxworks资料库最全的网站
bh_zhouqian
驱动牛犊
驱动牛犊
  • 注册日期2002-04-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-23 21:54
你好,我前一段时间也在搞这个,具体打算使用并口的中断处理,自己尝试着在DOS下用C语言编写了中断处理程序,结果没调通。只有用系统定时器中断(IRQ0)可以实现中断处理程序,不知道是为什么。现在既然你也做这个,我们可以一起讨论一下,共同进步!
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-23 22:22
yangyang兄这样不太好吧,不能只盯着分吗
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-24 08:41
没分---能有答案吗?
----------------------------------------------------
傻瓜才告诉你!!!!!!!


因为一直没有回复所以我没有来看它第二眼,多谢你的提醒。
我很明白自己的失误,也很清楚在这里大家讲的是兴趣,但是市场经济下更重要的还是讲money,这里也就讲“驱动开发元“了。
分给定了,不过也希望得到有价值的意见。

 :) :) :)
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-24 08:51
你好,我前一段时间也在搞这个,具体打算使用并口的中断处理,自己尝试着在DOS下用C语言编写了中断处理程序,结果没调通。只有用系统定时器中断(IRQ0)可以实现中断处理程序,不知道是为什么。现在既然你也做这个,我们可以一起讨论一下,共同进步!


bh_zhouqian兄(不知你的性别,暂且这么称呼吧):
     我用的是3号中断,据我所知中断处理是可以实现的(因为我前面的人曾经实现了,但是由于某些原因他带走了原程序,所以我就惨了),现在我就是不太清楚8KHz的频率下要不要写什么回调函数或异步事件处理函数,给点意见吧。
 

 :) :) :)

[编辑 -  4/24/02 作者: greenhand]
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-04-24 10:35
用户被禁言,该主题自动屏蔽!
greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-04-24 19:30
用来做数据采集卡的驱动,想在驱动程序里进行以下简单的判别和存储,请指教。
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-24 22:05
这个我在行,你最好把问题说清楚一些,你做的是2000下的驱动吗?
需要用到event,
简单地说,就是在用户程序中创建事件,在内核态的中断服务例程或dpc例程中将事件置为信号态,当然,要在用户太程序中开一个线程去不停的等待这个事件。
大概就是这样,有什么不够的,想起来再说
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-04-25 08:44
我做的是win98下面的驱动,我的想法是在驱动程序里对数据进行判断后把需要保留的数据存到数组里,此时主程序只是用定时器操作paint()函数画图。在关中断以后应用程序读回数组的值保存。
这样可以不用event吗?
  “简单地说,就是在用户程序中创建事件,在内核态的中断服务例程或dpc例程中将事件置为信号态,当然,要在用户太程序中开一个线程去不停的等待这个事件。”
    不用多线程的行吗?

 :o :o :o  请指教。
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-04-25 09:32
我觉得这种情况用定时器来调用paint()不太合适,因为你并不知道中断什么时候发生,你的paint在某一个时刻怎么知道到底应该画数组的那个值呢?
对了,也许可以这样,你可以传两块缓冲区到vxd,一块只有一个值,一块是你的数组,(当然他们可以放到一个结构中),然后你在中断例程里根据采到的数对数祖赋值并对变量刷新,你可以在用户态定时读这个变量,然后paint,但是这又可能会丢失数据,主要看你的定时大小。
这只是个想法,你可以试试。多线程也许可以不用,你可以再开一个定时器来判断数组是否已经满了。
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2002-04-25 11:10
8khz的中断,不知道能响应过来吗在windows下。
greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-04-25 12:10
THANK YOU,我先试一试,有问题再请教。
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-04-25 12:17
我觉得这种情况用定时器来调用paint()不太合适,因为你并不知道中断什么时候发生,你的paint在某一个时刻怎么知道到底应该画数组的那个值呢?
对了,也许可以这样,你可以传两块缓冲区到vxd,一块只有一个值,一块是你的数组,(当然他们可以放到一个结构中),然后你在中断例程里根据采到的数对数祖赋值并对变量刷新,你可以在用户态定时读这个变量,然后paint,但是这又可能会丢失数据,主要看你的定时大小。
这只是个想法,你可以试试。多线程也许可以不用,你可以再开一个定时器来判断数组是否已经满了。
 


zydcat,照你上面讲的是否就是说可以不用event了呢,异步事件函数呢?这是我最大的困扰,能讲一下吗?谢谢
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-04-25 13:10
困扰什么,说明白一点
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
yangyang
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2009-04-18
  • 粉丝0
  • 关注0
  • 积分368分
  • 威望67点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-04-25 16:16
不好意思,我跟你们学的!!!!!
欢迎大家访问中国电子开发网 http://www.cedn.cn vxworks资料库最全的网站
greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-04-25 16:47
再说明白一点,就是我想知道到底要不要用event,到底要不要编写异步事件函数。 :)
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
greenhand
驱动中牛
驱动中牛
  • 注册日期2002-04-07
  • 最后登录2005-10-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-04-25 16:51
不好意思,我跟你们学的!!!!!


你学到什么了?
交学费了没!!!!!!!!
要向全世界宣告:“我是月光族的光荣一员,员、员、员……” [img]http://www.driverdevelop.com/forum/upload/greenhand/2003-01-08_007.jpg[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-04-26 11:32
用前面讲的方法,或许可以不用event
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
bh_zhouqian
驱动牛犊
驱动牛犊
  • 注册日期2002-04-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-04-26 12:33
我认为8KHz的频率中断是肯定可以处理的,关键是中断服务程序的设置,另外,你说在主程序里要通过定时器中断,那么就要用到多线程编程,具体可以看看相关方面的书。
如果方便的话,可以把你的程序发来看看吗,这样可能更清楚一些!
bh_zhouqian@sina.com
上一页
游客

返回顶部