智能车制作
标题:
求指教陀螺仪AD转换。。。
[打印本页]
作者:
夜尽天明211
时间:
2012-4-24 10:27
标题:
求指教陀螺仪AD转换。。。
本帖最后由 夜尽天明211 于 2012-4-24 10:34 编辑
写了个AD转换的程序,怎么读不出数据啊,求指教。。。
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
int GyroATDData=0;
int GyroSoft0,GyroSoft1,GyroHardware,GyroATDOffset;
int ATDTime;
/*---------------------------------- 系统时钟初始化 ----------------------------------------*/
void CLK_init(void)
{
CLKSEL=0x00; //初始时还没有PLL
PLLCTL=0xe1; //时钟监控使能,PLL允许,VCOCLK调频2%,禁止快速苏醒,禁止自给时钟,伪停止下禁止实时中断和看门狗
SYNR=2;
REFDV=1; //PLLCLK=2*OSCCLK*(SYNR+1/((REFDV+1))=48M;
asm NOP;asm NOP;asm NOP; //等待锁相环稳定
while(!(CRGFLG&0x08)); //锁相环稳定标志位
CLKSEL=0x80; //时钟选择寄存器,Bus Clock=PLLCLK/2,停止模式下振荡器、系统时钟、锁相环、内核时钟、看门狗继续工作
}
void AD_init(void)
{
ATD0CTL0=0x02; //AD转换序列长度为2
ATD0CTL1=0x40;
ATD0CTL2=0x04;
ATD0CTL3=0x90;
ATD0CTL4=0x5f;
ATD0CTL5=0x30;
ATD0DIEN=0x00;
}
void PIT_init()
{
PITCFLMT_PITE=0; //关闭PIT
PITMTLD0=24-1; //先对总线时钟24分频 得到 1us 基准时钟
PITLD0=20000-1; //对时基10000分频,得到10ms定时
PITCE_PCE0=1; //使能PIT通道0
PITMUX_PMUX0=0; //选择微定时器做为时基
PITINTE_PINTE0=1; //使能PIT0中断
PITCFLMT_PITE=1; //开启PIT
}
void Get_ADData()
{
GyroATDData=((ATD0DR0H*256)+ATD0DR0L);
GyroHardware=((ATD0DR1H*256)+ATD0DR1L);
ATD0CTL2_AFFC=1;
}
void main(void) {
/* put your own code here */
CLK_init();
AD_init();
PIT_init();
EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
#pragma CODE_SEG NON_BANKED
void interrupt 66 PIT0()
{
GyroSoft0+=GyroATDData-GyroATDOffset;
GyroSoft1+=(GyroATDData-GyroATDOffset)*ATDTime;
}
作者:
月思繁星
时间:
2012-5-14 16:14
作者:
chenjun
时间:
2012-12-13 19:01
不会呀
作者:
fmadot
时间:
2012-12-13 21:21
DEBUG里看看 卡哪里了
作者:
qms527080813
时间:
2014-3-4 21:00
:):)
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2