diff --git a/flight/Modules/Sensors/sensors.c b/flight/Modules/Sensors/sensors.c index 43c8f8727..48b002248 100644 --- a/flight/Modules/Sensors/sensors.c +++ b/flight/Modules/Sensors/sensors.c @@ -244,7 +244,7 @@ static void SensorsTask(void *parameters) #endif // Using L3DG20 gyro -#elif defined(PIOS_INCLUDE_L3GD20) +#elif 0 && defined(PIOS_INCLUDE_L3GD20) struct pios_l3gd20_data gyro; count = 0; while((read_good = PIOS_L3GD20_ReadFifo(&gyro)) != 0); @@ -288,7 +288,7 @@ static void SensorsTask(void *parameters) gyrosData.y = gyros[1] * gyro_scaling; gyrosData.z = gyros[2] * gyro_scaling; gyrosData.temperature = 35.0f + ((float) gyro.temperature + 512.0f) / 340.0f; - + gyrosData.temperature = PIOS_L3GD20_ReadID(); if (bias_correct_gyro) { // Apply bias correction to the gyros GyrosBiasData gyrosBias; diff --git a/flight/PiOS/STM32F4xx/pios_l3gd20.c b/flight/PiOS/STM32F4xx/pios_l3gd20.c index c4df919e7..7a029d619 100644 --- a/flight/PiOS/STM32F4xx/pios_l3gd20.c +++ b/flight/PiOS/STM32F4xx/pios_l3gd20.c @@ -247,15 +247,15 @@ float PIOS_L3GD20_GetScale() */ uint8_t PIOS_L3GD20_Test(void) { - /* Verify that ID matches (MPU6050 ID is 0x69) */ - int32_t L3GD20_id = PIOS_L3GD20_ReadID(); - if(L3GD20_id < 0) + int32_t l3gd20_id = PIOS_L3GD20_ReadID(); + if(l3gd20_id < 0) return -1; - - if(L3GD20_id != 0x68); - return -2; - - return 0; + + uint8_t id = l3gd20_id; + if(id == 0xD4) + return 0; + + return -2; } /** diff --git a/flight/PiOS/inc/pios_l3gd20.h b/flight/PiOS/inc/pios_l3gd20.h index 2db1399e0..dd1f4183d 100644 --- a/flight/PiOS/inc/pios_l3gd20.h +++ b/flight/PiOS/inc/pios_l3gd20.h @@ -62,7 +62,7 @@ #define PIOS_L3GD20_FIFO_CNT_MSB 0x72 #define PIOS_L3GD20_FIFO_CNT_LSB 0x73 #define PIOS_L3GD20_FIFO_REG 0x74 -#define PIOS_L3GD20_WHOAMI 0x75 +#define PIOS_L3GD20_WHOAMI 0x0F /* FIFO enable for storing different values */ #define PIOS_L3GD20_FIFO_TEMP_OUT 0x80 diff --git a/flight/Revolution/System/inc/pios_config.h b/flight/Revolution/System/inc/pios_config.h index 3e954e115..ff870f8cc 100644 --- a/flight/Revolution/System/inc/pios_config.h +++ b/flight/Revolution/System/inc/pios_config.h @@ -59,7 +59,7 @@ #define PIOS_INCLUDE_HMC5883 //#define PIOS_INCLUDE_MPU6000 //#define PIOS_MPU6000_ACCEL -//#define PIOS_INCLUDE_L3GD20 +#define PIOS_INCLUDE_L3GD20 #define PIOS_INCLUDE_MS5611 //#define PIOS_INCLUDE_HCSR04 diff --git a/flight/Revolution/System/pios_board.c b/flight/Revolution/System/pios_board.c index 888e7319d..e6dd9ba6b 100644 --- a/flight/Revolution/System/pios_board.c +++ b/flight/Revolution/System/pios_board.c @@ -1671,17 +1671,18 @@ void PIOS_Board_Init(void) { PIOS_DELAY_WaitmS(500); -/* + #if defined(PIOS_INCLUDE_MPU6000) PIOS_MPU6000_Attach(pios_spi_gyro_id); PIOS_MPU6000_Init(&pios_mpu6000_cfg); #elif defined(PIOS_INCLUDE_L3GD20) PIOS_L3GD20_Attach(pios_spi_gyro_id); + PIOS_Assert(PIOS_L3GD20_Test() == 0); // PIOS_L3GD20_Init(&pios_l3gd20_cfg); #else PIOS_Assert(0); #endif -*/ + PIOS_BMA180_Attach(pios_spi_accel_id); PIOS_BMA180_Init(&pios_bma180_cfg);