智能车制作

标题: XS128 AD多通道检测 [打印本页]

作者: xiyang588    时间: 2013-6-29 16:34
标题: XS128 AD多通道检测
各位大神,帮忙看看有什么问题,一直找不出来问题。谢谢大家
void adinit(void)                          //初始化
{

         ATD0CTL0=0x03;   //完成第3通道转换后回到第0通道       
               ATD0CTL1=0x4f;                 // 启动12位转换精度
        ATD0CTL2=0X40;             //  读取数据自动清零,转换序列完成后不产生中断   
        ATD0CTL3=0Xa4;       //   数据右对齐 转换序列4 启用fifo
        ATD0CTL4=0X67;       //   ad频率=3M=48M/(2*8)  采样时间 10个a/d周期
        ATD0CTL5=0X30;       //多通道 持续转换  起始通道为0通道   

       ATD0DIEN=0x00;   //禁止数字输?/禁止数字输入
}

void adread(void)   
{      
  int ad_temp[16];     //AD临时采样存储

  uchar i,j;  


        ad_temp[0] = ATD0DR0;  //读取转换的结果   


        ad_temp[1] = ATD0DR1;  //读取转换的结果   


        ad_temp[2] = ATD0DR2;  //读取转换的结果   

        ad_temp[3] = ATD0DR3;  //读取转换的结果   


        ad_temp[4] = ATD0DR4;  //读取转换的结果   

        ad_temp[5] = ATD0DR5;  //读取转换的结果   
        ad_temp[6] = ATD0DR6;  //读取转换的结果   
        ad_temp[7] = ATD0DR7;  //读取转换的结果   
        ad_temp[8] = ATD0DR8;  //读取转换的结果   
        ad_temp[9] = ATD0DR9;  //读取转换的结果   
        ad_temp[10] = ATD0DR10;  //读取转换的结果
        ad_temp[11] = ATD0DR11;      

        ad_temp[12] = ATD0DR12;  //读取转换的结果   
        ad_temp[13] = ATD0DR13;  //读取转换的结果  
        ad_temp[14] = ATD0DR14;  //读取转换的结果  
        ad_temp[15] = ATD0DR15;  //读取转换的结果  


想要的结果是0通道的四个值在ad_temp[0],[4],[8],[12],以此类推。谢谢大家指点

作者: xiyang588    时间: 2013-6-29 16:38
现在的情况是你AD输入口接地和接5V检测的值都在3000左右,我是12位精度的
看了很多资料还是解决不了
作者: xinxiang    时间: 2013-6-29 17:45
不对吧,你这是右对齐,可是你的表达式取的值是左对齐,怎么会拿到值呢。你应该这样写ATD0DR0L
作者: 做车做车车车    时间: 2013-6-29 23:22
不启用fifo,读每个寄存器前读取相应标志位,转换完成后再读结果寄存器,或读序列转换标志然后把转换序列结果一次读出。
作者: xiyang588    时间: 2013-6-29 23:53
找到原因了,是芯片没有接地,大家不要犯我这种初级错误,谢谢大家
作者: xiyang588    时间: 2013-6-29 23:54
xinxiang 发表于 2013-6-29 17:45
不对吧,你这是右对齐,可是你的表达式取的值是左对齐,怎么会拿到值呢。你应该这样写ATD0DR0L

我是12位的,右对齐,直接把16位的值取出来就可以了
作者: xinxiang    时间: 2013-7-8 09:09
xiyang588 发表于 2013-6-29 23:54
我是12位的,右对齐,直接把16位的值取出来就可以了

明白了。
作者: winterfall    时间: 2013-8-18 22:04
做车做车车车 发表于 2013-6-29 23:22
不启用fifo,读每个寄存器前读取相应标志位,转换完成后再读结果寄存器,或读序列转换标志然后把转换序列结 ...

四楼李菊福




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2