打印

AD采样问题

[复制链接]
643|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   确实有些奇怪  

使用特权

评论回复
5
huangchui|  楼主 | 2016-10-23 16:53 | 只看该作者
操作没问题,按照例程,用定时器3定时采样产生中断,每次数据存入数组,到1024停止采样显示,发现有的数据很大

使用特权

评论回复
6
liliang9554| | 2016-10-23 16:56 | 只看该作者
有多大

使用特权

评论回复
7
huangchui|  楼主 | 2016-10-23 16:59 | 只看该作者
32768?40000多的都有

使用特权

评论回复
8
huangchui|  楼主 | 2016-10-23 17:02 | 只看该作者
如果用printf("%u",a[i]);那些大数字的位置就是负值,不知什么原因

使用特权

评论回复
9
午夜粪车| | 2016-10-23 17:04 | 只看该作者
那你的定时器中断的时候  还要确定一下AD是否转换结束   中断中应该开启转换  转换结束后触发AD中断

使用特权

评论回复
10
zhaoxqi| | 2016-10-23 17:07 | 只看该作者
在AD中断中将数存入  这样应该就没啥问题了

使用特权

评论回复
11
huangchui|  楼主 | 2016-10-23 17:10 | 只看该作者
,如果用printf("%d",a[i]);那些大数字的位置就是负值,不知何解?

使用特权

评论回复
12
zhanghqi| | 2016-10-23 17:12 | 只看该作者
最大也不会超过4095的啊,数据类型的用错了吧

使用特权

评论回复
13
zhenykun| | 2016-10-23 17:14 | 只看该作者
或者把你采集到额数据变成了补码的,30000的补码不就是25535,还是不对啊:L

使用特权

评论回复
14
huangchui|  楼主 | 2016-10-23 17:16 | 只看该作者
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

918

主题

12323

帖子

4

粉丝