️ Improves imu speed by making it non blocking and run faster

This commit is contained in:
Rune Harlyk
2025-09-08 22:37:57 +02:00
parent ae98ba76f7
commit 59bb1d9579
+13 -3
View File
@@ -50,12 +50,18 @@ class IMU {
#if FT_ENABLED(USE_MPU6050) #if FT_ENABLED(USE_MPU6050)
_imu.initialize(); _imu.initialize();
imuMsg.success = _imu.testConnection(); imuMsg.success = _imu.testConnection();
devStatus = _imu.dmpInitialize();
if (!imuMsg.success) return false; if (!imuMsg.success) return false;
devStatus = _imu.dmpInitialize();
if (devStatus == 0) {
_imu.setDMPEnabled(false);
_imu.setDMPConfig1(0x03);
_imu.setDMPEnabled(true); _imu.setDMPEnabled(true);
_imu.setI2CMasterModeEnabled(false); _imu.setI2CMasterModeEnabled(false);
_imu.setI2CBypassEnabled(true); _imu.setI2CBypassEnabled(true);
_imu.setSleepEnabled(false); _imu.setSleepEnabled(false);
} else {
return false;
}
#endif #endif
#if FT_ENABLED(USE_BNO055) #if FT_ENABLED(USE_BNO055)
imuMsg.success = _imu.begin(); imuMsg.success = _imu.begin();
@@ -70,11 +76,15 @@ class IMU {
bool readIMU() { bool readIMU() {
if (!imuMsg.success) return false; if (!imuMsg.success) return false;
#if FT_ENABLED(USE_MPU6050) #if FT_ENABLED(USE_MPU6050)
bool updated = _imu.dmpGetCurrentFIFOPacket(fifoBuffer); if (_imu.dmpPacketAvailable()) {
if (_imu.dmpGetCurrentFIFOPacket(fifoBuffer)) {
_imu.dmpGetQuaternion(&q, fifoBuffer); _imu.dmpGetQuaternion(&q, fifoBuffer);
_imu.dmpGetGravity(&gravity, &q); _imu.dmpGetGravity(&gravity, &q);
_imu.dmpGetYawPitchRoll(imuMsg.rpy, &q, &gravity); _imu.dmpGetYawPitchRoll(imuMsg.rpy, &q, &gravity);
return updated; return true;
}
}
return false;
#endif #endif
#if FT_ENABLED(USE_BNO055) #if FT_ENABLED(USE_BNO055)
sensors_event_t event; sensors_event_t event;