AD采样问题

[复制链接]
826|13
 楼主| huangchui 发表于 2016-10-23 16:44 | 显示全部楼层 |阅读模式
定义数组unsingned int xdata a[1024];存放数据
程序中将每次采样值存入数组中,采样值用右端对齐,
a=adc0&0xfff;
1024个数据采完后用printf("%u",a);观察采样值,有的正常(1V输入对应1600多),有几个值很大,30000多,不知怎么回事啊?
a[i]最大应该不会超过0xfff(4095)啊,怎么会有30000多的值呢,百思不解!
jiajs 发表于 2016-10-23 16:46 | 显示全部楼层
楼主仔细检查下,看看是不是操作上有什么问题?
jiaxw 发表于 2016-10-23 16:49 | 显示全部楼层
从unsigned int来说最大65535  是30000没啥问题
spark周 发表于 2016-10-23 16:51 | 显示全部楼层
AD采集中的30000   确实有些奇怪  
 楼主| huangchui 发表于 2016-10-23 16:53 | 显示全部楼层
操作没问题,按照例程,用定时器3定时采样产生中断,每次数据存入数组,到1024停止采样显示,发现有的数据很大
liliang9554 发表于 2016-10-23 16:56 | 显示全部楼层
有多大
 楼主| huangchui 发表于 2016-10-23 16:59 | 显示全部楼层
32768?40000多的都有
 楼主| huangchui 发表于 2016-10-23 17:02 | 显示全部楼层
如果用printf("%u",a[i]);那些大数字的位置就是负值,不知什么原因
午夜粪车 发表于 2016-10-23 17:04 | 显示全部楼层
那你的定时器中断的时候  还要确定一下AD是否转换结束   中断中应该开启转换  转换结束后触发AD中断
zhaoxqi 发表于 2016-10-23 17:07 | 显示全部楼层
在AD中断中将数存入  这样应该就没啥问题了
 楼主| huangchui 发表于 2016-10-23 17:10 | 显示全部楼层
,如果用printf("%d",a[i]);那些大数字的位置就是负值,不知何解?
zhanghqi 发表于 2016-10-23 17:12 | 显示全部楼层
最大也不会超过4095的啊,数据类型的用错了吧
zhenykun 发表于 2016-10-23 17:14 | 显示全部楼层
或者把你采集到额数据变成了补码的,30000的补码不就是25535,还是不对啊:L
 楼主| huangchui 发表于 2016-10-23 17:16 | 显示全部楼层
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

918

主题

12323

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部