智能车制作

标题: 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