打印

单片机控制6个AD

[复制链接]
1221|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝