搜索
bottom↓
回复: 15

在linux中如何做定时ADC采集

[复制链接]

出0入0汤圆

发表于 2012-2-5 11:32:07 | 显示全部楼层 |阅读模式
我的s3c2440的处理器上面移植了linux2.6.12,现在要在linux系统中做一个2ms的ADC采集,使用了linux提供的定时器函数setitimer,发现setitimer定时2ms根本不准确,一般有很大的延时,可能是中断信号丢失引起的。请问各位在linux中做定时器采集用的是什么方法啊?如果使用ARM自带的timer1定时器,如何在应用程序中去接受定时采集的数据啊。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2012-2-5 11:33:09 | 显示全部楼层
在ARM9的裸机程序中,直接使用timer4定时1ms都非常的准确,现在上了linux操作系统,对里面的定时处理部分不知道如何处理了。请各位高人告诉方法哈。

出0入0汤圆

 楼主| 发表于 2012-2-5 16:12:52 | 显示全部楼层
各位linux高手来指导一下吧,我弄了好多天了,一筹莫展啊。

出0入0汤圆

发表于 2012-2-6 13:16:40 | 显示全部楼层
默认的linux kernel任务调度机制,1ms的中断,实时性做不到这么高。

出0入0汤圆

 楼主| 发表于 2012-2-6 22:43:17 | 显示全部楼层
意思是用软件中断,只能最小1ms吧,用2440的timer0硬件定时器可以将精度提高吗?

出0入0汤圆

发表于 2012-2-7 10:00:42 | 显示全部楼层
可以尝试打实时补丁xenomai 之类的提高实时性。

出0入0汤圆

 楼主| 发表于 2012-2-7 10:23:07 | 显示全部楼层
请问一下各位,如果我单独循环采集1000次ADC,花费时间是1.67s,意思是单次ADC只有1.67ms。为什么我使用定时器之后,每次ADC采集的时间要4.5s才能完成。原来以为设定一个2ms定时器就能搞定,发现现在要设定5ms定时器才能完成一次ADC采集。为什么ADC采集的时间会变慢呢?时间花费在那里去了啊,这里面也没有执行其他程序调度啊。

出0入0汤圆

发表于 2012-2-7 16:00:14 | 显示全部楼层
时间被中断处理程序浪费了。

出0入0汤圆

发表于 2012-2-7 17:04:52 | 显示全部楼层
可以在底层驱动里做采集,放到一个缓冲区里,应用程序只需要定时从驱动中将数据取出即可。

出0入0汤圆

发表于 2012-2-7 17:20:38 | 显示全部楼层
直接用 硬件定时器, 产生2ms中断, 在中断程序里面采集.

需要比较精确的定时时.....

出0入0汤圆

发表于 2012-2-7 17:32:38 | 显示全部楼层
回复【8楼】alasika 绿
-----------------------------------------------------------------------

如果是用片内ADC,估计在驱动里做也不行。我试过PWM的,速度非常的慢!

出0入0汤圆

 楼主| 发表于 2012-2-7 19:40:52 | 显示全部楼层
回复【8楼】alasika 绿
-----------------------------------------------------------------------

我用过2440的timer0定时器,定时1ms产生一次中断,但是我在定时器的中断里面计数1000次,发现每次中断的时间差不多是3ms。意思是timer0定时器也没法做到1ms的定时精度。请问用内核定时器做2ms的定时器能否做,内核定时器的精度可以做到1ms啊。

出0入0汤圆

发表于 2012-2-12 20:34:46 | 显示全部楼层
因为Linux本身的限制,在做系统设计的时候很少会在linux系统里面做这样的实时处理。
建议将实时子系统和处理子系统分开,将实时任务放到实时子系统里,你的问题就可以解决了。

出0入0汤圆

发表于 2012-2-12 21:38:14 | 显示全部楼层
linux很难做到ms级别的实时,简单一点可以外挂一个cpld作缓冲buffer。
采集一定数量的数据后,触发arm中断。

出0入0汤圆

发表于 2012-2-12 21:58:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-16 18:47:55 | 显示全部楼层
RTLinux 能不能做到啊?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 18:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表