@@ -3373,39 +3373,25 @@ void MPU6050_Base::PID(uint8_t ReadAddress, float kP,float kI, uint8_t Loops){
33733373
33743374int16_t * MPU6050_Base::GetActiveOffsets () {
33753375 uint8_t AOffsetRegister = (getDeviceID () < 0x38 )? MPU6050_RA_XA_OFFS_H:0x77 ;
3376- int16_t Data[6 ]{0 };
3377- if (AOffsetRegister == 0x06 ) I2Cdev::readWords (devAddr, AOffsetRegister, 3 , (uint16_t *)Data, I2Cdev::readTimeout, wireObj);
3376+ if (AOffsetRegister == 0x06 ) I2Cdev::readWords (devAddr, AOffsetRegister, 3 , (uint16_t *)offsets, I2Cdev::readTimeout, wireObj);
33783377 else {
3379- I2Cdev::readWords (devAddr, AOffsetRegister, 1 , (uint16_t *)Data, I2Cdev::readTimeout, wireObj);
3380- I2Cdev::readWords (devAddr, AOffsetRegister+3 , 1 , (uint16_t *)(Data+1 ), I2Cdev::readTimeout, wireObj);
3381- I2Cdev::readWords (devAddr, AOffsetRegister+6 , 1 , (uint16_t *)(Data+2 ), I2Cdev::readTimeout, wireObj);
3382- }
3383- I2Cdev::readWords (devAddr, 0x13 , 3 , (uint16_t *)(Data+3 ), I2Cdev::readTimeout, wireObj);
3384- for (uint i = 0 ; i < 6 ; i++){
3385- offsets[i] = Data[i];
3378+ I2Cdev::readWords (devAddr, AOffsetRegister, 1 , (uint16_t *)offsets, I2Cdev::readTimeout, wireObj);
3379+ I2Cdev::readWords (devAddr, AOffsetRegister+3 , 1 , (uint16_t *)(offsets+1 ), I2Cdev::readTimeout, wireObj);
3380+ I2Cdev::readWords (devAddr, AOffsetRegister+6 , 1 , (uint16_t *)(offsets+2 ), I2Cdev::readTimeout, wireObj);
33863381 }
3382+ I2Cdev::readWords (devAddr, 0x13 , 3 , (uint16_t *)(offsets+3 ), I2Cdev::readTimeout, wireObj);
33873383 return offsets;
33883384}
33893385
33903386void MPU6050_Base::PrintActiveOffsets () {
3391- uint8_t AOffsetRegister = (getDeviceID () < 0x38 )? MPU6050_RA_XA_OFFS_H:0x77 ;
3392- int16_t Data[3 ];
3393- // Serial.print(F("Offset Register 0x"));
3394- // Serial.print(AOffsetRegister>>4,HEX);Serial.print(AOffsetRegister&0x0F,HEX);
3395- Serial.print (F (" \n\n //\t\t X Accel\t\t Y Accel\t\t Z Accel\t\t X Gyro\t\t Y Gyro\t\t Z Gyro\n // OFFSETS\t " ));
3396- if (AOffsetRegister == 0x06 ) I2Cdev::readWords (devAddr, AOffsetRegister, 3 , (uint16_t *)Data, I2Cdev::readTimeout, wireObj);
3397- else {
3398- I2Cdev::readWords (devAddr, AOffsetRegister, 1 , (uint16_t *)Data, I2Cdev::readTimeout, wireObj);
3399- I2Cdev::readWords (devAddr, AOffsetRegister+3 , 1 , (uint16_t *)Data+1 , I2Cdev::readTimeout, wireObj);
3400- I2Cdev::readWords (devAddr, AOffsetRegister+6 , 1 , (uint16_t *)Data+2 , I2Cdev::readTimeout, wireObj);
3401- }
3387+ GetActiveOffsets ();
34023388 // A_OFFSET_H_READ_A_OFFS(Data);
3403- Serial.print ((float )Data [0 ], 5 ); Serial.print (" ,\t " );
3404- Serial.print ((float )Data [1 ], 5 ); Serial.print (" ,\t " );
3405- Serial.print ((float )Data [2 ], 5 ); Serial.print (" ,\t " );
3406- I2Cdev::readWords (devAddr, 0x13 , 3 , ( uint16_t *)Data, I2Cdev::readTimeout, wireObj);
3389+ Serial.print ((float )offsets [0 ], 5 ); Serial.print (" ,\t " );
3390+ Serial.print ((float )offsets [1 ], 5 ); Serial.print (" ,\t " );
3391+ Serial.print ((float )offsets [2 ], 5 ); Serial.print (" ,\t " );
3392+
34073393 // XG_OFFSET_H_READ_OFFS_USR(Data);
3408- Serial.print ((float )Data[ 0 ], 5 ); Serial.print (" ,\t " );
3409- Serial.print ((float )Data[ 1 ], 5 ); Serial.print (" ,\t " );
3410- Serial.print ((float )Data[ 2 ], 5 ); Serial.print (" \n\n " );
3394+ Serial.print ((float )offsets[ 3 ], 5 ); Serial.print (" ,\t " );
3395+ Serial.print ((float )offsets[ 4 ], 5 ); Serial.print (" ,\t " );
3396+ Serial.print ((float )offsets[ 5 ], 5 ); Serial.print (" \n\n " );
34113397}
0 commit comments