L3GD20 Library using FIFO and Interrupt

Fork of L3GD20_SPI by Tatsuki Fukuda

Committer:
lelect
Date:
Tue May 13 09:56:43 2014 +0000
Revision:
3:6e935e7cec72
Parent:
0:175bf093daa8
.....I had mistaken the mosi and miso.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lelect 0:175bf093daa8 1 #ifndef L3GD20_RESISTER_MAP
lelect 0:175bf093daa8 2 #define L3GD20_RESISTER_MAP
lelect 0:175bf093daa8 3 typedef struct {
lelect 0:175bf093daa8 4 int16_t X;
lelect 0:175bf093daa8 5 int16_t Y;
lelect 0:175bf093daa8 6 int16_t Z;
lelect 0:175bf093daa8 7 float x;
lelect 0:175bf093daa8 8 float y;
lelect 0:175bf093daa8 9 float z;
lelect 0:175bf093daa8 10 } anglerrates;
lelect 0:175bf093daa8 11
lelect 0:175bf093daa8 12 union CTRL_REG1 {
lelect 0:175bf093daa8 13 int word;
lelect 0:175bf093daa8 14 uint8_t byte;
lelect 0:175bf093daa8 15 struct {
lelect 0:175bf093daa8 16 unsigned Yen:1;
lelect 0:175bf093daa8 17 unsigned Xen:1;
lelect 0:175bf093daa8 18 unsigned Zen:1;
lelect 0:175bf093daa8 19 unsigned PD:1;
lelect 0:175bf093daa8 20 unsigned BW0:1;
lelect 0:175bf093daa8 21 unsigned BW1:1;
lelect 0:175bf093daa8 22 unsigned DR0:1;
lelect 0:175bf093daa8 23 unsigned DR1:1;
lelect 0:175bf093daa8 24 } b;
lelect 0:175bf093daa8 25 struct {
lelect 0:175bf093daa8 26 unsigned Enable:3;
lelect 0:175bf093daa8 27 unsigned PD:1;
lelect 0:175bf093daa8 28 unsigned BW:2;
lelect 0:175bf093daa8 29 unsigned DR:2;
lelect 0:175bf093daa8 30 } B;
lelect 0:175bf093daa8 31 };
lelect 0:175bf093daa8 32 union CTRL_REG2 {
lelect 0:175bf093daa8 33 int word;
lelect 0:175bf093daa8 34 uint8_t byte;
lelect 0:175bf093daa8 35 struct {
lelect 0:175bf093daa8 36 unsigned HPCF0:1;
lelect 0:175bf093daa8 37 unsigned HPCF1:1;
lelect 0:175bf093daa8 38 unsigned HPCF2:1;
lelect 0:175bf093daa8 39 unsigned HPCF3:1;
lelect 0:175bf093daa8 40 unsigned HPM0:1;
lelect 0:175bf093daa8 41 unsigned HPM1:1;
lelect 0:175bf093daa8 42 unsigned :2;
lelect 0:175bf093daa8 43 } b;
lelect 0:175bf093daa8 44 struct {
lelect 0:175bf093daa8 45 unsigned HPCF:4;
lelect 0:175bf093daa8 46 unsigned HPM:2;
lelect 0:175bf093daa8 47 unsigned none:2;
lelect 0:175bf093daa8 48 } B;
lelect 0:175bf093daa8 49 };
lelect 0:175bf093daa8 50 union CTRL_REG3 {
lelect 0:175bf093daa8 51 int word;
lelect 0:175bf093daa8 52 uint8_t byte;
lelect 0:175bf093daa8 53 struct {
lelect 0:175bf093daa8 54 unsigned I2_Empty:1;
lelect 0:175bf093daa8 55 unsigned I2_ORun:1;
lelect 0:175bf093daa8 56 unsigned I2_WTM:1;
lelect 0:175bf093daa8 57 unsigned I2_DRDY:1;
lelect 0:175bf093daa8 58 unsigned PP_OD:1;
lelect 0:175bf093daa8 59 unsigned H_Lactive:1;
lelect 0:175bf093daa8 60 unsigned I1_Boot:1;
lelect 0:175bf093daa8 61 unsigned I1_Int1:1;
lelect 0:175bf093daa8 62 } b;
lelect 0:175bf093daa8 63 };
lelect 0:175bf093daa8 64 union CTRL_REG4 {
lelect 0:175bf093daa8 65 int word;
lelect 0:175bf093daa8 66 uint8_t byte;
lelect 0:175bf093daa8 67 struct {
lelect 0:175bf093daa8 68 unsigned SIM:1;
lelect 0:175bf093daa8 69 unsigned none:2;
lelect 0:175bf093daa8 70 unsigned nil:1;
lelect 0:175bf093daa8 71 unsigned FS0:1;
lelect 0:175bf093daa8 72 unsigned FS1:1;
lelect 0:175bf093daa8 73 unsigned BLE:1;
lelect 0:175bf093daa8 74 unsigned BDU:1;
lelect 0:175bf093daa8 75 } b;
lelect 0:175bf093daa8 76 struct {
lelect 0:175bf093daa8 77 unsigned SIM:1;
lelect 0:175bf093daa8 78 unsigned none:2;
lelect 0:175bf093daa8 79 unsigned nil:1;
lelect 0:175bf093daa8 80 unsigned FS:2;
lelect 0:175bf093daa8 81 unsigned BLE:1;
lelect 0:175bf093daa8 82 unsigned BDU:1;
lelect 0:175bf093daa8 83 } B;
lelect 0:175bf093daa8 84 };
lelect 0:175bf093daa8 85 union CTRL_REG5 {
lelect 0:175bf093daa8 86 int word;
lelect 0:175bf093daa8 87 uint8_t byte;
lelect 0:175bf093daa8 88 struct {
lelect 0:175bf093daa8 89 unsigned Out_Sel0:1;
lelect 0:175bf093daa8 90 unsigned Out_Sel1:1;
lelect 0:175bf093daa8 91 unsigned INT_Sel0:1;
lelect 0:175bf093daa8 92 unsigned INT_Sel1:1;
lelect 0:175bf093daa8 93 unsigned HPen:1;
lelect 0:175bf093daa8 94 unsigned nil:1;
lelect 0:175bf093daa8 95 unsigned FIFO_EN:1;
lelect 0:175bf093daa8 96 unsigned BOOT:1;
lelect 0:175bf093daa8 97 } b;
lelect 0:175bf093daa8 98 struct {
lelect 0:175bf093daa8 99 unsigned Out_Sel:2;
lelect 0:175bf093daa8 100 unsigned INT_Sel:2;
lelect 0:175bf093daa8 101 unsigned HPen:1;
lelect 0:175bf093daa8 102 unsigned nil:1;
lelect 0:175bf093daa8 103 unsigned FIFO_EN:1;
lelect 0:175bf093daa8 104 unsigned BOOT:1;
lelect 0:175bf093daa8 105 } B;
lelect 0:175bf093daa8 106 };
lelect 0:175bf093daa8 107 union REF_DATACAP {
lelect 0:175bf093daa8 108 int word;
lelect 0:175bf093daa8 109 uint8_t byte;
lelect 0:175bf093daa8 110 struct {
lelect 0:175bf093daa8 111 unsigned Ref0:1;
lelect 0:175bf093daa8 112 unsigned Ref1:1;
lelect 0:175bf093daa8 113 unsigned Ref2:1;
lelect 0:175bf093daa8 114 unsigned Ref3:1;
lelect 0:175bf093daa8 115 unsigned Ref4:1;
lelect 0:175bf093daa8 116 unsigned Ref5:1;
lelect 0:175bf093daa8 117 unsigned Ref6:1;
lelect 0:175bf093daa8 118 unsigned Ref7:1;
lelect 0:175bf093daa8 119 } b;
lelect 0:175bf093daa8 120 struct {
lelect 0:175bf093daa8 121 unsigned Ref:8;
lelect 0:175bf093daa8 122 } B;
lelect 0:175bf093daa8 123 };
lelect 0:175bf093daa8 124 union OUT_TEMP {
lelect 0:175bf093daa8 125 int word;
lelect 0:175bf093daa8 126 uint8_t byte;
lelect 0:175bf093daa8 127 struct {
lelect 0:175bf093daa8 128 unsigned Temp0:1;
lelect 0:175bf093daa8 129 unsigned Temp1:1;
lelect 0:175bf093daa8 130 unsigned Temp2:1;
lelect 0:175bf093daa8 131 unsigned Temp3:1;
lelect 0:175bf093daa8 132 unsigned Temp4:1;
lelect 0:175bf093daa8 133 unsigned Temp5:1;
lelect 0:175bf093daa8 134 unsigned Temp6:1;
lelect 0:175bf093daa8 135 unsigned Temp7:1;
lelect 0:175bf093daa8 136 } b;
lelect 0:175bf093daa8 137 struct {
lelect 0:175bf093daa8 138 unsigned Temp:8;
lelect 0:175bf093daa8 139 } B;
lelect 0:175bf093daa8 140 };
lelect 0:175bf093daa8 141 union STATUS_REG {
lelect 0:175bf093daa8 142 int word;
lelect 0:175bf093daa8 143 uint8_t byte;
lelect 0:175bf093daa8 144 struct {
lelect 0:175bf093daa8 145 unsigned XDA:1;
lelect 0:175bf093daa8 146 unsigned YDA:1;
lelect 0:175bf093daa8 147 unsigned ZDA:1;
lelect 0:175bf093daa8 148 unsigned ZYXDA:1;
lelect 0:175bf093daa8 149 unsigned XOR:1;
lelect 0:175bf093daa8 150 unsigned YOR:1;
lelect 0:175bf093daa8 151 unsigned ZOR:1;
lelect 0:175bf093daa8 152 unsigned XYZOR:1;
lelect 0:175bf093daa8 153 } b;
lelect 0:175bf093daa8 154 };
lelect 0:175bf093daa8 155 union FIFO_CTRL_REG {
lelect 0:175bf093daa8 156 int word;
lelect 0:175bf093daa8 157 uint8_t byte;
lelect 0:175bf093daa8 158 struct {
lelect 0:175bf093daa8 159 unsigned WTM0:1;
lelect 0:175bf093daa8 160 unsigned WTM1:1;
lelect 0:175bf093daa8 161 unsigned WTM2:1;
lelect 0:175bf093daa8 162 unsigned WTM3:1;
lelect 0:175bf093daa8 163 unsigned WTM4:1;
lelect 0:175bf093daa8 164 unsigned FM0:1;
lelect 0:175bf093daa8 165 unsigned FM1:1;
lelect 0:175bf093daa8 166 unsigned FM2:1;
lelect 0:175bf093daa8 167 } b;
lelect 0:175bf093daa8 168 struct {
lelect 0:175bf093daa8 169 unsigned WTM:5;
lelect 0:175bf093daa8 170 unsigned FM:3;
lelect 0:175bf093daa8 171 } B;
lelect 0:175bf093daa8 172 };
lelect 0:175bf093daa8 173 union FIFO_SRC_REG {
lelect 0:175bf093daa8 174 int word;
lelect 0:175bf093daa8 175 uint8_t byte;
lelect 0:175bf093daa8 176 struct {
lelect 0:175bf093daa8 177 unsigned FSS0:1;
lelect 0:175bf093daa8 178 unsigned FSS1:1;
lelect 0:175bf093daa8 179 unsigned FSS2:1;
lelect 0:175bf093daa8 180 unsigned FSS3:1;
lelect 0:175bf093daa8 181 unsigned FSS4:1;
lelect 0:175bf093daa8 182 unsigned EMPTY:1;
lelect 0:175bf093daa8 183 unsigned OVR:1;
lelect 0:175bf093daa8 184 unsigned WTM:1;
lelect 0:175bf093daa8 185 } b;
lelect 0:175bf093daa8 186 struct {
lelect 0:175bf093daa8 187 unsigned FSS:5;
lelect 0:175bf093daa8 188 unsigned EMPTY:1;
lelect 0:175bf093daa8 189 unsigned OVR:1;
lelect 0:175bf093daa8 190 unsigned WTM:1;
lelect 0:175bf093daa8 191 } B;
lelect 0:175bf093daa8 192 };
lelect 0:175bf093daa8 193 union INT1_CFG {
lelect 0:175bf093daa8 194 int word;
lelect 0:175bf093daa8 195 uint8_t byte;
lelect 0:175bf093daa8 196 struct {
lelect 0:175bf093daa8 197 unsigned XLIE:1;
lelect 0:175bf093daa8 198 unsigned XHIE:1;
lelect 0:175bf093daa8 199 unsigned YLIE:1;
lelect 0:175bf093daa8 200 unsigned YHIE:1;
lelect 0:175bf093daa8 201 unsigned ZLIE:1;
lelect 0:175bf093daa8 202 unsigned ZHIE:1;
lelect 0:175bf093daa8 203 unsigned LIR:1;
lelect 0:175bf093daa8 204 unsigned ANDOR:1;
lelect 0:175bf093daa8 205 } b;
lelect 0:175bf093daa8 206 };
lelect 0:175bf093daa8 207 union INT1_TSH_XH {
lelect 0:175bf093daa8 208 int word;
lelect 0:175bf093daa8 209 uint8_t byte;
lelect 0:175bf093daa8 210 struct {
lelect 0:175bf093daa8 211 unsigned THSX8:1;
lelect 0:175bf093daa8 212 unsigned THSX9:1;
lelect 0:175bf093daa8 213 unsigned THSX10:1;
lelect 0:175bf093daa8 214 unsigned THSX11:1;
lelect 0:175bf093daa8 215 unsigned THSX12:1;
lelect 0:175bf093daa8 216 unsigned THSX13:1;
lelect 0:175bf093daa8 217 unsigned THSX14:1;
lelect 0:175bf093daa8 218 unsigned nil:1;
lelect 0:175bf093daa8 219 } b;
lelect 0:175bf093daa8 220 struct {
lelect 0:175bf093daa8 221 unsigned THSH:7;
lelect 0:175bf093daa8 222 } B;
lelect 0:175bf093daa8 223 };
lelect 0:175bf093daa8 224 union INT1_TSH_XL {
lelect 0:175bf093daa8 225 int word;
lelect 0:175bf093daa8 226 uint8_t byte;
lelect 0:175bf093daa8 227 struct {
lelect 0:175bf093daa8 228 unsigned THSX0:1;
lelect 0:175bf093daa8 229 unsigned THSX1:1;
lelect 0:175bf093daa8 230 unsigned THSX2:1;
lelect 0:175bf093daa8 231 unsigned THSX3:1;
lelect 0:175bf093daa8 232 unsigned THSX4:1;
lelect 0:175bf093daa8 233 unsigned THSX5:1;
lelect 0:175bf093daa8 234 unsigned THSX6:1;
lelect 0:175bf093daa8 235 unsigned THSX7:1;
lelect 0:175bf093daa8 236 } b;
lelect 0:175bf093daa8 237 struct {
lelect 0:175bf093daa8 238 unsigned THSL:7;
lelect 0:175bf093daa8 239 } B;
lelect 0:175bf093daa8 240 };
lelect 0:175bf093daa8 241 union INT1_TSH_YH {
lelect 0:175bf093daa8 242 int word;
lelect 0:175bf093daa8 243 uint8_t byte;
lelect 0:175bf093daa8 244 struct {
lelect 0:175bf093daa8 245 unsigned THSY8:1;
lelect 0:175bf093daa8 246 unsigned THSY9:1;
lelect 0:175bf093daa8 247 unsigned THSY10:1;
lelect 0:175bf093daa8 248 unsigned THSY11:1;
lelect 0:175bf093daa8 249 unsigned THSY12:1;
lelect 0:175bf093daa8 250 unsigned THSY13:1;
lelect 0:175bf093daa8 251 unsigned THSY14:1;
lelect 0:175bf093daa8 252 unsigned nil:1;
lelect 0:175bf093daa8 253 } b;
lelect 0:175bf093daa8 254 struct {
lelect 0:175bf093daa8 255 unsigned THSH:7;
lelect 0:175bf093daa8 256 } B;
lelect 0:175bf093daa8 257 };
lelect 0:175bf093daa8 258 union INT1_TSH_YL {
lelect 0:175bf093daa8 259 int word;
lelect 0:175bf093daa8 260 uint8_t byte;
lelect 0:175bf093daa8 261 struct {
lelect 0:175bf093daa8 262 unsigned THSY0:1;
lelect 0:175bf093daa8 263 unsigned THSY1:1;
lelect 0:175bf093daa8 264 unsigned THSY2:1;
lelect 0:175bf093daa8 265 unsigned THSY3:1;
lelect 0:175bf093daa8 266 unsigned THSY4:1;
lelect 0:175bf093daa8 267 unsigned THSY5:1;
lelect 0:175bf093daa8 268 unsigned THSY6:1;
lelect 0:175bf093daa8 269 unsigned THSY7:1;
lelect 0:175bf093daa8 270 } b;
lelect 0:175bf093daa8 271 struct {
lelect 0:175bf093daa8 272 unsigned THSL:7;
lelect 0:175bf093daa8 273 } B;
lelect 0:175bf093daa8 274 };
lelect 0:175bf093daa8 275 union INT1_TSH_ZH {
lelect 0:175bf093daa8 276 int word;
lelect 0:175bf093daa8 277 uint8_t byte;
lelect 0:175bf093daa8 278 struct {
lelect 0:175bf093daa8 279 unsigned THSZ8:1;
lelect 0:175bf093daa8 280 unsigned THSZ9:1;
lelect 0:175bf093daa8 281 unsigned THSZ10:1;
lelect 0:175bf093daa8 282 unsigned THSZ11:1;
lelect 0:175bf093daa8 283 unsigned THSZ12:1;
lelect 0:175bf093daa8 284 unsigned THSZ13:1;
lelect 0:175bf093daa8 285 unsigned THSZ14:1;
lelect 0:175bf093daa8 286 unsigned nil:1;
lelect 0:175bf093daa8 287 } b;
lelect 0:175bf093daa8 288 struct {
lelect 0:175bf093daa8 289 unsigned THSH:7;
lelect 0:175bf093daa8 290 } B;
lelect 0:175bf093daa8 291 };
lelect 0:175bf093daa8 292 union INT1_TSH_ZL {
lelect 0:175bf093daa8 293 int word;
lelect 0:175bf093daa8 294 uint8_t byte;
lelect 0:175bf093daa8 295 struct {
lelect 0:175bf093daa8 296 unsigned THSZ0:1;
lelect 0:175bf093daa8 297 unsigned THSZ1:1;
lelect 0:175bf093daa8 298 unsigned THSZ2:1;
lelect 0:175bf093daa8 299 unsigned THSZ3:1;
lelect 0:175bf093daa8 300 unsigned THSZ4:1;
lelect 0:175bf093daa8 301 unsigned THSZ5:1;
lelect 0:175bf093daa8 302 unsigned THSZ6:1;
lelect 0:175bf093daa8 303 unsigned THSZ7:1;
lelect 0:175bf093daa8 304 } b;
lelect 0:175bf093daa8 305 struct {
lelect 0:175bf093daa8 306 unsigned THSL:7;
lelect 0:175bf093daa8 307 } B;
lelect 0:175bf093daa8 308 };
lelect 0:175bf093daa8 309 union INT1_DURATION {
lelect 0:175bf093daa8 310 int word;
lelect 0:175bf093daa8 311 uint8_t byte;
lelect 0:175bf093daa8 312 struct {
lelect 0:175bf093daa8 313 unsigned D0:1;
lelect 0:175bf093daa8 314 unsigned D1:1;
lelect 0:175bf093daa8 315 unsigned D2:1;
lelect 0:175bf093daa8 316 unsigned D3:1;
lelect 0:175bf093daa8 317 unsigned D4:1;
lelect 0:175bf093daa8 318 unsigned D5:1;
lelect 0:175bf093daa8 319 unsigned D6:1;
lelect 0:175bf093daa8 320 unsigned WAIT:1;
lelect 0:175bf093daa8 321 } b;
lelect 0:175bf093daa8 322 struct {
lelect 0:175bf093daa8 323 unsigned D:6;
lelect 0:175bf093daa8 324 unsigned WAIT:1;
lelect 0:175bf093daa8 325 } B;
lelect 0:175bf093daa8 326 };
lelect 0:175bf093daa8 327 /*
lelect 0:175bf093daa8 328 #define L3GD20_READ 0x80
lelect 0:175bf093daa8 329 #define L3GD20_WHO_AM_I 0x0F
lelect 0:175bf093daa8 330 #define L3GD20_CTRL_REG1 0x20
lelect 0:175bf093daa8 331 #define L3GD20_CTRL_REG2 0x21
lelect 0:175bf093daa8 332 #define L3GD20_CTRL_REG3 0x22
lelect 0:175bf093daa8 333 #define L3GD20_CTRL_REG4 0x23
lelect 0:175bf093daa8 334 #define L3GD20_CTRL_REG5 0x24
lelect 0:175bf093daa8 335 #define L3GD20_REFERENCE 0x25
lelect 0:175bf093daa8 336 #define L3GD20_OUT_TEMP 0x26
lelect 0:175bf093daa8 337 #define L3GD20_STATUS_REG 0x27
lelect 0:175bf093daa8 338 #define L3GD20_OUT_X_L 0x28
lelect 0:175bf093daa8 339 #define L3GD20_OUT_X_H 0x29
lelect 0:175bf093daa8 340 #define L3GD20_OUT_Y_L 0x2A
lelect 0:175bf093daa8 341 #define L3GD20_OUT_Y_H 0x2B
lelect 0:175bf093daa8 342 #define L3GD20_OUT_Z_L 0x2C
lelect 0:175bf093daa8 343 #define L3GD20_OUT_Z_H 0x2D
lelect 0:175bf093daa8 344 #define L3GD20_FIFO_CTRL_REG 0x2E
lelect 0:175bf093daa8 345 #define L3GD20_FIFO_SRC_REG 0x2F
lelect 0:175bf093daa8 346 #define L3GD20_INT1_CFG 0x30
lelect 0:175bf093daa8 347 #define L3GD20_INT1_SRC 0x31
lelect 0:175bf093daa8 348 #define L3GD20_INT1_THS_XH 0x32
lelect 0:175bf093daa8 349 #define L3GD20_INT1_THS_XL 0x33
lelect 0:175bf093daa8 350 #define L3GD20_INT1_THS_YH 0x34
lelect 0:175bf093daa8 351 #define L3GD20_INT1_THS_YL 0x35
lelect 0:175bf093daa8 352 #define L3GD20_INT1_THS_ZH 0x36
lelect 0:175bf093daa8 353 #define L3GD20_INT1_THS_ZL 0x37
lelect 0:175bf093daa8 354 #define L3GD20_INT1_DURATION 0x38
lelect 0:175bf093daa8 355 */
lelect 0:175bf093daa8 356
lelect 0:175bf093daa8 357 #endif