Paparazzi UAS
v5.18.0_stable
Paparazzi is a free software Unmanned Aircraft System.
imu_krooz.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2013 Sergey Krukowski <softsr@yahoo.de>
3
*
4
* This file is part of paparazzi.
5
*
6
* paparazzi is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2, or (at your option)
9
* any later version.
10
*
11
* paparazzi is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with paparazzi; see the file COPYING. If not, write to
18
* the Free Software Foundation, 59 Temple Place - Suite 330,
19
* Boston, MA 02111-1307, USA.
20
*/
21
30
#ifndef IMU_KROOZ_H
31
#define IMU_KROOZ_H
32
33
#include "
std.h
"
34
#include "generated/airframe.h"
35
#include "
subsystems/imu.h
"
36
37
#include "
peripherals/mpu60x0_i2c.h
"
38
#include "
peripherals/hmc58xx.h
"
39
40
#ifndef KROOZ_GYRO_RANGE
41
#define KROOZ_GYRO_RANGE MPU60X0_GYRO_RANGE_250
42
#endif
43
44
#ifndef KROOZ_ACCEL_RANGE
45
#define KROOZ_ACCEL_RANGE MPU60X0_ACCEL_RANGE_2G
46
#endif
47
48
49
// Set default sensitivity based on range if needed
50
#if !defined IMU_GYRO_P_SENS & !defined IMU_GYRO_Q_SENS & !defined IMU_GYRO_R_SENS
51
#define IMU_GYRO_P_SENS MPU60X0_GYRO_SENS[KROOZ_GYRO_RANGE]
52
#define IMU_GYRO_P_SENS_NUM MPU60X0_GYRO_SENS_FRAC[KROOZ_GYRO_RANGE][0]
53
#define IMU_GYRO_P_SENS_DEN MPU60X0_GYRO_SENS_FRAC[KROOZ_GYRO_RANGE][1]
54
#define IMU_GYRO_Q_SENS MPU60X0_GYRO_SENS[KROOZ_GYRO_RANGE]
55
#define IMU_GYRO_Q_SENS_NUM MPU60X0_GYRO_SENS_FRAC[KROOZ_GYRO_RANGE][0]
56
#define IMU_GYRO_Q_SENS_DEN MPU60X0_GYRO_SENS_FRAC[KROOZ_GYRO_RANGE][1]
57
#define IMU_GYRO_R_SENS MPU60X0_GYRO_SENS[KROOZ_GYRO_RANGE]
58
#define IMU_GYRO_R_SENS_NUM MPU60X0_GYRO_SENS_FRAC[KROOZ_GYRO_RANGE][0]
59
#define IMU_GYRO_R_SENS_DEN MPU60X0_GYRO_SENS_FRAC[KROOZ_GYRO_RANGE][1]
60
#endif
61
62
// Set default sensitivity based on range if needed
63
#if !defined IMU_ACCEL_X_SENS & !defined IMU_ACCEL_Y_SENS & !defined IMU_ACCEL_Z_SENS
64
#define IMU_ACCEL_X_SENS MPU60X0_ACCEL_SENS[KROOZ_ACCEL_RANGE]
65
#define IMU_ACCEL_X_SENS_NUM MPU60X0_ACCEL_SENS_FRAC[KROOZ_ACCEL_RANGE][0]
66
#define IMU_ACCEL_X_SENS_DEN MPU60X0_ACCEL_SENS_FRAC[KROOZ_ACCEL_RANGE][1]
67
#define IMU_ACCEL_Y_SENS MPU60X0_ACCEL_SENS[KROOZ_ACCEL_RANGE]
68
#define IMU_ACCEL_Y_SENS_NUM MPU60X0_ACCEL_SENS_FRAC[KROOZ_ACCEL_RANGE][0]
69
#define IMU_ACCEL_Y_SENS_DEN MPU60X0_ACCEL_SENS_FRAC[KROOZ_ACCEL_RANGE][1]
70
#define IMU_ACCEL_Z_SENS MPU60X0_ACCEL_SENS[KROOZ_ACCEL_RANGE]
71
#define IMU_ACCEL_Z_SENS_NUM MPU60X0_ACCEL_SENS_FRAC[KROOZ_ACCEL_RANGE][0]
72
#define IMU_ACCEL_Z_SENS_DEN MPU60X0_ACCEL_SENS_FRAC[KROOZ_ACCEL_RANGE][1]
73
#endif
74
75
76
#ifndef IMU_KROOZ_ACCEL_AVG_FILTER
77
#define IMU_KROOZ_ACCEL_AVG_FILTER 15
78
#endif
79
80
struct
ImuKrooz
{
81
volatile
bool
mpu_eoc
;
82
volatile
bool
hmc_eoc
;
83
struct
Mpu60x0_I2c
mpu
;
84
struct
Hmc58xx
hmc
;
85
struct
Int32Rates
rates_sum
;
86
struct
Int32Vect3
accel_sum
;
87
volatile
uint8_t
meas_nb
;
88
struct
Int32Vect3
accel_filtered
;
89
int32_t
temperature
;
90
};
91
92
extern
struct
ImuKrooz
imu_krooz
;
93
94
extern
void
imu_krooz_init
(
void
);
95
extern
void
imu_krooz_periodic
(
void
);
96
extern
void
imu_krooz_event
(
void
);
97
extern
void
imu_krooz_downlink_raw
(
void
);
98
99
#endif // IMU_KROOZ_H
imu_krooz_event
void imu_krooz_event(void)
Definition:
imu_krooz.c:139
ImuKrooz::accel_sum
struct Int32Vect3 accel_sum
Definition:
imu_krooz.h:86
Int32Rates
angular rates
Definition:
pprz_algebra_int.h:179
imu_krooz_periodic
void imu_krooz_periodic(void)
Definition:
imu_krooz.c:91
ImuKrooz
Definition:
imu_krooz.h:80
ImuKrooz::temperature
int32_t temperature
Definition:
imu_krooz.h:89
ImuKrooz::hmc
struct Hmc58xx hmc
Definition:
imu_krooz.h:84
imu.h
std.h
ImuKrooz::mpu_eoc
volatile bool mpu_eoc
Definition:
imu_krooz.h:81
ImuKrooz::mpu
struct Mpu60x0_I2c mpu
Definition:
imu_krooz.h:83
Int32Vect3
Definition:
pprz_algebra_int.h:88
uint8_t
unsigned char uint8_t
Definition:
types.h:14
ImuKrooz::meas_nb
volatile uint8_t meas_nb
Definition:
imu_krooz.h:87
imu_krooz_init
void imu_krooz_init(void)
Definition:
imu_krooz.c:61
imu_krooz_downlink_raw
void imu_krooz_downlink_raw(void)
Definition:
imu_krooz.c:130
int32_t
signed long int32_t
Definition:
types.h:19
imu_krooz
struct ImuKrooz imu_krooz
Definition:
imu_krooz.c:54
ImuKrooz::accel_filtered
struct Int32Vect3 accel_filtered
Definition:
imu_krooz.h:88
hmc58xx.h
ImuKrooz::hmc_eoc
volatile bool hmc_eoc
Definition:
imu_krooz.h:82
Hmc58xx
Definition:
hmc58xx.h:60
mpu60x0_i2c.h
Mpu60x0_I2c
Definition:
mpu60x0_i2c.h:54
ImuKrooz::rates_sum
struct Int32Rates rates_sum
Definition:
imu_krooz.h:85
sw
airborne
boards
krooz
imu_krooz.h
Generated on Tue Feb 1 2022 13:51:13 for Paparazzi UAS by
1.8.17