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