智能车制作

标题: 神奇xs128的ATD模块总有你不了解的 [打印本页]

作者: djy    时间: 2013-8-12 09:15
标题: 神奇xs128的ATD模块总有你不了解的
本帖最后由 djy 于 2013-8-12 09:18 编辑

我是做电磁的给大家看一下我的AD模块初始化void ATD_INIT(void)

ATD0DIEN=0X00;
  ATD0CTL1=0X40;//12位精度   不放电
  ATD0CTL2=0X40;//affc=1;
  ATD0CTL3=0XB0;//no fifo
  ATD0CTL4=0X44;               
  ATD0CTL5=0X30;//多通道连续扫描


下面这段是我的采集函数
void GetATD(void)                           //AD获取函数
{      int j=0;                             //模式1直接收集4个电感的值不经处理


          for(j=0;j<10;j++)
         {
           while(ATD0STAT0_SCF!=1);  //转换完成
            dg1[0][j]=ATD0DR0;
            dg1[1][j]=ATD0DR1;
            dg1[2][j]=ATD0DR2;
            dg1[3][j]=ATD0DR3;
            dg1[4][j]=ATD0DR4;
            dianya=ATD0DR5;
           //while(ATD0STAT0_SCF!=0);   //防止连续读取同一组数值   为什么加上这局程序会死?????
         }
}

1)为什么我加 //while(ATD0STAT0_SCF!=0); 这句程序运行的时候会死啊????郁闷;
2)还有求解如果不加 while(ATD0STAT0_SCF!=0);
   这样采集10次电感的值,会不会出现某几次采集的值是同样的(即ATD0DRx的值没有刷新就直接进行下一次的读取)?3)等这个问题解决了我还有几个关于AD模块的经典问题!相信这些问题弄懂了AD模块就没什么大问题了!大家帮帮忙啊!






作者: rubick    时间: 2013-8-12 10:40
你要注意了,ATD转换模块只有一个,虽然有多个通道,但是每个通道是公用一个转换模块的。
各个通道轮流把信号传入ATD。
牢记这一点,就应该很容易找出问题所在。
作者: 戥家三少    时间: 2013-12-25 22:44
本帖最后由 戥家三少 于 2013-12-25 22:56 编辑
rubick 发表于 2013-8-12 10:40
你要注意了,ATD转换模块只有一个,虽然有多个通道,但是每个通道是公用一个转换模块的。
各个通道轮流把信 ...

大神,请教一下,是每个通道对应各自的ATD转换结果寄存器还是能设置??这里真心不懂




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