智能车制作
标题:
L3G4200D 数据一直在跳来跳去
[打印本页]
作者:
大止
时间:
2015-4-2 13:00
标题:
L3G4200D 数据一直在跳来跳去
这是XS128模拟IIC读取陀螺仪数据的程序 采集回来的数据 高位只在0和255两个数跳 低位到处乱跳
#include"L3G4200D.h"
uchar bz2;
uchar jj=0;
void delay_us(int j)
{
while(j--)
{
_asm NOP; _asm NOP;_asm NOP;
_asm NOP;_asm NOP;
_asm NOP; _asm NOP;_asm NOP;
}
}
void delay_ms(int j)
{
while(j--)
delay_us(1000);
}
void IIC_START()
{
SDA=1;
SCL=1;
delay_us(5);//SCL保持高电平4.7us以上 SDA才下降
SDA=0;
delay_us(5); //SDA下降后 SCL保持高电平4us以上才下降
SCL=0;
}
void IIC_STOP()
{
SDA=0;
SCL=1;
delay_us(5); //SDA上升前 SCL要先保持高电平4us
SDA=1;
delay_us(5); //SDA要保持高电平4.7us
}
void IIC_RASK() //发完数据 读应答
{
DDRA_DDRA2=0; //读
SCL=1;
delay_us(2);
while(SDA);
delay_us(2);
SCL=0; //第9个下降沿 应答结束
DDRA_DDRA2=1;
}
void IIC_WRITE(uchar dat)
{
uchar i;
for(i=0;i<=7;i++)
{
delay_us(2);
if(dat&0x80)
{
SDA=1;
}
else
{
SDA=0;
}
delay_us(5);
SCL=1;
delay_us(5);
SCL=0;
dat=dat<<1;
}
IIC_RASK();
}
void IIC_WASK()
{
SDA=1; //为什么是应答1
delay_us(2);
SCL=1;
delay_us(2);
SCL=0;
delay_us(2);
}
uchar IIC_READ()
{
uchar i;
uchar dat=0;
DDRA_DDRA2=0; //读
delay_us(5);
for(i=0;i<=7;i++)
{
dat <<= 1;
SCL = 1; //拉高时钟线
delay_us(5); //延时
dat |= SDA; //读数据
SCL = 0; //拉低时钟线
delay_us(5); //延时
}
DDRA_DDRA2=1;//写
return dat;
}
void IIC_WRITEREG(uchar REG_ADRESS,uchar dat) //写寄存器
{
IIC_START();
IIC_WRITE(SlaveAddress); //设备地址
IIC_WRITE(REG_ADRESS);
IIC_WRITE(dat);
IIC_STOP();
}
uchar IIC_READREG(uchar REG_ADRESS)
{
uchar dat;
IIC_START();
IIC_WRITE(SlaveAddress); //设备地址 写信号
IIC_WRITE(REG_ADRESS);
IIC_START();
IIC_WRITE(SlaveAddress+1); //设备地址 读
dat=IIC_READ();
IIC_WASK() ;
IIC_STOP();
return dat;
}
void Init_L3G4200D()
{
IIC_WRITEREG(CTRL_REG1, 0x8f);
IIC_WRITEREG(CTRL_REG2, 0x00);
IIC_WRITEREG(CTRL_REG3, 0x08);
IIC_WRITEREG(CTRL_REG4, 0x30);
IIC_WRITEREG(CTRL_REG5, 0x00);
}
复制代码
作者:
大止
时间:
2015-4-2 13:00
救命救命
作者:
大止
时间:
2015-4-2 13:15
本帖最后由 大止 于 2015-4-2 13:17 编辑
换了个模块 高位时稳定了 可是低位还是跳 不动的时候 12-17的跳变。。
作者:
大止
时间:
2015-4-2 13:18
静止的是偶 低位有时候还会跳到200多
作者:
大止
时间:
2015-4-2 13:55
不确定 寄存器里的数据读出来怎么转换为角速度 高位有符号吗 我用char 来接收时 数据在静止时很稳定 但是一动 数据马上又跳了。
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2