智能车制作

标题: AD精度改成10bit的 就不行了 求大神指教 [打印本页]

作者: 菜鸟5号    时间: 2012-7-10 23:49
标题: AD精度改成10bit的 就不行了 求大神指教
AD精度怎么改的   求大神指教 多谢了
XS128里原来AD用的是12bit的  现在用G128 但是G里面 AD只有8和10bit   我想先在XS128里先将其改成10bit的 然后在移植到G128里面 但是我将ATD0CTL1里面的改成是10bit的了 还是不行 不知道是不是要改其他的 下面贴出AD初始化 以及AD读取  请大神不吝赐教 不胜万分感激!
void ad_init()
{
  ATD0CTL1=0b01000000; // 12bit
  //ATD0CTL1=0b00100000; // 10bit
  //ATD0CTL1=0b00000000; // 8bit
  ATD0CTL2=0x40;
  ATD0CTL3 = 0b11000000;    //8 路循环检测。
  ATD0CTL4=0b01000001;
  ATD0CTL5_MULT = 1; //多路采集开关,长度:S8C,S4C,S2C,S1C,
  ATD0CTL5 = 0b00110000;
  ATD0DIEN=0x00;        //Disable 数字输入。
}

void Read_AD(void)
{     
    int ad_temp[8][3]={0};
    int i;

    for(i=0; i<=2; i++)  //采集3次
    {
        while(!ATD0STAT2_CCF0);  //等待转换结束   
        ad_temp[0] = ATD0DR0;  //读取转换的结果
   

作者: 菜鸟5号    时间: 2012-7-10 23:50
while(!ATD0STAT2_CCF1);  //等待转换结束   
        ad_temp[1][i] = ATD0DR1;  //读取转换的结果
        
        while(!ATD0STAT2_CCF2);  //等待转换结束   
        ad_temp[2][i] = ATD0DR2;  //读取转换的结果
        
        while(!ATD0STAT2_CCF3);  //等待转换结束   
        ad_temp[3][i] = ATD0DR3;  //读取转换的结果
        
        /**/
            
        while(!ATD0STAT2_CCF4);  //等待转换结束   
        ad_temp[4][i] = ATD0DR4;  //读取转换的结果
            
        while(!ATD0STAT2_CCF5);  //等待转换结束   
        ad_temp[5][i] = ATD0DR5;  //读取转换的结果
            
        while(!ATD0STAT2_CCF6);  //等待转换结束   
        ad_temp[6][i] = ATD0DR6;  //读取转换的结果
        
        while(!ATD0STAT2_CCF7);  //等待转换结束   
        ad_temp[7][i] = ATD0DR7;  //读取转换的结果
           
    }
   
    //计算平均值
    //适当的滤波
    for(i=0; i<=7; i++)  
    {
        sensor_ad[i] = (ad_temp[i][0] +
                        ad_temp[i][1] +
                        ad_temp[i][2]) /3 ;  
    }

    sensor_ad[5] = sensor_ad[6] =0;
   

}

作者: qinlu123    时间: 2012-7-11 10:32
你应该对照技术手册写初始化啊
作者: NIT郑凯    时间: 2012-7-11 11:15
AD时钟最快是8M 不要超了
作者: 飞思卡尔迷    时间: 2012-10-11 11:17
qinlu123 发表于 2012-7-11 10:32
你应该对照技术手册写初始化啊

有技术手册?





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