智能车制作
标题:
xs128AD转换求助
[打印本页]
作者:
caixianneng
时间:
2014-3-5 12:43
标题:
xs128AD转换求助
我不知道为什么AD值总是不对测AD0 AD1 输入是1.8V和1.6V但AD输出的值为1600和3800完全对不上.程序如下帮忙看看问题
void INIT_AD(void)
{
ATD0DIEN=0x00;
ATD0CTL1=0x40; //12精度
ATD0CTL2=0x40;
ATD0CTL3=0x98; //右对齐,转换长度2
ATD0CTL4=0x19; //
ATD0CTL5=0x30; //
}
void AD_capture(unsigned int *AD_val)
{
while(!ATD0STAT2_CCF0);
*AD_val=ATD0DR0;
AD_val++;
while(!ATD0STAT2_CCF1);
*AD_val=ATD0DR1;
}
作者:
ccs5433
时间:
2014-3-5 18:14
有没有被中断打断?
作者:
caixianneng
时间:
2014-3-5 19:07
ccs5433 发表于 2014-3-5 18:14
有没有被中断打断?
没有吧 定时中断的去读ad的值得 。应该不会
作者:
qloveb
时间:
2014-7-13 21:20
你好,我想请问一下你的AD是怎么处理的,我现在AD0能正常输出,但是AD1,AD2,AD3就不能正常转换了
程序是:
void AD_Init(void)
{
ATD0CTL1=0x40;//4F //7:1‐外部触发,65:10‐12位精度,4:不放电,3210:ch
ATD0CTL2=0x40; //禁止外部触发, 中断禁止,自动清除标志位
ATD0CTL3=0xa0; //a0 //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0x02; //04 //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]
ATD0CTL5=0x30; //6:0特殊通道禁止,5:1 连续转换 ,4:1多通道轮流采样
ATD0DIEN=0x00; //禁止数字输入
}
//********************读取AD转换的结果****************************
int AD_Measure12(int Channel )
{
int ad=0;
switch(Channel)
{
case 0:
while(!ATD0STAT2_CCF0);
ad= ATD0DR0;
break;
case 1:
while(!ATD0STAT2_CCF1);
ad= ATD0DR1;
break;
case 2:
while(!ATD0STAT2_CCF2);
ad= ATD0DR2;
break;
case 3:
while(!ATD0STAT2_CCF3);
ad= ATD0DR3;
break;
}
return ad;
}
作者:
caixianneng
时间:
2014-7-14 01:14
也许是转换时间太短
ATD0CTL4=0x02; //04 //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1] 这句话
转换时间会影响转换值
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2