中级会员
 
- 积分
- 307

- 威望
- 154
- 贡献
- 83
- 兑换币
- 102
- 注册时间
- 2015-1-22
- 在线时间
- 35 小时
- 毕业学校
- 安徽师范大学
|
gzf 发表于 2015-4-11 14:58 ![]()
你先说说你是怎么解决的???
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include "pll.h"
#include "AD.h"
float AD_data=0;
/*************************************************************/
/* 初始化AD模块 */
/*************************************************************/
void INIT_AD(void)
{
ATD0CTL2 = 0xc0; //启动A/D模块,快速清零,禁止中断 一样
//delay(1);
// ATD0CTL1=0x60; //选用12位模数转换
ATD0CTL3 = 0x88; //每次只转换一个通道 右对齐转换1个序列长度
ATD0CTL4 = 0x0F; //AD模块时钟频率为2MHz
ATD0CTL5 = 0x20; //连续转换
ATD0CTL1 = 0x4F;
}
/*void ADC0_Init(void)
{
ATD0CTL4 = 0x04; // Set sample time and prescaler
ATD0CTL3 = 0x88; // Right justified data,Conversion Sequence Length = 1
ATD0CTL0 = 0x0F; // Set wrap around ///an15翻转通道
ATD0CTL1 = 0x4F; // 12-bit data ///12位分辨率 外部触发源是an15 采样前不放电
ATD0CTL2 = 0x40; // Fast Flag Clear ///快速清除标志位
} */
/*************************************************************/
/* 起动AD转换 */
/*************************************************************/
float AD_capture(unsigned char chanel)
{
switch(chanel)
{
case 0:
ATD0CTL1=0x0f;
ATD0CTL5 = 0x00; //转换AD00
ATD0CTL3 =0X88;
ATD0CTL2 = 0XC0;
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0;
break;
/*case 1:
ATD0CTL1=0x0f; ////选用8位模数转换
ATD0CTL5 = 0x01; //转换AD01
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0;
break; */
case 2:
ATD0CTL1=0x60;
ATD0CTL5 = 0x02; //转换AD02
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0;
break;
case 3:
ATD0CTL1=0x60;
ATD0CTL5 = 0x03; //转换AD03
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0;
break;
case 4:
ATD0CTL1=0x60;
ATD0CTL5 = 0x04; //转换AD04
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0;
break;
case 5:
ATD0CTL5 = 0x05; //转换AD05
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0;
break;
case 6:
ATD0CTL5 = 0x06; //转换AD06
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 7:
ATD0CTL5 = 0x07; //转换AD07
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 8:
ATD0CTL5 = 0x08; //转换AD08
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 9:
ATD0CTL5 = 0x09; //转换AD09
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 10:
ATD0CTL5 = 0x0a; //转换AD10
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 11:
ATD0CTL5 = 0x0b; //转换AD11
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 12:
ATD0CTL5 = 0x0c; //转换AD12
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 13:
ATD0CTL5 = 0x0d; //转换AD13
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 14:
ATD0CTL5 = 0x0e; //转换AD14
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
case 15:
ATD0CTL5 = 0x0f; //转换AD15
while(!ATD0STAT0_SCF);
AD_data = ATD0DR0L;
break;
}
return(AD_data);
}
OutData[0]=GravityAngle; //加速度计GravityAngle;// OutData[1]=car_angle; //融合后的波OutData[2]=gyroscopeAngleSpeed; //陀螺仪OutData[3] =g_fCarSpeed; //车速
OutPut_Data(); 就是用AD采集后,有串口显示,我放在中断程序中的
|
|