예제 #1
0
/*----------------------------------------------------*/
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;
}
예제 #2
0
/*----------------------------------------------------*/
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;
}
예제 #3
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);
}