/*----------------------------------------------------*/ void mpu_get_accel(MPU* self, float *x, float *y, float *z) { uint8_t buffer[6]; int16_t ix, iy, iz; i2c_read_buffer(self->slave_address, MPU_ACCEL_X_ADDRESS, buffer, 6); ix = MAKEWORD(buffer[0], buffer[1]); iy = MAKEWORD(buffer[2], buffer[3]); iz = MAKEWORD(buffer[4], buffer[5]); *x = ix / self->accel_scaling; *y = iy / self->accel_scaling; *z = iz / self->accel_scaling; }
/*----------------------------------------------------*/ void mpu_get_mag (MPU* self, float *x, float *y, float *z) { uint8_t buffer[6]; int16_t ix, iy, iz; i2c_read_buffer(self->slave_address, MPU_MAG_X_ADDRESS, buffer, 6); ix = MAKEWORD(buffer[0], buffer[1]); iy = MAKEWORD(buffer[2], buffer[3]); iz = MAKEWORD(buffer[4], buffer[5]); *x = PI * ix / 4096.0; *y = PI * iy / 4096.0; *z = PI * iz / 4096.0; }
/** * @brief read length data from reg * @param mpu6050_reg * @retval None **/ void mpu6050_read_buffer(unsigned char mpu6050_reg,unsigned char *buffer,unsigned char length) { i2c_read_buffer(MPU6050_DEV_ADDR<<1, mpu6050_reg ,buffer, length); }