免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ady2002
打印 上一主题 下一主题

自己修改的ADC0809驱动,Godbach和版主请看看 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-11-19 10:00 |显示全部楼层
驱动得实现思路很有问题.bz老大已经指出来了.
我说说其它得不好吧.时钟中断是一个快速中断,这以为着不能被嵌套,
而你在中断处理函数重做过多地事情,那样会降低系统的性能.
你的代码重有个明显的错误,中断处理函数重不能调用cop_to_user之类的函数,
因为它会引起睡眠

论坛徽章:
0
2 [报告]
发表于 2008-11-19 10:57 |显示全部楼层

回复 #35 ady2002 的帖子

你的却没用,我看错了.
data = (*(volatile unsigned long *) adc_read_addr);
这句话真的难懂.
adc_read_addr一开始居然是int.我晕哈.地址不都应该是unsigned long吗

建议你注意到其它中断上去吧.那么多不选偏选择时钟中断.时钟中断很特殊哈

论坛徽章:
0
3 [报告]
发表于 2008-11-19 13:42 |显示全部楼层

回复 #26 ady2002 的帖子

仔细看了下你的需求.我觉得可以这样做,不对的bz纠正哈
1.在你的中断处理上半部分中只需要处理中断位喝把数据copy进数据缓冲区.
2.你的其它统计功能都在中断下半部分完成(可以用tasklet).并发送给用户态程序.

还有我想你想用时钟中断来读取数据是不是担心传入的数据量太大引起丢失?
如果不是这个原因,我实在想不到非用时钟中断来代替AD中断的理由

论坛徽章:
0
4 [报告]
发表于 2008-11-19 14:24 |显示全部楼层

回复 #41 dreamice 的帖子

我觉得如果真的数据量不大的话,就更没必要使用时钟中断了.那样引起的频繁的中断开销真的是得不偿失.

论坛徽章:
0
5 [报告]
发表于 2008-11-24 10:09 |显示全部楼层
回去看了下ldd3.使用共享中断的时候不能用disable_irq这样的函数.
而且request_irq的最后一个参数不能为NULL.
lz再去好好翻一下怎么使用共享中断的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP