智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5862|回复: 9
打印 上一主题 下一主题

[华东] XS128多通道AD采集

[复制链接]

37

主题

358

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3787
威望
1857
贡献
918
兑换币
704
注册时间
2012-3-12
在线时间
506 小时
跳转到指定楼层
1#
发表于 2012-11-16 19:18:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是我的一段AD多通道采集代码,调用AD_get_more()的时候就会在while里面了,这是为什么?转换没完成吗?
不太理解啊


/*************************************************************/
/*                      初始化AD模块(多通道转换)        */
/*************************************************************/
void Init_AD_more(void)
{
  ATD0DIEN = 0X00;          // 禁止数字输入  
  ATD0CTL1_SRES = 2;  //选用12位模数转换
  ATD0CTL2 = 0X40;   //启动A/D转换,快速清零,禁止中断
  delay_atd();                //延时
  ATD0CTL3=0Xa0;     //10100000 转换序列长度为4   右对齐
  ATD0CTL4 = 0x07;   //AD模块时钟频率为2MHz  fA=fBUS/(PRS+1)/2   
  ATD0CTL5=0X30;   //多通道,连续转换,起始通道AD0   AD1,AD2,AD3,

}

void AD_get_more(void)
{   

   while(!ATD0STAT2_CCF0);   
   {
    PORTA_PA0=1;  ad_value[0]=ATD0DR0;            
   }
   while(!ATD0STAT2_CCF1);
    {
        PORTA_PA1=1;  ad_value[1]=ATD0DR1;
    }
   while(!ATD0STAT2_CCF2);
     {
        PORTA_PA2=1;  
        ad_value[2]=ATD0DR2;
     }
   while(!ATD0STAT2_CCF3);
      {
        PORTA_PA3=1;  ad_value[3]=ATD0DR3;  
      }
}

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

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

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
2#
发表于 2012-11-16 19:46:37 | 只看该作者
多了一个分号
回复 支持 反对

使用道具 举报

37

主题

358

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3787
威望
1857
贡献
918
兑换币
704
注册时间
2012-3-12
在线时间
506 小时
3#
 楼主| 发表于 2012-11-16 20:00:13 | 只看该作者
melon_1 发表于 2012-11-16 19:46
多了一个分号

好吧~~真心的请教呐~~是要有分号的。转换完成置位相应的标志位,在进行读取AD值的。我的理解是,程序一直等待AD转换完成,或者AD就根本没有转换。但不知道怎么解决,感觉初始化的配置应该没问题啊,我是在中断中调用这个函数的。
回复 支持 反对

使用道具 举报

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

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

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
4#
发表于 2012-11-16 20:03:40 | 只看该作者
感觉中断不是那么好玩的,干嘛非要用函数调用呢,
回复 支持 反对

使用道具 举报

53

主题

641

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5159

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

威望
2314
贡献
1085
兑换币
996
注册时间
2012-8-8
在线时间
880 小时
毕业学校
dfzx
5#
发表于 2012-11-16 20:05:04 | 只看该作者
中断最好不要调用函数:
回复 支持 反对

使用道具 举报

37

主题

358

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3787
威望
1857
贡献
918
兑换币
704
注册时间
2012-3-12
在线时间
506 小时
6#
 楼主| 发表于 2012-11-16 20:08:38 | 只看该作者
melon_1 发表于 2012-11-16 20:03
感觉中断不是那么好玩的,干嘛非要用函数调用呢,

要每个一定时间采集AD进行处理,要不CPU就干一件事情了。我不在中断中调用也是一样的情况
回复 支持 反对

使用道具 举报

37

主题

358

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3787
威望
1857
贡献
918
兑换币
704
注册时间
2012-3-12
在线时间
506 小时
7#
 楼主| 发表于 2012-11-16 20:09:50 | 只看该作者
melon_1 发表于 2012-11-16 20:05
中断最好不要调用函数:

我觉得中断调用函数只要中断时间大于函数执行时间就不会有太大问题的呢~~
回复 支持 反对

使用道具 举报

37

主题

358

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3787
威望
1857
贡献
918
兑换币
704
注册时间
2012-3-12
在线时间
506 小时
8#
 楼主| 发表于 2012-11-16 22:50:27 | 只看该作者
已经解决了~~配置没问题。把读寄存器的前面一句去掉
回复 支持 反对

使用道具 举报

30

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1147
威望
618
贡献
267
兑换币
368
注册时间
2012-12-29
在线时间
131 小时
9#
发表于 2013-3-27 20:55:50 | 只看该作者
bobo_12300 发表于 2012-11-16 22:50
已经解决了~~配置没问题。把读寄存器的前面一句去掉

是去掉哪一句哈,谢谢
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
威望
148
贡献
86
兑换币
34
注册时间
2012-7-10
在线时间
7 小时
毕业学校
里仁
10#
发表于 2013-4-6 08:46:13 | 只看该作者
PORTA给设置成输出了,PORTA_PA0=0;应该也可以吧!。!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 14:56 , Processed in 0.046947 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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