智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1914|回复: 2
打印 上一主题 下一主题

[讨论] 神奇xs128的ATD模块总有你不了解的

[复制链接]

4

主题

36

帖子

0

精华

高级会员

Rank: 4

积分
848
威望
378
贡献
210
兑换币
194
注册时间
2012-10-25
在线时间
130 小时
跳转到指定楼层
1#
发表于 2013-8-12 09:15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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模块就没什么大问题了!大家帮帮忙啊!





21

主题

896

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4068
威望
2252
贡献
1296
兑换币
1483
注册时间
2012-7-30
在线时间
260 小时
毕业学校
克莱德大学
2#
发表于 2013-8-12 10:40:56 | 只看该作者
你要注意了,ATD转换模块只有一个,虽然有多个通道,但是每个通道是公用一个转换模块的。
各个通道轮流把信号传入ATD。
牢记这一点,就应该很容易找出问题所在。
回复 支持 反对

使用道具 举报

52

主题

725

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5889
威望
2514
贡献
1289
兑换币
1650
注册时间
2013-2-20
在线时间
1043 小时
毕业学校
韶关学院
3#
发表于 2013-12-25 22:44:27 | 只看该作者
本帖最后由 戥家三少 于 2013-12-25 22:56 编辑
rubick 发表于 2013-8-12 10:40
你要注意了,ATD转换模块只有一个,虽然有多个通道,但是每个通道是公用一个转换模块的。
各个通道轮流把信 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-7 22:43 , Processed in 0.047707 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表