智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1531|回复: 7
打印 上一主题 下一主题

AD模块让我弃疗了

[复制链接]

16

主题

71

帖子

0

精华

高级会员

Rank: 4

积分
860
威望
415
贡献
219
兑换币
252
注册时间
2014-2-25
在线时间
113 小时
毕业学校
毛中
跳转到指定楼层
1#
发表于 2014-6-3 12:03:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD模块让我弃疗了。我是电磁组的,我的电感直接接到最小系统版(128)的AN0~AN6.这是AD 采集及初始化源程序:
void ADC_INIT(void){
  ATD0CTL1=0x00;
  ATD0CTL2=0x40;    //0100,0000,自动清除使能控制位,忽略外部触发
                    //转换结束允许中断,中断禁止
  ATD0CTL3=0xA4;    //0100,0100,转换序列长度为4; FIFO模式,冻结模式下继续转换
  ATD0CTL4=0x05;  //00001000,8位精度,PRS=5,ATDCLOCK=BusClock(24mb)/(5+1)*2,约为2MHz,采样周期位4倍AD周期
  ATD0DIEN=0x00;    //输入使能禁止

  ATD0DIEN=0x00;    //输入使能禁止
}

void AD_CaiJi(void){

int sum;
int *q;
int a[6][8];
int i,j;
   ATD0CTL5=0X20;    //,连续AD转换,右对齐,单通道,无符号,起始通道为AN0
  while(!ATD0STAT0_SCF);//等待左前第一个电感电压转换完成
  q=a[0];
  *(q)  =ATD0DR0L;
  *(q+1)=ATD0DR1L;
  *(q+2)=ATD0DR2L;
  *(q+3)=ATD0DR3L;
  ATD0CTL5=0X21;    //重置ATD0CTL5,将启动一次新的AD转换
  while(!ATD0STAT0_SCF); //右前侧第一个电感电压转换完成  
  q=a[1];  
  *(q)  =ATD0DR0L;
  *(q+1)=ATD0DR1L;
  *(q+2)=ATD0DR2L;
  *(q+3)=ATD0DR3L;

  ATD0CTL5=0X22;
  while(!ATD0STAT0_SCF);  //左前侧第二个电感电压转换完成
  q=a[2];
  *(q)  =ATD0DR0L;
  *(q+1)=ATD0DR1L;
  *(q+2)=ATD0DR2L;
  *(q+3)=ATD0DR3L;
  ATD0CTL5=0X23;
  while(!ATD0STAT0_SCF);//  右前侧第1个电感电压转换完成
  q=a[3];
  *(q)  =ATD0DR0L;
  *(q+1)=ATD0DR1L;
  *(q+2)=ATD0DR2L;
  *(q+3)=ATD0DR3L;
  ATD0CTL5=0X24;
  while(!ATD0STAT0_SCF);//等待左前第一个电感电压转换完成
  q=a[4];
  *(q)  =ATD0DR0L;
  *(q+1)=ATD0DR1L;
  *(q+2)=ATD0DR2L;
  *(q+3)=ATD0DR3L;

  ATD0CTL5=0X25;
  while(!ATD0STAT0_SCF);//  右前侧第1个电感电压转换完成
  q=a[5];
  *(q)  =ATD0DR0L;
  *(q+1)=ATD0DR1L;
  *(q+2)=ATD0DR2L;
  *(q+3)=ATD0DR3L;
  /*********************************************************
          再次启动一轮AD转换来减小误差  

  ***********************************************************/
  ATD0CTL5=0X25;
  while(!ATD0STAT0_SCF);//  右前侧第1个电感电压转换完成
  q=a[5];
  *(q+4)=ATD0DR0L;
  *(q+5)=ATD0DR1L;
  *(q+6)=ATD0DR2L;
  *(q+7)=ATD0DR3L;
  ATD0CTL5=0X24;
  while(!ATD0STAT0_SCF);//等待左前第一个电感电压转换完成
  q=a[4];
  *(q+4)=ATD0DR0L;
  *(q+5)=ATD0DR1L;
  *(q+6)=ATD0DR2L;
  *(q+7)=ATD0DR3L;
  ATD0CTL5=0X23;
  while(!ATD0STAT0_SCF);//  右前侧第1个电感电压转换完成
  q=a[3];
  *(q+4)=ATD0DR0L;
  *(q+5)=ATD0DR1L;
  *(q+6)=ATD0DR2L;
  *(q+7)=ATD0DR3L;
ATD0CTL5=0X22;
  while(!ATD0STAT0_SCF);  //左前侧第二个电感电压转换完成
  q=a[2];
  *(q+4)=ATD0DR0L;
  *(q+5)=ATD0DR1L;
  *(q+6)=ATD0DR2L;
  *(q+7)=ATD0DR3L;

  ATD0CTL5=0X21;    //重置ATD0CTL5,将启动一次新的AD转换
  while(!ATD0STAT0_SCF); //右前侧第一个电感电压转换完成  
  q=a[1];  
  *(q+4)=ATD0DR0L;
  *(q+5)=ATD0DR1L;
  *(q+6)=ATD0DR2L;
  *(q+7)=ATD0DR3L;

  ATD0CTL5=0X20;    //,连续AD转换,右对齐,单通道,无符号,起始通道为AN0
  while(!ATD0STAT0_SCF);//等待左前第一个电感电压转换完成
  q=a[0];
  *(q+4)=ATD0DR0L;
  *(q+5)=ATD0DR1L;
  *(q+6)=ATD0DR2L;
  *(q+7)=ATD0DR3L;

  for(i=0;i<6;i=i+1)                       //累加后求均值,AD转换滤波
  {
  sum=0;
  q=a;     //赋予指针新地址
  for(j=0;j<8;j++)
    sum+=*(q+j);

  ad_val=sum/8;
  }   
}


      OutData[0] = ad_val[0];
      OutData[1] = ad_val[1];
      OutData[2] = ad_val[4];
      OutData[3] = ad_val[5];

      OutPut_Data();
  用蓝牙将数据传回来,发现数据全为0;用万用表测AD0~AN6都有示数。搞了好多天,我认为是结果寄存器里面没有存转换的值。搞不好了,问了好多学长,也说不出个所有然,唉

反正弃疗了。
再见了。

回复

使用道具 举报

137

主题

4169

帖子

1

精华

杰出人士

我认为最省轮子的跑法最快。曾经的西科4队

Rank: 12Rank: 12Rank: 12

积分
14006
QQ
威望
6233
贡献
1229
兑换币
4171
注册时间
2013-1-10
在线时间
3272 小时
2#
发表于 2014-6-3 12:18:29 | 只看该作者
鄙视一下楼主。
回复 支持 反对

使用道具 举报

16

主题

71

帖子

0

精华

高级会员

Rank: 4

积分
860
威望
415
贡献
219
兑换币
252
注册时间
2014-2-25
在线时间
113 小时
毕业学校
毛中
3#
 楼主| 发表于 2014-6-3 12:21:57 | 只看该作者
Jyoun 发表于 2014-6-3 12:18
鄙视一下楼主。

额。
回复 支持 反对

使用道具 举报

21

主题

368

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1277
威望
722
贡献
183
兑换币
440
注册时间
2013-11-2
在线时间
186 小时
毕业学校
4#
发表于 2014-6-3 12:35:40 | 只看该作者
这个。。。。。也太。。。。。。。
回复 支持 反对

使用道具 举报

10

主题

1956

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
10144

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

威望
4669
贡献
2699
兑换币
2876
注册时间
2013-10-2
在线时间
1388 小时
5#
发表于 2014-6-3 12:42:54 | 只看该作者
字体太大了。
回复 支持 反对

使用道具 举报

54

主题

837

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
7499
威望
5069
贡献
1876
兑换币
1028
注册时间
2014-1-5
在线时间
277 小时
6#
发表于 2014-6-3 13:12:44 | 只看该作者
回复 支持 反对

使用道具 举报

2

主题

114

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3331
威望
1480
贡献
839
兑换币
972
注册时间
2013-9-11
在线时间
506 小时
毕业学校
7#
发表于 2014-6-3 13:18:02 | 只看该作者
这是第六届某大学贴出来的程序
回复 支持 反对

使用道具 举报

10

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1405
威望
732
贡献
311
兑换币
457
注册时间
2014-2-21
在线时间
181 小时
8#
发表于 2014-6-3 18:49:25 | 只看该作者
为什么不试一下多通道连续转换?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 19:28 , Processed in 0.064654 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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