智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1369|回复: 4
打印 上一主题 下一主题

xs128AD转换求助

[复制链接]

9

主题

144

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2054
威望
1038
贡献
586
兑换币
698
注册时间
2013-5-22
在线时间
215 小时
跳转到指定楼层
1#
发表于 2014-3-5 12:43:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我不知道为什么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;
}

回复

使用道具 举报

13

主题

184

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5064

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2354
贡献
438
兑换币
1554
注册时间
2013-10-17
在线时间
1136 小时
2#
发表于 2014-3-5 18:14:06 | 只看该作者
有没有被中断打断?
回复 支持 反对

使用道具 举报

9

主题

144

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2054
威望
1038
贡献
586
兑换币
698
注册时间
2013-5-22
在线时间
215 小时
3#
 楼主| 发表于 2014-3-5 19:07:35 | 只看该作者
ccs5433 发表于 2014-3-5 18:14
有没有被中断打断?

没有吧  定时中断的去读ad的值得 。应该不会
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
435
威望
203
贡献
120
兑换币
123
注册时间
2013-4-5
在线时间
56 小时
毕业学校
湖南师大
4#
发表于 2014-7-13 21:20:19 | 只看该作者
你好,我想请问一下你的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;
  }
回复 支持 反对

使用道具 举报

9

主题

144

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2054
威望
1038
贡献
586
兑换币
698
注册时间
2013-5-22
在线时间
215 小时
5#
 楼主| 发表于 2014-7-14 01:14:41 | 只看该作者
也许是转换时间太短
  ATD0CTL4=0x02; //04  //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1] 这句话
转换时间会影响转换值
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-7 02:30 , Processed in 0.201338 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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