注册会员
- 积分
- 78
- 威望
- 48
- 贡献
- 26
- 兑换币
- 27
- 注册时间
- 2013-1-12
- 在线时间
- 2 小时
- 毕业学校
- 北京工业大学
|
你好...我是今年参加电磁组比赛的选手 我们现在遇到了一个问题
就是智能车在传感器接收信号的过程中,在某个范围能反应正常 当传感器接收的值小于一定量时 芯片接受到的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(从左到右)
}
}
|
|