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:
parent
0545087008
commit
0d9ab2984d
1 changed files with 13 additions and 0 deletions
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue