主题 : 我需要一名高手,救救我,关于外部中断的 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 29591
精华: 0
发帖: 33
金钱: 2790 两
威望: 558 点
综合积分: 66 分
注册时间: 2010-09-30
最后登录: 2012-12-18
楼主  发表于: 2011-09-01 23:45

 我需要一名高手,救救我,关于外部中断的

我有一个zigbee设备,类似于网卡,信号发送或接收完成后会向6410申请一个中断(上升沿触发)。
我把设备的中断申请引脚接到外部中断上,可以触发到中断。
但问题是,中断触发非常不稳定,有时候6410可以检测到上升沿触发并进入中断处理函数,有时候就检测不到,而导致中断申请引脚一直处于高电平。
有谁可以告诉我造成这个问题的原因吗??
是中断频率过快?是无线信号干扰?还是驱动问题?
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2011-09-02 09:42
你用的是什么板子? linux还是android下?

你的中断处理大概是怎么做的?
级别: 新手上路
UID: 29591
精华: 0
发帖: 33
金钱: 2790 两
威望: 558 点
综合积分: 66 分
注册时间: 2010-09-30
最后登录: 2012-12-18
2楼  发表于: 2011-09-02 19:17

 回 1楼(911gt3) 的帖子

linux 和android 同样的情况, android下的驱动只涉及内核跟linux下一模一样。

大概就是把数据写到zigbee设备芯片后,让zigbee发送出去,zigbee设备发送完了就通过中断申请告诉arm数据发送完毕,arm检测到那个上升沿触发后就执行相关的操作。

现在问题是zigbee设备芯片的中断申请有时候可能被arm检测到,有时候不行。不行的情况下,zigbee设备芯片的中断是申请了,电平上去了,但arm没有检测到那个上升沿。
级别: 新手上路
UID: 29591
精华: 0
发帖: 33
金钱: 2790 两
威望: 558 点
综合积分: 66 分
注册时间: 2010-09-30
最后登录: 2012-12-18
3楼  发表于: 2011-09-04 19:57

 回 2楼(vlone836) 的帖子

有谁 能发表一下一间
级别: 新手上路
UID: 29591
精华: 0
发帖: 33
金钱: 2790 两
威望: 558 点
综合积分: 66 分
注册时间: 2010-09-30
最后登录: 2012-12-18
4楼  发表于: 2011-09-04 20:00

 回 3楼(vlone836) 的帖子

问题还没有解决啊  救命啊
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
5楼  发表于: 2011-09-05 09:55
关键的是你的中断处理是怎么做的
级别: 新手上路
UID: 29591
精华: 0
发帖: 33
金钱: 2790 两
威望: 558 点
综合积分: 66 分
注册时间: 2010-09-30
最后登录: 2012-12-18
6楼  发表于: 2011-09-05 16:29

 回 5楼(911gt3) 的帖子

啥意思 ?
我在中断处理函数里面 ,先关闭了外部中断,接着把一些工作通过工作队列作为下半部,延后处理。
中断下半部的工作是先读取设备的中断寄存器(自动清零),接着做相关处理,最后允许外部中断。
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
7楼  发表于: 2011-09-06 09:41
如果外部设备触发一个上升沿中断是在你允许中断之前, 那么就有可能出现这种情况
你可以先在工作队列中, 允许外部中断前, 先读一下GPIO脚的状态看看是不是已经为高电平了来验证一下

你的整个中断处理需要能配合好你的外部设备的中断触发机制, 配合不好很容易就会出现问题
级别: 新手上路
UID: 29591
精华: 0
发帖: 33
金钱: 2790 两
威望: 558 点
综合积分: 66 分
注册时间: 2010-09-30
最后登录: 2012-12-18
8楼  发表于: 2011-09-06 21:42

 回 7楼(911gt3) 的帖子

我做了一些同步,应该不会出现你所说的问题。
现在我觉得,可能是硬件问题,会不会有这样的可能:外部中断引脚中断申请过于频繁,在某一次中断处理后由于某种原因(maybe 静电)使引脚电平不能马上降下来,很快又在下一次设备申请中断时外部中断引脚电平又上去了,导致没有造成一个上升沿。

怎么办啊,困扰我很久了,我对硬件不熟。暂时用高电平触发代替,丢人。