搜索
bottom↓
回复: 11

有谁用过ADIS16100陀螺仪的吗?如何调试?

[复制链接]

出0入0汤圆

发表于 2009-4-23 11:42:47 | 显示全部楼层 |阅读模式
有谁用过ADIS16100陀螺仪的吗?如何调试?

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2009-4-25 00:59:09 | 显示全部楼层
#ifndef _ADIS16100_H_
#define _ADIS16100_H_

#include <avr/io.h>
#include <avr/interrupt.h>

#include "global.h"
#include "spi.h"

// Chip select pin
#define ADI_CS_PORT                        PORTB
#define ADI_CS_DDR                        DDRB
#define ADI_CS_PIN                        2
#define ADI_CS_LOW()        cbi(ADI_CS_PORT,ADI_CS_PIN)
#define ADI_CS_HIGH()       sbi(ADI_CS_PORT,ADI_CS_PIN)

struct ADIS16100_Packet {
    unsigned int DC03   :4;
    unsigned int Code   :1;
    unsigned int Zero5  :1;
    unsigned int DC67   :2;
    unsigned int One89  :2;
    unsigned int Addr   :2;
    unsigned int DC1213 :2;
    unsigned int Zero14 :1;
    unsigned int Write  :1;
};

union U16_DATA {
    struct ADIS16100_Packet packet;
    u16    u16_data;
};

void ADIS16100_Init();
void ADIS16100_StructInit( struct ADIS16100_Packet * packet );
u16 ADIS16100_ReadGyro( struct ADIS16100_Packet * packet );
u16 ADIS16100_SendCommand( u16 cmd );

#endif//_ADIS16100_H_

/********************************************************************************/


#include "ADIS16100.h"
#include "spi.h"

void ADIS16100_Init()
{
    spiInit();

    // release chip select
        sbi(ADI_CS_DDR, ADI_CS_PIN);
        sbi(ADI_CS_PORT,ADI_CS_PIN);
    //sbi(ADI_EN_DDR, ADI_EN_PIN);
        //cbi(ADI_EN_PORT,ADI_EN_PIN);
}

void ADIS16100_StructInit( struct ADIS16100_Packet * packet )
{
    packet->Write  = 1;
    packet->Zero14 = 0;
    packet->Addr   = 0;
    packet->One89  = 3;
    packet->Zero5  = 0;
    packet->Code   = 0;
}

u16 ADIS16100_ReadGyro( struct ADIS16100_Packet * packet )
{
    union U16_DATA data;
    u16 result;
    packet->Write  = 1;
    packet->Addr   = 0;
   
    data.packet = *packet;

    ADIS16100_SendCommand( data.u16_data );
   
    packet->Write  = 0;
    result = ADIS16100_SendCommand( data.u16_data );
    if( result & 0x0800 ){
        result |= 0xF000;
    }
    return result;
}

u16 ADIS16100_SendCommand( u16 cmd )
{
    u16 result;

    ADI_CS_LOW();
    result = spiTransferWord(cmd);
    ADI_CS_HIGH();

    return result;
}


/********************************************************************************/

#ifndef GLOBAL_H
#define GLOBAL_H

// global AVRLIB defines
//#include "avrlibdefs.h"
// global AVRLIB types definitions
//#include "avrlibtypes.h"

// project/system dependent defines

// CPU clock speed
//#define F_CPU        16000000                     // 16MHz processor
//#define F_CPU        14745000                     // 14.745MHz processor
//#define F_CPU        8000000                      // 8MHz processor
//#define F_CPU        7372800                    // 7.37MHz processor
//#define F_CPU        4000000                      // 4MHz processor
//#define F_CPU        3686400                      // 3.69MHz processor
#define CYCLES_PER_US ((F_CPU+500000)/1000000)  // cpu cycles per microsecond

typedef unsigned char u08;
typedef unsigned int  u16;
typedef unsigned long int u32;

#define FALSE 0
#define TRUE  1

#define outp(DATA,PORT) (PORT = (DATA))
#define inp(PORT) (PORT)

#define sbi(REG,PIN) (REG|=(_BV(PIN)))
#define cbi(REG,PIN) (REG&=~(_BV(PIN)))

#endif


/********************************************************************************/


    ADIS16100_Init();
    ADIS16100_StructInit(&packet);
    while(1) {
        u16 gyro_result;
        
        gyro_result = ADIS16100_ReadGyro(&packet);
        printf("GYRO = %d\n", gyro_result);
        
        _delay_ms(20.0);
    }

出0入0汤圆

 楼主| 发表于 2009-4-28 22:52:19 | 显示全部楼层
真的太谢谢啦!

出0入0汤圆

发表于 2009-6-28 16:27:40 | 显示全部楼层
陀螺仪多少钱卖的啊

出0入0汤圆

发表于 2010-8-18 18:26:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-15 20:09:05 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-5-19 22:31:49 | 显示全部楼层
有用过ADIS16350吗?用51单片机可以模拟其SPI输出吗?怎样测试?谢谢

出0入0汤圆

发表于 2011-5-19 22:32:36 | 显示全部楼层
有用过ADIS16350吗?用51单片机可以模拟其SPI输出吗?怎样测试?谢谢
回复【1楼】TroyLee
-----------------------------------------------------------------------

有用过ADIS16350吗?用51单片机可以模拟其SPI输出吗?怎样测试?谢谢

出0入0汤圆

发表于 2011-7-9 16:15:21 | 显示全部楼层
标记
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-4 07:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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