Paparazzi UAS
v5.14.0_stable-0-g3f680d1
Paparazzi is a free software Unmanned Aircraft System.
|
Interface for the Disco magnetometer, accelerometer and gyroscope. More...
#include "generated/airframe.h"
#include "subsystems/imu.h"
#include "peripherals/ak8963.h"
#include "peripherals/mpu60x0_i2c.h"
Go to the source code of this file.
Data Structures | |
struct | ImuDisco |
Everything that is in the disco IMU. More... | |
Functions | |
void | imu_disco_init (void) |
Disco IMU initializtion of the MPU-60x0 and HMC58xx. More... | |
void | imu_disco_periodic (void) |
Handle all the periodic tasks of the Disco IMU components. More... | |
void | imu_disco_event (void) |
Handle all the events of the Disco IMU components. More... | |
Variables | |
struct ImuDisco | imu_disco |
Disco IMU data. More... | |
Interface for the Disco magnetometer, accelerometer and gyroscope.
Definition in file imu_disco.h.
struct ImuDisco |
Everything that is in the disco IMU.
Definition at line 72 of file imu_disco.h.
Data Fields | ||
---|---|---|
struct Ak8963 | ak | The AK8963 mag. |
struct Mpu60x0_I2c | mpu | The MPU gyro/accel device. |
#define DISCO_ACCEL_RANGE MPU60X0_ACCEL_RANGE_8G |
Definition at line 42 of file imu_disco.h.
Referenced by imu_disco_init().
#define DISCO_GYRO_RANGE MPU60X0_GYRO_RANGE_1000 |
Definition at line 38 of file imu_disco.h.
Referenced by imu_disco_init().
#define IMU_ACCEL_X_SENS MPU60X0_ACCEL_SENS[DISCO_ACCEL_RANGE] |
Definition at line 60 of file imu_disco.h.
#define IMU_ACCEL_X_SENS_DEN MPU60X0_ACCEL_SENS_FRAC[DISCO_ACCEL_RANGE][1] |
Definition at line 62 of file imu_disco.h.
#define IMU_ACCEL_X_SENS_NUM MPU60X0_ACCEL_SENS_FRAC[DISCO_ACCEL_RANGE][0] |
Definition at line 61 of file imu_disco.h.
#define IMU_ACCEL_Y_SENS MPU60X0_ACCEL_SENS[DISCO_ACCEL_RANGE] |
Definition at line 63 of file imu_disco.h.
#define IMU_ACCEL_Y_SENS_DEN MPU60X0_ACCEL_SENS_FRAC[DISCO_ACCEL_RANGE][1] |
Definition at line 65 of file imu_disco.h.
#define IMU_ACCEL_Y_SENS_NUM MPU60X0_ACCEL_SENS_FRAC[DISCO_ACCEL_RANGE][0] |
Definition at line 64 of file imu_disco.h.
#define IMU_ACCEL_Z_SENS MPU60X0_ACCEL_SENS[DISCO_ACCEL_RANGE] |
Definition at line 66 of file imu_disco.h.
#define IMU_ACCEL_Z_SENS_DEN MPU60X0_ACCEL_SENS_FRAC[DISCO_ACCEL_RANGE][1] |
Definition at line 68 of file imu_disco.h.
#define IMU_ACCEL_Z_SENS_NUM MPU60X0_ACCEL_SENS_FRAC[DISCO_ACCEL_RANGE][0] |
Definition at line 67 of file imu_disco.h.
#define IMU_GYRO_P_SENS MPU60X0_GYRO_SENS[DISCO_GYRO_RANGE] |
Definition at line 47 of file imu_disco.h.
#define IMU_GYRO_P_SENS_DEN MPU60X0_GYRO_SENS_FRAC[DISCO_GYRO_RANGE][1] |
Definition at line 49 of file imu_disco.h.
#define IMU_GYRO_P_SENS_NUM MPU60X0_GYRO_SENS_FRAC[DISCO_GYRO_RANGE][0] |
Definition at line 48 of file imu_disco.h.
#define IMU_GYRO_Q_SENS MPU60X0_GYRO_SENS[DISCO_GYRO_RANGE] |
Definition at line 50 of file imu_disco.h.
#define IMU_GYRO_Q_SENS_DEN MPU60X0_GYRO_SENS_FRAC[DISCO_GYRO_RANGE][1] |
Definition at line 52 of file imu_disco.h.
#define IMU_GYRO_Q_SENS_NUM MPU60X0_GYRO_SENS_FRAC[DISCO_GYRO_RANGE][0] |
Definition at line 51 of file imu_disco.h.
#define IMU_GYRO_R_SENS MPU60X0_GYRO_SENS[DISCO_GYRO_RANGE] |
Definition at line 53 of file imu_disco.h.
#define IMU_GYRO_R_SENS_DEN MPU60X0_GYRO_SENS_FRAC[DISCO_GYRO_RANGE][1] |
Definition at line 55 of file imu_disco.h.
#define IMU_GYRO_R_SENS_NUM MPU60X0_GYRO_SENS_FRAC[DISCO_GYRO_RANGE][0] |
Definition at line 54 of file imu_disco.h.
void imu_disco_event | ( | void | ) |
Handle all the events of the Disco IMU components.
When there is data available convert it to the correct axis and save it in the imu structure.
Definition at line 99 of file imu_disco.c.
References Imu::accel, Imu::accel_unscaled, ImuDisco::ak, ak8963_event(), Ak8963::data, Mpu60x0_I2c::data_accel, Mpu60x0_I2c::data_available, Ak8963::data_available, Mpu60x0_I2c::data_rates, get_sys_time_usec(), Imu::gyro, Imu::gyro_unscaled, imu, IMU_BOARD_ID, imu_disco, imu_scale_accel(), imu_scale_gyro(), imu_scale_mag(), Imu::mag, Imu::mag_unscaled, ImuDisco::mpu, mpu60x0_i2c_event(), RATES_ASSIGN, and VECT3_ASSIGN.
void imu_disco_init | ( | void | ) |
Disco IMU initializtion of the MPU-60x0 and HMC58xx.
Definition at line 69 of file imu_disco.c.
References Mpu60x0Config::accel_range, ImuDisco::ak, AK8963_ADDR, ak8963_init(), Mpu60x0_I2c::config, DISCO_ACCEL_RANGE, DISCO_GYRO_RANGE, DISCO_MAG_I2C_DEV, DISCO_MPU_I2C_DEV, Mpu60x0Config::dlpf_cfg, Mpu60x0Config::gyro_range, ImuDisco::mpu, MPU60X0_ADDR, mpu60x0_i2c_init(), and Mpu60x0Config::smplrt_div.
void imu_disco_periodic | ( | void | ) |
Handle all the periodic tasks of the Disco IMU components.
Read the MPU60x0 every periodic call and the AKM8963 every 10th call.
Definition at line 86 of file imu_disco.c.
References ImuDisco::ak, ak8963_periodic(), imu_disco, ImuDisco::mpu, and mpu60x0_i2c_periodic().
struct ImuDisco imu_disco |
Disco IMU data.
Definition at line 64 of file imu_disco.c.
Referenced by imu_disco_event(), and imu_disco_periodic().