智能车制作
标题:
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