免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4326 | 回复: 15
打印 上一主题 下一主题

LINUX 中断嵌套问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-16 11:15 |只看该作者 |倒序浏览
现在有GPIO3个引脚需要触发中断,它们都用同一个IRQ号。现在的问题是:当A脚来了一个电平就会触发一个中断,此时B脚会连续接收到8个位,即B脚会触发8次中断,怎么样读取B脚这个接收到的字节呢?

论坛徽章:
0
2 [报告]
发表于 2007-01-16 11:17 |只看该作者
因为它们都用同一中断号,所以实现起来有点难度。有没有中断嵌套的说法?

论坛徽章:
0
3 [报告]
发表于 2007-01-16 12:26 |只看该作者
原帖由 chealim 于 2007-1-16 11:15 发表
现在有GPIO3个引脚需要触发中断,它们都用同一个IRQ号。现在的问题是:当A脚来了一个电平就会触发一个中断,此时B脚会连续接收到8个位,即B脚会触发8次中断,怎么样读取B脚这个接收到的字节呢?


怎么感觉这个是硬件要做的呢,通常接收好了一个字节才产生中断,

没有太明白你想问什么

论坛徽章:
0
4 [报告]
发表于 2007-01-16 12:27 |只看该作者
你的AB还不是相互独立的?

论坛徽章:
0
5 [报告]
发表于 2007-01-16 13:46 |只看该作者
即A、B、C同属一个组GPIO,因此它们有相同的IRQ号,无论哪个脚来了中断都会触发同一个函数。现在驱动是这样设计的:A为同步信号,B为时钟信号,C为数据线。当A有效时,驱动就开始读B,直到B有效就读C,B--C要连续读8次以达到一字节的长度。这个应该怎么实现?各位给点思路。我想用中断,不知是否可行?有没有中断嵌套的?即A到了后,以后就直接处理B脚的中断

论坛徽章:
0
6 [报告]
发表于 2007-01-16 14:03 |只看该作者
你的意思是不是说
中断处理函数会被频繁调用
而每次只会收到1个位?
那么在注册中断处理程序的时候就申请一个字节的内存空间
把每次收到的位保存一下不就好了么


  1. struct yy_t {
  2.     int get_how_many_bits;
  3.     char val;
  4. } yy;
  5. request_irq(xx,xx,xx,xx,&yy);
复制代码

论坛徽章:
0
7 [报告]
发表于 2007-01-16 14:13 |只看该作者
不是,我的意思是,驱动是这样设计的,即先来了一个同步信号(A),才能接收8次B的信号,而B也会产生中断的,每次B中断有效就会读C数据位即相当于
while(A)
{
        for(int i =0; i<8;i++)
        {
                if(B)
                        read(C);
        }
}
但是这里不能用死循环的,有没有其它办法?

论坛徽章:
0
8 [报告]
发表于 2007-01-16 14:31 |只看该作者
通信驱动?
是不是说当中断来的时候
搞不清究竟是A/B/C中究竟是谁来的信号?
是这个意思么

论坛徽章:
0
9 [报告]
发表于 2007-01-16 14:45 |只看该作者
来中断再去查询到底是哪跟线发出的就OK了

论坛徽章:
0
10 [报告]
发表于 2007-01-16 15:22 |只看该作者
我的意思是:
A是同步信号,只有A来的时候才可以读B信号,当读到B信号有效才可以读C数据位。在A里面,要循环检测8次B---C的跳变。
这是否可用中断来实现?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP