AD采样问题请教

[复制链接]
1663|7
 楼主| 拿起书本 发表于 2013-10-13 14:53 | 显示全部楼层 |阅读模式
定义数组unsingned int xdata a[1024];存放数据
程序中将每次采样值存入数组中,采样值用右端对齐,
a=adc0&0xfff;
1024个数据采完后用printf("%u",a);观察采样值,有的正常(1V输入对应1600多),有几个值很大,30000多,不知怎么回事啊?
a[i]最大应该不会超过0xfff(4095)啊,怎么会有30000多的值呢,百思不解!
tianli1980 发表于 2013-10-13 19:42 | 显示全部楼层
楼主仔细检查下,看看是不是操作上有什么问题?
zhangmangui 发表于 2013-10-13 21:05 | 显示全部楼层
从unsigned int来说最大65535  是30000没啥问题
AD采集中的30000   确实有些奇怪  
是不是别的地方做了修改
 楼主| 拿起书本 发表于 2013-10-14 00:03 | 显示全部楼层
操作没问题,按照例程,用定时器3定时采样产生中断,每次数据存入数组,到1024停止采样显示,发现有的数据很大(32768?40000多的都有),如果用printf("%u",a[i]);那些大数字的位置就是负值,不知什么原因
zhangmangui 发表于 2013-10-14 09:26 | 显示全部楼层
拿起书本 发表于 2013-10-14 00:03
操作没问题,按照例程,用定时器3定时采样产生中断,每次数据存入数组,到1024停止采样显示,发现有的数据 ...

那你的定时器中断的时候  还要确定一下AD是否转换结束   中断中应该开启转换  转换结束后触发AD中断
在AD中断中将数存入  这样应该就没啥问题了
 楼主| 拿起书本 发表于 2013-10-14 14:45 | 显示全部楼层
,如果用printf("%d",a[i]);那些大数字的位置就是负值,不知何解?
shenmu2012 发表于 2013-10-14 22:55 | 显示全部楼层
最大也不会超过4095的啊,数据类型的用错了吧
shenmu2012 发表于 2013-10-14 22:56 | 显示全部楼层
或者把你采集到额数据变成了补码的,30000的补码不就是25535,还是不对啊:L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

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