智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 791|回复: 4
打印 上一主题 下一主题

L3G4200D 数据一直在跳来跳去

[复制链接]

27

主题

206

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
威望
222
贡献
124
兑换币
101
注册时间
2015-3-30
在线时间
59 小时
毕业学校
一中
跳转到指定楼层
1#
发表于 2015-4-2 13:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是XS128模拟IIC读取陀螺仪数据的程序 采集回来的数据 高位只在0和255两个数跳 低位到处乱跳
  1. #include"L3G4200D.h"

  2. uchar bz2;
  3. uchar jj=0;

  4. void delay_us(int j)
  5. {
  6.   while(j--)
  7.   {
  8.       _asm NOP; _asm NOP;_asm NOP;
  9.        _asm NOP;_asm NOP;
  10.       _asm NOP; _asm NOP;_asm NOP;
  11.   }
  12.    
  13. }
  14. void delay_ms(int j)
  15. {
  16.     while(j--)
  17.     delay_us(1000);
  18.   
  19. }

  20. void IIC_START()
  21. {
  22.   
  23.     SDA=1;
  24.     SCL=1;
  25.     delay_us(5);//SCL保持高电平4.7us以上 SDA才下降
  26.     SDA=0;
  27.     delay_us(5); //SDA下降后 SCL保持高电平4us以上才下降
  28.     SCL=0;


  29. }
  30. void IIC_STOP()
  31. {
  32.   
  33.     SDA=0;
  34.     SCL=1;
  35.     delay_us(5);      //SDA上升前 SCL要先保持高电平4us
  36.     SDA=1;
  37.     delay_us(5);       //SDA要保持高电平4.7us
  38.   
  39. }




  40. void IIC_RASK() //发完数据 读应答
  41. {
  42.   
  43.     DDRA_DDRA2=0;    //读
  44.     SCL=1;
  45.     delay_us(2);
  46.     while(SDA);
  47.     delay_us(2);
  48.     SCL=0;       //第9个下降沿 应答结束
  49.     DDRA_DDRA2=1;
  50. }
  51. void IIC_WRITE(uchar dat)
  52. {
  53.    
  54.     uchar i;
  55.     for(i=0;i<=7;i++)
  56.     {
  57.       delay_us(2);
  58.       if(dat&0x80)
  59.       {
  60.         SDA=1;  
  61.       }
  62.       else
  63.       {
  64.         SDA=0;  
  65.       }
  66.       delay_us(5);
  67.       SCL=1;
  68.       delay_us(5);
  69.       SCL=0;  
  70.       dat=dat<<1;
  71.     }  
  72.     IIC_RASK();   
  73. }



  74. void IIC_WASK()
  75. {                    
  76.     SDA=1;           //为什么是应答1
  77.     delay_us(2);
  78.     SCL=1;        
  79.     delay_us(2);
  80.     SCL=0;
  81.     delay_us(2);
  82. }
  83. uchar IIC_READ()
  84. {
  85.   uchar i;
  86.   uchar dat=0;
  87.   DDRA_DDRA2=0; //读
  88.   delay_us(5);
  89.   for(i=0;i<=7;i++)
  90.   {
  91.     dat <<= 1;
  92.     SCL = 1;                //拉高时钟线
  93.     delay_us(5);             //延时
  94.     dat |= SDA;             //读数据               
  95.     SCL = 0;                //拉低时钟线
  96.     delay_us(5);             //延时
  97.   }
  98.   DDRA_DDRA2=1;//写
  99.   return dat;
  100. }     


  101. void IIC_WRITEREG(uchar REG_ADRESS,uchar dat) //写寄存器
  102. {
  103.   IIC_START();
  104.   IIC_WRITE(SlaveAddress); //设备地址
  105.   IIC_WRITE(REG_ADRESS);
  106.   IIC_WRITE(dat);
  107.   IIC_STOP();  
  108. }
  109. uchar IIC_READREG(uchar REG_ADRESS)
  110. {
  111.   
  112.   uchar dat;
  113.   
  114.   IIC_START();
  115.   IIC_WRITE(SlaveAddress); //设备地址   写信号
  116.   IIC_WRITE(REG_ADRESS);
  117.   IIC_START();
  118.   IIC_WRITE(SlaveAddress+1); //设备地址   读
  119.   dat=IIC_READ();
  120.     IIC_WASK() ;
  121.   IIC_STOP();
  122.   return dat;
  123. }


  124. void Init_L3G4200D()
  125. {
  126.    IIC_WRITEREG(CTRL_REG1, 0x8f);   
  127.    IIC_WRITEREG(CTRL_REG2, 0x00);   
  128.    IIC_WRITEREG(CTRL_REG3, 0x08);   
  129.    IIC_WRITEREG(CTRL_REG4, 0x30);
  130.    IIC_WRITEREG(CTRL_REG5, 0x00);
  131. }
复制代码
回复

使用道具 举报

27

主题

206

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
威望
222
贡献
124
兑换币
101
注册时间
2015-3-30
在线时间
59 小时
毕业学校
一中
2#
 楼主| 发表于 2015-4-2 13:00:59 | 只看该作者
救命救命
回复 支持 反对

使用道具 举报

27

主题

206

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
威望
222
贡献
124
兑换币
101
注册时间
2015-3-30
在线时间
59 小时
毕业学校
一中
3#
 楼主| 发表于 2015-4-2 13:15:16 | 只看该作者
本帖最后由 大止 于 2015-4-2 13:17 编辑

换了个模块 高位时稳定了 可是低位还是跳 不动的时候 12-17的跳变。。
回复 支持 反对

使用道具 举报

27

主题

206

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
威望
222
贡献
124
兑换币
101
注册时间
2015-3-30
在线时间
59 小时
毕业学校
一中
4#
 楼主| 发表于 2015-4-2 13:18:53 | 只看该作者
静止的是偶 低位有时候还会跳到200多
回复 支持 反对

使用道具 举报

27

主题

206

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
威望
222
贡献
124
兑换币
101
注册时间
2015-3-30
在线时间
59 小时
毕业学校
一中
5#
 楼主| 发表于 2015-4-2 13:55:10 | 只看该作者
不确定 寄存器里的数据读出来怎么转换为角速度 高位有符号吗 我用char 来接收时 数据在静止时很稳定 但是一动 数据马上又跳了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 05:01 , Processed in 0.079934 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表