智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1172|回复: 1
打印 上一主题 下一主题

[咨询] 求助!关于信号采集

[复制链接]

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
78
威望
48
贡献
26
兑换币
27
注册时间
2013-1-12
在线时间
2 小时
毕业学校
北京工业大学
跳转到指定楼层
1#
发表于 2013-4-24 22:33:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
你好...我是今年参加电磁组比赛的选手 我们现在遇到了一个问题
就是智能车在传感器接收信号的过程中,在某个范围能反应正常 当传感器接收的值小于一定量时 芯片接受到的AD量却锁定在一个比较大的值上不在变化..这是为什么呢?
传感器调试程序见下:(会不会是AD初始化的问题?)
#include <hidef.h>               /* common defines and macros */
#include "derivative.h"          /* derivative-specific definitions */
#include <mc9s12xs128.h>
#define uchar unsigned char
#define uint unsigned int
#define word short int
////////////////////          AD 模 块 初 始 化                 ///////////////
void ATD0_init(void)
{
ATD0DIEN=0x00;
ATD0CTL1=0x00;
ATD0CTL2=0x40;
ATD0CTL3=0xb0;
ATD0CTL4=0x09;
ATD0CTL5=0x00;
}
/////////////////        AD     取      值              /////////////////////
uint Get_AD_data(uchar A)
{
uint  a[6],i,j,temp;
uint  sum=0;

ATD0CTL5=0x00+A;               //通道A转换6次,结果存入ATD结果寄存器0-5
while(!ATD0STAT0_SCF);
a[0]=ATD0DR0L;
a[1]=ATD0DR1L;
a[2]=ATD0DR2L;
a[3]=ATD0DR3L;
a[4]=ATD0DR4L;
a[5]=ATD0DR5L;

for(i=0;i<5;i++)               //冒泡排序
{
  for(j=0;j<5-i;j++)
  {
   if(a[j]>a[j+1])
   {
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;
   }
  }
}

sum=(a[1]+a[2]+a[3]+a[4])>>2;  //去掉最大、最小值,其余取平均
return sum;
}
main(){
ATD0_init();
for(;;){
  DDRB=0XFF;
PORTB=Get_AD_data(1);           //传感器标号为2到6(从左到右)
}
}

1

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
78
威望
48
贡献
26
兑换币
27
注册时间
2013-1-12
在线时间
2 小时
毕业学校
北京工业大学
2#
 楼主| 发表于 2013-4-25 21:25:27 | 只看该作者
再次顶一下...求助!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 04:11 , Processed in 0.106527 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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