Simulation of flight pitch control with servo sweep.
Dependencies: mbed Servo mbed-rtos Motor
LSM9DS1_Types.h@5:8db82a61e052, 2018-12-13 (annotated)
- Committer:
- alevale32
- Date:
- Thu Dec 13 22:02:40 2018 +0000
- Revision:
- 5:8db82a61e052
RTOS pitch control simulation with servo sweep
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alevale32 | 5:8db82a61e052 | 1 | /****************************************************************************** |
alevale32 | 5:8db82a61e052 | 2 | LSM9DS1_Types.h |
alevale32 | 5:8db82a61e052 | 3 | SFE_LSM9DS1 Library - LSM9DS1 Types and Enumerations |
alevale32 | 5:8db82a61e052 | 4 | Jim Lindblom @ SparkFun Electronics |
alevale32 | 5:8db82a61e052 | 5 | Original Creation Date: April 21, 2015 |
alevale32 | 5:8db82a61e052 | 6 | https://github.com/sparkfun/LSM9DS1_Breakout |
alevale32 | 5:8db82a61e052 | 7 | |
alevale32 | 5:8db82a61e052 | 8 | This file defines all types and enumerations used by the LSM9DS1 class. |
alevale32 | 5:8db82a61e052 | 9 | |
alevale32 | 5:8db82a61e052 | 10 | Development environment specifics: |
alevale32 | 5:8db82a61e052 | 11 | IDE: Arduino 1.6.0 |
alevale32 | 5:8db82a61e052 | 12 | Hardware Platform: Arduino Uno |
alevale32 | 5:8db82a61e052 | 13 | LSM9DS1 Breakout Version: 1.0 |
alevale32 | 5:8db82a61e052 | 14 | |
alevale32 | 5:8db82a61e052 | 15 | This code is beerware; if you see me (or any other SparkFun employee) at the |
alevale32 | 5:8db82a61e052 | 16 | local, and you've found our code helpful, please buy us a round! |
alevale32 | 5:8db82a61e052 | 17 | |
alevale32 | 5:8db82a61e052 | 18 | Distributed as-is; no warranty is given. |
alevale32 | 5:8db82a61e052 | 19 | ******************************************************************************/ |
alevale32 | 5:8db82a61e052 | 20 | |
alevale32 | 5:8db82a61e052 | 21 | #ifndef __LSM9DS1_Types_H__ |
alevale32 | 5:8db82a61e052 | 22 | #define __LSM9DS1_Types_H__ |
alevale32 | 5:8db82a61e052 | 23 | |
alevale32 | 5:8db82a61e052 | 24 | #include "LSM9DS1_Registers.h" |
alevale32 | 5:8db82a61e052 | 25 | |
alevale32 | 5:8db82a61e052 | 26 | // The LSM9DS1 functions over both I2C or SPI. This library supports both. |
alevale32 | 5:8db82a61e052 | 27 | // But the interface mode used must be sent to the LSM9DS1 constructor. Use |
alevale32 | 5:8db82a61e052 | 28 | // one of these two as the first parameter of the constructor. |
alevale32 | 5:8db82a61e052 | 29 | enum interface_mode |
alevale32 | 5:8db82a61e052 | 30 | { |
alevale32 | 5:8db82a61e052 | 31 | IMU_MODE_SPI, |
alevale32 | 5:8db82a61e052 | 32 | IMU_MODE_I2C, |
alevale32 | 5:8db82a61e052 | 33 | }; |
alevale32 | 5:8db82a61e052 | 34 | |
alevale32 | 5:8db82a61e052 | 35 | // accel_scale defines all possible FSR's of the accelerometer: |
alevale32 | 5:8db82a61e052 | 36 | enum accel_scale |
alevale32 | 5:8db82a61e052 | 37 | { |
alevale32 | 5:8db82a61e052 | 38 | A_SCALE_2G, // 00: 2g |
alevale32 | 5:8db82a61e052 | 39 | A_SCALE_16G,// 01: 16g |
alevale32 | 5:8db82a61e052 | 40 | A_SCALE_4G, // 10: 4g |
alevale32 | 5:8db82a61e052 | 41 | A_SCALE_8G // 11: 8g |
alevale32 | 5:8db82a61e052 | 42 | }; |
alevale32 | 5:8db82a61e052 | 43 | |
alevale32 | 5:8db82a61e052 | 44 | // gyro_scale defines the possible full-scale ranges of the gyroscope: |
alevale32 | 5:8db82a61e052 | 45 | enum gyro_scale |
alevale32 | 5:8db82a61e052 | 46 | { |
alevale32 | 5:8db82a61e052 | 47 | G_SCALE_245DPS, // 00: 245 degrees per second |
alevale32 | 5:8db82a61e052 | 48 | G_SCALE_500DPS, // 01: 500 dps |
alevale32 | 5:8db82a61e052 | 49 | G_SCALE_2000DPS, // 11: 2000 dps |
alevale32 | 5:8db82a61e052 | 50 | }; |
alevale32 | 5:8db82a61e052 | 51 | |
alevale32 | 5:8db82a61e052 | 52 | // mag_scale defines all possible FSR's of the magnetometer: |
alevale32 | 5:8db82a61e052 | 53 | enum mag_scale |
alevale32 | 5:8db82a61e052 | 54 | { |
alevale32 | 5:8db82a61e052 | 55 | M_SCALE_4GS, // 00: 4Gs |
alevale32 | 5:8db82a61e052 | 56 | M_SCALE_8GS, // 01: 8Gs |
alevale32 | 5:8db82a61e052 | 57 | M_SCALE_12GS, // 10: 12Gs |
alevale32 | 5:8db82a61e052 | 58 | M_SCALE_16GS, // 11: 16Gs |
alevale32 | 5:8db82a61e052 | 59 | }; |
alevale32 | 5:8db82a61e052 | 60 | |
alevale32 | 5:8db82a61e052 | 61 | // gyro_odr defines all possible data rate/bandwidth combos of the gyro: |
alevale32 | 5:8db82a61e052 | 62 | enum gyro_odr |
alevale32 | 5:8db82a61e052 | 63 | { |
alevale32 | 5:8db82a61e052 | 64 | //! TODO |
alevale32 | 5:8db82a61e052 | 65 | G_ODR_PD, // Power down (0) |
alevale32 | 5:8db82a61e052 | 66 | G_ODR_149, // 14.9 Hz (1) |
alevale32 | 5:8db82a61e052 | 67 | G_ODR_595, // 59.5 Hz (2) |
alevale32 | 5:8db82a61e052 | 68 | G_ODR_119, // 119 Hz (3) |
alevale32 | 5:8db82a61e052 | 69 | G_ODR_238, // 238 Hz (4) |
alevale32 | 5:8db82a61e052 | 70 | G_ODR_476, // 476 Hz (5) |
alevale32 | 5:8db82a61e052 | 71 | G_ODR_952 // 952 Hz (6) |
alevale32 | 5:8db82a61e052 | 72 | }; |
alevale32 | 5:8db82a61e052 | 73 | // accel_oder defines all possible output data rates of the accelerometer: |
alevale32 | 5:8db82a61e052 | 74 | enum accel_odr |
alevale32 | 5:8db82a61e052 | 75 | { |
alevale32 | 5:8db82a61e052 | 76 | XL_POWER_DOWN, // Power-down mode (0x0) |
alevale32 | 5:8db82a61e052 | 77 | XL_ODR_10, // 10 Hz (0x1) |
alevale32 | 5:8db82a61e052 | 78 | XL_ODR_50, // 50 Hz (0x02) |
alevale32 | 5:8db82a61e052 | 79 | XL_ODR_119, // 119 Hz (0x3) |
alevale32 | 5:8db82a61e052 | 80 | XL_ODR_238, // 238 Hz (0x4) |
alevale32 | 5:8db82a61e052 | 81 | XL_ODR_476, // 476 Hz (0x5) |
alevale32 | 5:8db82a61e052 | 82 | XL_ODR_952 // 952 Hz (0x6) |
alevale32 | 5:8db82a61e052 | 83 | }; |
alevale32 | 5:8db82a61e052 | 84 | |
alevale32 | 5:8db82a61e052 | 85 | // accel_abw defines all possible anti-aliasing filter rates of the accelerometer: |
alevale32 | 5:8db82a61e052 | 86 | enum accel_abw |
alevale32 | 5:8db82a61e052 | 87 | { |
alevale32 | 5:8db82a61e052 | 88 | A_ABW_408, // 408 Hz (0x0) |
alevale32 | 5:8db82a61e052 | 89 | A_ABW_211, // 211 Hz (0x1) |
alevale32 | 5:8db82a61e052 | 90 | A_ABW_105, // 105 Hz (0x2) |
alevale32 | 5:8db82a61e052 | 91 | A_ABW_50, // 50 Hz (0x3) |
alevale32 | 5:8db82a61e052 | 92 | }; |
alevale32 | 5:8db82a61e052 | 93 | |
alevale32 | 5:8db82a61e052 | 94 | |
alevale32 | 5:8db82a61e052 | 95 | // mag_odr defines all possible output data rates of the magnetometer: |
alevale32 | 5:8db82a61e052 | 96 | enum mag_odr |
alevale32 | 5:8db82a61e052 | 97 | { |
alevale32 | 5:8db82a61e052 | 98 | M_ODR_0625, // 0.625 Hz (0) |
alevale32 | 5:8db82a61e052 | 99 | M_ODR_125, // 1.25 Hz (1) |
alevale32 | 5:8db82a61e052 | 100 | M_ODR_250, // 2.5 Hz (2) |
alevale32 | 5:8db82a61e052 | 101 | M_ODR_5, // 5 Hz (3) |
alevale32 | 5:8db82a61e052 | 102 | M_ODR_10, // 10 Hz (4) |
alevale32 | 5:8db82a61e052 | 103 | M_ODR_20, // 20 Hz (5) |
alevale32 | 5:8db82a61e052 | 104 | M_ODR_40, // 40 Hz (6) |
alevale32 | 5:8db82a61e052 | 105 | M_ODR_80 // 80 Hz (7) |
alevale32 | 5:8db82a61e052 | 106 | }; |
alevale32 | 5:8db82a61e052 | 107 | |
alevale32 | 5:8db82a61e052 | 108 | enum interrupt_select |
alevale32 | 5:8db82a61e052 | 109 | { |
alevale32 | 5:8db82a61e052 | 110 | XG_INT1 = INT1_CTRL, |
alevale32 | 5:8db82a61e052 | 111 | XG_INT2 = INT2_CTRL |
alevale32 | 5:8db82a61e052 | 112 | }; |
alevale32 | 5:8db82a61e052 | 113 | |
alevale32 | 5:8db82a61e052 | 114 | enum interrupt_generators |
alevale32 | 5:8db82a61e052 | 115 | { |
alevale32 | 5:8db82a61e052 | 116 | INT_DRDY_XL = (1<<0), // Accelerometer data ready (INT1 & INT2) |
alevale32 | 5:8db82a61e052 | 117 | INT_DRDY_G = (1<<1), // Gyroscope data ready (INT1 & INT2) |
alevale32 | 5:8db82a61e052 | 118 | INT1_BOOT = (1<<2), // Boot status (INT1) |
alevale32 | 5:8db82a61e052 | 119 | INT2_DRDY_TEMP = (1<<2),// Temp data ready (INT2) |
alevale32 | 5:8db82a61e052 | 120 | INT_FTH = (1<<3), // FIFO threshold interrupt (INT1 & INT2) |
alevale32 | 5:8db82a61e052 | 121 | INT_OVR = (1<<4), // Overrun interrupt (INT1 & INT2) |
alevale32 | 5:8db82a61e052 | 122 | INT_FSS5 = (1<<5), // FSS5 interrupt (INT1 & INT2) |
alevale32 | 5:8db82a61e052 | 123 | INT_IG_XL = (1<<6), // Accel interrupt generator (INT1) |
alevale32 | 5:8db82a61e052 | 124 | INT1_IG_G = (1<<7), // Gyro interrupt enable (INT1) |
alevale32 | 5:8db82a61e052 | 125 | INT2_INACT = (1<<7), // Inactivity interrupt output (INT2) |
alevale32 | 5:8db82a61e052 | 126 | }; |
alevale32 | 5:8db82a61e052 | 127 | |
alevale32 | 5:8db82a61e052 | 128 | enum accel_interrupt_generator |
alevale32 | 5:8db82a61e052 | 129 | { |
alevale32 | 5:8db82a61e052 | 130 | XLIE_XL = (1<<0), |
alevale32 | 5:8db82a61e052 | 131 | XHIE_XL = (1<<1), |
alevale32 | 5:8db82a61e052 | 132 | YLIE_XL = (1<<2), |
alevale32 | 5:8db82a61e052 | 133 | YHIE_XL = (1<<3), |
alevale32 | 5:8db82a61e052 | 134 | ZLIE_XL = (1<<4), |
alevale32 | 5:8db82a61e052 | 135 | ZHIE_XL = (1<<5), |
alevale32 | 5:8db82a61e052 | 136 | GEN_6D = (1<<6) |
alevale32 | 5:8db82a61e052 | 137 | }; |
alevale32 | 5:8db82a61e052 | 138 | |
alevale32 | 5:8db82a61e052 | 139 | enum gyro_interrupt_generator |
alevale32 | 5:8db82a61e052 | 140 | { |
alevale32 | 5:8db82a61e052 | 141 | XLIE_G = (1<<0), |
alevale32 | 5:8db82a61e052 | 142 | XHIE_G = (1<<1), |
alevale32 | 5:8db82a61e052 | 143 | YLIE_G = (1<<2), |
alevale32 | 5:8db82a61e052 | 144 | YHIE_G = (1<<3), |
alevale32 | 5:8db82a61e052 | 145 | ZLIE_G = (1<<4), |
alevale32 | 5:8db82a61e052 | 146 | ZHIE_G = (1<<5) |
alevale32 | 5:8db82a61e052 | 147 | }; |
alevale32 | 5:8db82a61e052 | 148 | |
alevale32 | 5:8db82a61e052 | 149 | enum mag_interrupt_generator |
alevale32 | 5:8db82a61e052 | 150 | { |
alevale32 | 5:8db82a61e052 | 151 | ZIEN = (1<<5), |
alevale32 | 5:8db82a61e052 | 152 | YIEN = (1<<6), |
alevale32 | 5:8db82a61e052 | 153 | XIEN = (1<<7) |
alevale32 | 5:8db82a61e052 | 154 | }; |
alevale32 | 5:8db82a61e052 | 155 | |
alevale32 | 5:8db82a61e052 | 156 | enum h_lactive |
alevale32 | 5:8db82a61e052 | 157 | { |
alevale32 | 5:8db82a61e052 | 158 | INT_ACTIVE_HIGH, |
alevale32 | 5:8db82a61e052 | 159 | INT_ACTIVE_LOW |
alevale32 | 5:8db82a61e052 | 160 | }; |
alevale32 | 5:8db82a61e052 | 161 | |
alevale32 | 5:8db82a61e052 | 162 | enum pp_od |
alevale32 | 5:8db82a61e052 | 163 | { |
alevale32 | 5:8db82a61e052 | 164 | INT_PUSH_PULL, |
alevale32 | 5:8db82a61e052 | 165 | INT_OPEN_DRAIN |
alevale32 | 5:8db82a61e052 | 166 | }; |
alevale32 | 5:8db82a61e052 | 167 | |
alevale32 | 5:8db82a61e052 | 168 | enum fifoMode_type |
alevale32 | 5:8db82a61e052 | 169 | { |
alevale32 | 5:8db82a61e052 | 170 | FIFO_OFF = 0, |
alevale32 | 5:8db82a61e052 | 171 | FIFO_THS = 1, |
alevale32 | 5:8db82a61e052 | 172 | FIFO_CONT_TRIGGER = 3, |
alevale32 | 5:8db82a61e052 | 173 | FIFO_OFF_TRIGGER = 4, |
alevale32 | 5:8db82a61e052 | 174 | FIFO_CONT = 5 |
alevale32 | 5:8db82a61e052 | 175 | }; |
alevale32 | 5:8db82a61e052 | 176 | |
alevale32 | 5:8db82a61e052 | 177 | struct gyroSettings |
alevale32 | 5:8db82a61e052 | 178 | { |
alevale32 | 5:8db82a61e052 | 179 | // Gyroscope settings: |
alevale32 | 5:8db82a61e052 | 180 | uint8_t enabled; |
alevale32 | 5:8db82a61e052 | 181 | uint16_t scale; // Changed this to 16-bit |
alevale32 | 5:8db82a61e052 | 182 | uint8_t sampleRate; |
alevale32 | 5:8db82a61e052 | 183 | // New gyro stuff: |
alevale32 | 5:8db82a61e052 | 184 | uint8_t bandwidth; |
alevale32 | 5:8db82a61e052 | 185 | uint8_t lowPowerEnable; |
alevale32 | 5:8db82a61e052 | 186 | uint8_t HPFEnable; |
alevale32 | 5:8db82a61e052 | 187 | uint8_t HPFCutoff; |
alevale32 | 5:8db82a61e052 | 188 | uint8_t flipX; |
alevale32 | 5:8db82a61e052 | 189 | uint8_t flipY; |
alevale32 | 5:8db82a61e052 | 190 | uint8_t flipZ; |
alevale32 | 5:8db82a61e052 | 191 | uint8_t orientation; |
alevale32 | 5:8db82a61e052 | 192 | uint8_t enableX; |
alevale32 | 5:8db82a61e052 | 193 | uint8_t enableY; |
alevale32 | 5:8db82a61e052 | 194 | uint8_t enableZ; |
alevale32 | 5:8db82a61e052 | 195 | uint8_t latchInterrupt; |
alevale32 | 5:8db82a61e052 | 196 | }; |
alevale32 | 5:8db82a61e052 | 197 | |
alevale32 | 5:8db82a61e052 | 198 | struct deviceSettings |
alevale32 | 5:8db82a61e052 | 199 | { |
alevale32 | 5:8db82a61e052 | 200 | uint8_t commInterface; // Can be I2C, SPI 4-wire or SPI 3-wire |
alevale32 | 5:8db82a61e052 | 201 | uint8_t agAddress; // I2C address or SPI CS pin |
alevale32 | 5:8db82a61e052 | 202 | uint8_t mAddress; // I2C address or SPI CS pin |
alevale32 | 5:8db82a61e052 | 203 | }; |
alevale32 | 5:8db82a61e052 | 204 | |
alevale32 | 5:8db82a61e052 | 205 | struct accelSettings |
alevale32 | 5:8db82a61e052 | 206 | { |
alevale32 | 5:8db82a61e052 | 207 | // Accelerometer settings: |
alevale32 | 5:8db82a61e052 | 208 | uint8_t enabled; |
alevale32 | 5:8db82a61e052 | 209 | uint8_t scale; |
alevale32 | 5:8db82a61e052 | 210 | uint8_t sampleRate; |
alevale32 | 5:8db82a61e052 | 211 | // New accel stuff: |
alevale32 | 5:8db82a61e052 | 212 | uint8_t enableX; |
alevale32 | 5:8db82a61e052 | 213 | uint8_t enableY; |
alevale32 | 5:8db82a61e052 | 214 | uint8_t enableZ; |
alevale32 | 5:8db82a61e052 | 215 | int8_t bandwidth; |
alevale32 | 5:8db82a61e052 | 216 | uint8_t highResEnable; |
alevale32 | 5:8db82a61e052 | 217 | uint8_t highResBandwidth; |
alevale32 | 5:8db82a61e052 | 218 | }; |
alevale32 | 5:8db82a61e052 | 219 | |
alevale32 | 5:8db82a61e052 | 220 | struct magSettings |
alevale32 | 5:8db82a61e052 | 221 | { |
alevale32 | 5:8db82a61e052 | 222 | // Magnetometer settings: |
alevale32 | 5:8db82a61e052 | 223 | uint8_t enabled; |
alevale32 | 5:8db82a61e052 | 224 | uint8_t scale; |
alevale32 | 5:8db82a61e052 | 225 | uint8_t sampleRate; |
alevale32 | 5:8db82a61e052 | 226 | // New mag stuff: |
alevale32 | 5:8db82a61e052 | 227 | uint8_t tempCompensationEnable; |
alevale32 | 5:8db82a61e052 | 228 | uint8_t XYPerformance; |
alevale32 | 5:8db82a61e052 | 229 | uint8_t ZPerformance; |
alevale32 | 5:8db82a61e052 | 230 | uint8_t lowPowerEnable; |
alevale32 | 5:8db82a61e052 | 231 | uint8_t operatingMode; |
alevale32 | 5:8db82a61e052 | 232 | }; |
alevale32 | 5:8db82a61e052 | 233 | |
alevale32 | 5:8db82a61e052 | 234 | struct temperatureSettings |
alevale32 | 5:8db82a61e052 | 235 | { |
alevale32 | 5:8db82a61e052 | 236 | // Temperature settings |
alevale32 | 5:8db82a61e052 | 237 | uint8_t enabled; |
alevale32 | 5:8db82a61e052 | 238 | }; |
alevale32 | 5:8db82a61e052 | 239 | |
alevale32 | 5:8db82a61e052 | 240 | struct IMUSettings |
alevale32 | 5:8db82a61e052 | 241 | { |
alevale32 | 5:8db82a61e052 | 242 | deviceSettings device; |
alevale32 | 5:8db82a61e052 | 243 | |
alevale32 | 5:8db82a61e052 | 244 | gyroSettings gyro; |
alevale32 | 5:8db82a61e052 | 245 | accelSettings accel; |
alevale32 | 5:8db82a61e052 | 246 | magSettings mag; |
alevale32 | 5:8db82a61e052 | 247 | |
alevale32 | 5:8db82a61e052 | 248 | temperatureSettings temp; |
alevale32 | 5:8db82a61e052 | 249 | }; |
alevale32 | 5:8db82a61e052 | 250 | |
alevale32 | 5:8db82a61e052 | 251 | #endif |