免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ady2002

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

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-11-19 14:10 |显示全部楼层

回复 #40 qps104 的帖子

你这个方法也可行。

关于你后面说到的,主要是AD数据两本身不大,所以应该不存在丢失的问题。用时钟中断也有另一个好处(如果系统本身时钟比较富裕),就是可以不使能AD中断,让时钟中断定时的来读AD值,这样实现也是相对简单的。

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

回复 #41 dreamice 的帖子

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

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2008-11-19 14:30 |显示全部楼层
我做数据采集时候的设计时按块采集的,一旦设置启动之后,停止之前,就一直在采集数据,你随时都可以读取数据。

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-11-19 14:31 |显示全部楼层
原帖由 qps104 于 2008-11-19 14:24 发表
我觉得如果真的数据量不大的话,就更没必要使用时钟中断了.那样引起的频繁的中断开销真的是得不偿失.


用时钟中断就可以避免启用adc中断,其实是差不多的,只是耦合性增强了,不利于扩展。
另外,我觉得用定时器是比较合理的,借用本身的系统时钟来实现,不需要花费什么额外的中断开销,而且稳定性和可扩展性,可移植性都是比较强的。

论坛徽章:
0
发表于 2008-11-19 15:32 |显示全部楼层
原帖由 qps104 于 2008-11-19 13:42 发表
仔细看了下你的需求.我觉得可以这样做,不对的bz纠正哈
1.在你的中断处理上半部分中只需要处理中断位喝把数据copy进数据缓冲区.
2.你的其它统计功能都在中断下半部分完成(可以用tasklet).并发送给用户态程序.
...

呵呵 之所以要用时钟中断代替ad中断就是由于 我是要采集一个速度,也就是说我这个驱动的数据转换需要一直在运行
而不是说 我要数据的时候才让他去转换一下数据,我要的是一直让他转换数据并存储,要的时候只是读取就可以了
具体你可以看看我的需求

论坛徽章:
0
发表于 2008-11-19 15:37 |显示全部楼层
原帖由 Godbach 于 2008-11-19 14:30 发表
我做数据采集时候的设计时按块采集的,一旦设置启动之后,停止之前,就一直在采集数据,你随时都可以读取数据。

我也想这样啊
而且我不同的是 我其实不是要ad采集的数据
而是要采集的数据跳变的次数
比如 我采集的数据是0 1 0 0 1 1 0 1我想要的只是0-》1累计加1,1-》0 累计再加1,。。。。最后sum=5
主要是要这个sum值

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-11-19 15:47 |显示全部楼层
原帖由 ady2002 于 2008-11-19 15:37 发表

我也想这样啊
而且我不同的是 我其实不是要ad采集的数据
而是要采集的数据跳变的次数
比如 我采集的数据是0 1 0 0 1 1 0 1我想要的只是0-》1累计加1,1-》0 累计再加1,。。。。最后sum=5
主要是要这个sum值


我真的不想太强调了,说得这么清楚了:

用一个内核定时器,不停的去采AD值,存到一个缓冲区中(缓冲区的大小依据你需求设置,如果你想一次读100个值,把缓冲区设置成100都可以)。
定时器不停的采集,更新缓冲区的数值,上层怎么读都可以,定时器的间隔根据应用来就可以了。
不知道还有什么比这更简单的方法!

论坛徽章:
0
发表于 2008-11-19 15:58 |显示全部楼层
原帖由 dreamice 于 2008-11-19 12:36 发表


不是时钟中断很难完成,其实很简单,你看看我给你提那几个方法。关键的问题是,你对这个整体认识还不够。应该好好理一下思路,有几点要注意:
1、驱动是在内核空间,你要把数据提供给用户空间,这个就要求 ...


谢谢你们热心的知道和讨论

1、驱动是在内核空间,你要把数据提供给用户空间,这个就要求是用户空间主动来读,还是你以某种方式通知用户空间来读?
       不是通过使用read函数来读吗?关于空间数据转换是可以使用  copy_to_user(buf,&key,1);或者put_user(key,buf);这两种函数吧
2、你想一下,你在ADC模块里注册时钟中断,——一个很基本的问题:你要搞清楚如何写一个中断处理程序!
      这个关于如何写一个中断处理程序 我就是按照例子来写得,首页代码有贴出来 不知道是不是那写得不对啊???

论坛徽章:
0
发表于 2008-11-19 16:00 |显示全部楼层
原帖由 dreamice 于 2008-11-19 15:47 发表


我真的不想太强调了,说得这么清楚了:

用一个内核定时器,不停的去采AD值,存到一个缓冲区中(缓冲区的大小依据你需求设置,如果你想一次读100个值,把缓冲区设置成100都可以)。
定时器不停的采集,更 ...

呵呵 dreamice  别生气啊
我这个是写给god看的 怕他不理解我的目的哦~~~~

呵呵 还是多谢了啊

论坛徽章:
0
发表于 2008-11-19 16:12 |显示全部楼层
这个帖子讨论的真长。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP