单片机控制6个AD

[复制链接]
 楼主| victor3l 发表于 2012-5-25 15:55 | 显示全部楼层 |阅读模式
请教大家一个问题:
      我需要用单片机控制6个ad进行模数转换,我该如何分别对其操作? 我现在只能操作一个AD,能读到正确的AD转换后的数据。我实现的功能是对6路模拟信号进行处理,然后要对各路乘以系数,最后进行相加得到总和,必要的时候还要能看到各路信号的情况。
      设个时标,然后逐个扫描,我不知道这个时标要设置多久?我把ad输出数据的速率设置成3.75Hz(手册上这样写的,不过我觉得用赫兹做数据输出单位不好理解),转换的结果是24位的,我只取其中20位的。手册上也没讲转换一次的时间,我只是用转换完成后的中断信号来判断是不是转换完成了,然后在读数据。
    这里面的读数据函数,初始化函数,是不是要写重复写6次啊?请大家给点思路,谢谢
ayb_ice 发表于 2012-5-25 16:03 | 显示全部楼层
转换完了,切换到下一通道,循环。。。。
 楼主| victor3l 发表于 2012-6-2 09:48 | 显示全部楼层
2# ayb_ice
     我的函数大致是这样写的
    void main()
   {
      Init();//把6个都初始化了
      while(1)
      {
        a1 = getDatChannel1();//得到6个转化的数据
a2 = getDatChannel2();
a3 = getDatChannel3();
a4 = getDatChannel4();
a5 = getDatChannel5();
a6 = getDatChannel6();
sum = a1+a2+a3+a4+a5+a6;
       }

我发现这样写求总和数据就就错了。数据冲突了。
但是当我单独度每个通道又是对的,这是什么问题?
照您说的我是不是把AD的初始化,读数据,这些都写在大循环中?这将导致每次都初始化AD,岂不很麻烦,初始化只需要写一次啊。



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

本版积分规则

77

主题

308

帖子

5

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

77

主题

308

帖子

5

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