OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2821|回复: 10

请教下原子哥,关于ADC数据处理的问题

[复制链接]

15

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2016-9-27
在线时间
42 小时
发表于 2017-2-22 21:53:01 | 显示全部楼层 |阅读模式
1金钱
这是ADC数据取平均的一段代码
u16 Get_Adc_Average(u8 ch,u8 times)
{
        u32 temp_val=0;
        u8 t;
        for(t=0;t<times;t++)
        {
                temp_val+=Get_Adc(ch);
                delay_ms(5);
        }
        return temp_val/times;
}          
各位大神们:这段代码中的,delay_ms(5); 是有什么作用?  同时在UOCII上怎么实现这个延时?

最佳答案

查看完整内容[请看2#楼]

1,延时5ms,错开采集时间,连续间隔的采集,以便得到更好的平均效果(采样间隔较长) 2,5ms是我们UCOSII的最小节拍,刚好可以让OS引起一次任务调度,以便其他任务正常 运行。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165558
金钱
165558
注册时间
2010-12-1
在线时间
2118 小时
发表于 2017-2-22 21:53:02 | 显示全部楼层
1,延时5ms,错开采集时间,连续间隔的采集,以便得到更好的平均效果(采样间隔较长)
2,5ms是我们UCOSII的最小节拍,刚好可以让OS引起一次任务调度,以便其他任务正常 运行。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-2-22 22:03:18 | 显示全部楼层
我理解延时5ms是为了使ADC有住够的时间进行数据转换。
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-2-22 22:03:20 | 显示全部楼层
我理解延时5ms是为了使ADC有住够的时间进行数据转换。
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-2-22 22:03:24 | 显示全部楼层
我理解延时5ms是为了使ADC有住够的时间进行数据转换。
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-2-22 22:03:24 | 显示全部楼层
我理解延时5ms是为了使ADC有住够的时间进行数据转换。
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-2-22 22:03:25 | 显示全部楼层
我理解延时5ms是为了使ADC有住够的时间进行数据转换。
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-2-22 22:03:25 | 显示全部楼层
我理解延时5ms是为了使ADC有住够的时间进行数据转换。
回复

使用道具 举报

4

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
金钱
345
注册时间
2017-1-18
在线时间
80 小时
发表于 2017-2-22 22:05:15 | 显示全部楼层
妈的,机器反应太慢。按多了。又不能删。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-2-22 22:21:53 | 显示全部楼层
本帖最后由 操作系统 于 2017-2-22 22:23 编辑

延时有可能并不起作用,可以删除.Get_Adc(ch)这个函数里应该有 ADC还没有完成的话.应该死等它完成,再了出数据,返回.延时函数,如果没有的话,实现起来也好容易.这个不用具体说了吧,相信你懂的.
回复

使用道具 举报

15

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2016-9-27
在线时间
42 小时
 楼主| 发表于 2017-2-23 16:50:39 | 显示全部楼层
操作系统 发表于 2017-2-22 22:21
延时有可能并不起作用,可以删除.Get_Adc(ch)这个函数里应该有 ADC还没有完成的话.应该死等它完成,再了出数 ...

懂了,有些隐形的东西真的是实践才能知道,
回复

使用道具 举报

15

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2016-9-27
在线时间
42 小时
 楼主| 发表于 2017-2-23 16:51:00 | 显示全部楼层
xdzhang 发表于 2017-2-22 22:05
妈的,机器反应太慢。按多了。又不能删。

没事,懂了,谢谢
回复

使用道具 举报

15

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2016-9-27
在线时间
42 小时
 楼主| 发表于 2017-2-23 16:54:37 | 显示全部楼层
学习了,谢谢原子哥。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-23 23:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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