1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-23 16:25:31 +03:00

Disable ICM4268xx AFSR feature to prevent stalls (#13137)

This commit is contained in:
Mark Haslinghuis 2023-10-23 16:57:08 +02:00 committed by GitHub
parent 0545087008
commit 0d9ab2984d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -55,6 +55,11 @@
#define ICM426XX_BANK_SELECT3 0x03
#define ICM426XX_BANK_SELECT4 0x04
// Fix for stalls in gyro output. See https://github.com/ArduPilot/ardupilot/pull/25332
#define ICM426XX_INTF_CONFIG1 0x4D
#define ICM426XX_INTF_CONFIG1_AFSR_MASK 0xC0
#define ICM426XX_INTF_CONFIG1_AFSR_DISABLE 0x40
#define ICM426XX_RA_PWR_MGMT0 0x4E // User Bank 0
#define ICM426XX_PWR_MGMT0_ACCEL_MODE_LN (3 << 0)
#define ICM426XX_PWR_MGMT0_GYRO_MODE_LN (3 << 2)
@ -274,6 +279,14 @@ void icm426xxGyroInit(gyroDev_t *gyro)
spiWriteReg(dev, ICM426XX_RA_INT_CONFIG1, intConfig1Value);
// Disable AFSR to prevent stalls in gyro output
// ICM426XX_INTF_CONFIG1 located in user bank 0
uint8_t intfConfig1Value = spiReadRegMsk(dev, ICM426XX_INTF_CONFIG1);
intfConfig1Value &= ~ICM426XX_INTF_CONFIG1_AFSR_MASK;
intfConfig1Value |= ICM426XX_INTF_CONFIG1_AFSR_DISABLE;
spiWriteReg(dev, ICM426XX_INTF_CONFIG1, intfConfig1Value);
// Turn on gyro and acc on again so ODR and FSR can be configured
turnGyroAccOn(dev);