打印

数据冲突了

[复制链接]
1112|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
victor3l|  楼主 | 2012-6-2 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 victor3l 于 2012-6-2 09:58 编辑

请教大家一个问题:
      我用6个AD接了6个传感器,AD是SPI接口与单片机相连。我把6个AD一起初始化了。读数据时,当数据准备好引脚变低了才读。我单独读每个通道没问题。但是我要算总重的时候,需要把6个通道加起来,就在这个时候数据就出错了。我的数据线是公用的。
     读数据时,当检测到数据准备好引脚变低后,把该芯片的片选拉低,然后送读数据命令,读出数据后把片选拉高。
     每个芯片都是这样做的。但是我在求和的时候需要把它们都调用一遍这是就出错了,这是为什么?
我的代码大致这样写的

void main()
{
      init();
while(1)
         {
         a1 = GetDatChannel1();
a2 = GetDatChannel2();
a3 = GetDatChannel3();
a4 = GetDatChannel4();
a5 = GetDatChannel5();
a6 = GetDatChannel6();
sum = a1+a2+a3+a4+a5+a6;
}
}

相关帖子

沙发
gx_huang| | 2012-6-2 09:41 | 只看该作者
求和和读取每个通道没有什么关系呀?看不明白。
需要看看原理图,RDY/CS是怎么接的?每个器件单独配不同的GPIO吗?

使用特权

评论回复
板凳
victor3l|  楼主 | 2012-6-2 09:54 | 只看该作者
2# gx_huang
每个AD的数据线公用,DRDY,和CS 分别连到单片机的不同引脚上。我当初觉得只要我能读到每个通道的数据那么求和就是把它们加起来就好了。可是加起来的就不和我单独读的每个通道的和。这里的加法运算没有什么问题

使用特权

评论回复
地板
gx_huang| | 2012-6-2 21:04 | 只看该作者
你的描述不清楚,你把a1到 a6都打印出来,看看就知道是否加法搞错了。
注意,加法可能溢出。

使用特权

评论回复
5
李冬发| | 2012-6-2 22:11 | 只看该作者
估计得加个延时让信号稳定。

使用特权

评论回复
6
xuyaqi| | 2012-6-2 22:44 | 只看该作者
没说明白是读的通道数据有错,还是求的和有错。

使用特权

评论回复
7
amwrdfe| | 2012-6-3 14:10 | 只看该作者
是a1~a6不稳定?加延时
还是sum溢出?

使用特权

评论回复
8
delin17| | 2012-6-4 13:29 | 只看该作者
说不定就SUM溢出

使用特权

评论回复
9
反质子| | 2012-6-4 14:00 | 只看该作者
很多单片机的AD通道切换后都要延时保持,才能读到正确的值

如果读到的是一些无效值,天晓得你加起来是个神马玩意

使用特权

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

本版积分规则

77

主题

308

帖子

5

粉丝