注册会员
- 积分
- 117
- 威望
- 75
- 贡献
- 26
- 兑换币
- 30
- 注册时间
- 2015-6-8
- 在线时间
- 8 小时
- 毕业学校
- 烟台职业学院
|
我的小车不检测电磁 而且 舵机时而动时而不动,是不是AD的原因? 急死了,谢谢你们!
#include "include.h"
/*****************AD初始化***********************/
void ATD_Init(void)
{
ATD0CTL1=0x00;//7:1-外部触发,65:00-8位精度,4:放电,3210:ch /an0 触发 12位精度
ATD0CTL2=0XC0;//禁止AD 快速清零
ATD0CTL3=0XC0;//右对齐 每次转换8个序列, No FIFO, Freeze模式下继续转
ATD0CTL4=0X03; //采集到模拟量 十位二进制 采样2AD 时钟周期 (13m)
ATD0CTL5= 0X30;//BIT6:0特殊通道禁止 BIT5:1连续转换 BIT4:1多通道轮流采样
ATD0DIEN=0x00;
}
int Read_ATD(char ch)
{
int ATD_Value,ad_L=0,ad_H;
while(!ATD0STAT0_SCF);
switch(ch)
{
case 0:
ad_L= ATD0DR0L;
ad_H= ATD0DR0H;
break;
case 1:
ad_L= ATD0DR1L;
ad_H= ATD0DR1H;
break;
case 2:
ad_L= ATD0DR2L;
ad_H= ATD0DR2H;
break;
case 3:
ad_L= ATD0DR3L;
ad_H= ATD0DR3H;
break;
case 4:
ad_L= ATD0DR4L;
ad_H= ATD0DR4H;
break;
case 5:
ad_L= ATD0DR5L;
ad_H= ATD0DR5H;
break;
case 6:
ad_L= ATD0DR6L;
ad_H= ATD0DR6H;
break;
case 7:
ad_L= ATD0DR7L;
ad_H= ATD0DR7H;
break;
}
ATD_Value = ((ad_H&0x0F)<<8)|(ad_L);
return ATD_Value;
}
int ATD_Average_10(char ch)
{
char i=0;
int value[8]={0};
long AD_value=0;
for(i=0;i<8;i++)
{
value[i]=Read_ATD(ch);
AD_value+=value[i];
}
AD_value/=8;
return ((int)AD_value);
}
|
|