From 59dbe0e4e3544fdc63458591fd6e3791baad5f14 Mon Sep 17 00:00:00 2001 From: etracer65 Date: Fri, 30 Mar 2018 00:11:14 -0400 Subject: [PATCH] Correct accelerometer initialization for MPU6000 and MPU9250 (#5559) Accelerometer should be initialized to 16G scale. --- src/main/drivers/accgyro/accgyro_spi_mpu6000.c | 6 +++--- src/main/drivers/accgyro/accgyro_spi_mpu9250.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/drivers/accgyro/accgyro_spi_mpu6000.c b/src/main/drivers/accgyro/accgyro_spi_mpu6000.c index daf690eba9..aab29f4b25 100644 --- a/src/main/drivers/accgyro/accgyro_spi_mpu6000.c +++ b/src/main/drivers/accgyro/accgyro_spi_mpu6000.c @@ -120,7 +120,7 @@ void mpu6000SpiGyroInit(gyroDev_t *gyro) void mpu6000SpiAccInit(accDev_t *acc) { - acc->acc_1G = 512 * 8; + acc->acc_1G = 512 * 4; } uint8_t mpu6000SpiDetect(const busDevice_t *bus) @@ -205,8 +205,8 @@ static void mpu6000AccAndGyroInit(gyroDev_t *gyro) spiBusWriteRegister(&gyro->bus, MPU_RA_GYRO_CONFIG, INV_FSR_2000DPS << 3); delayMicroseconds(15); - // Accel +/- 8 G Full Scale - spiBusWriteRegister(&gyro->bus, MPU_RA_ACCEL_CONFIG, INV_FSR_8G << 3); + // Accel +/- 16 G Full Scale + spiBusWriteRegister(&gyro->bus, MPU_RA_ACCEL_CONFIG, INV_FSR_16G << 3); delayMicroseconds(15); spiBusWriteRegister(&gyro->bus, MPU_RA_INT_PIN_CFG, 0 << 7 | 0 << 6 | 0 << 5 | 1 << 4 | 0 << 3 | 0 << 2 | 0 << 1 | 0 << 0); // INT_ANYRD_2CLEAR diff --git a/src/main/drivers/accgyro/accgyro_spi_mpu9250.c b/src/main/drivers/accgyro/accgyro_spi_mpu9250.c index eadaa3d6db..61c698465c 100644 --- a/src/main/drivers/accgyro/accgyro_spi_mpu9250.c +++ b/src/main/drivers/accgyro/accgyro_spi_mpu9250.c @@ -106,7 +106,7 @@ void mpu9250SpiGyroInit(gyroDev_t *gyro) void mpu9250SpiAccInit(accDev_t *acc) { - acc->acc_1G = 512 * 8; + acc->acc_1G = 512 * 4; } bool mpu9250SpiWriteRegisterVerify(const busDevice_t *bus, uint8_t reg, uint8_t data) @@ -148,7 +148,7 @@ static void mpu9250AccAndGyroInit(gyroDev_t *gyro) { mpu9250SpiWriteRegisterVerify(&gyro->bus, MPU_RA_SMPLRT_DIV, gyro->mpuDividerDrops); - mpu9250SpiWriteRegisterVerify(&gyro->bus, MPU_RA_ACCEL_CONFIG, INV_FSR_8G << 3); + mpu9250SpiWriteRegisterVerify(&gyro->bus, MPU_RA_ACCEL_CONFIG, INV_FSR_16G << 3); mpu9250SpiWriteRegisterVerify(&gyro->bus, MPU_RA_INT_PIN_CFG, 0 << 7 | 0 << 6 | 0 << 5 | 1 << 4 | 0 << 3 | 0 << 2 | 1 << 1 | 0 << 0); // INT_ANYRD_2CLEAR, BYPASS_EN #if defined(USE_MPU_DATA_READY_SIGNAL)