Code for break using sensor
Dependencies: SEGGER_RTT mbed-dev
Fork of DigitalOut_HelloWorld by
MPU9250.h@3:c058c2f600bb, 2017-12-18 (annotated)
- Committer:
- Anythingconnected
- Date:
- Mon Dec 18 10:41:06 2017 +0000
- Revision:
- 3:c058c2f600bb
- Parent:
- 2:8f53e653f9b1
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Anythingconnected | 2:8f53e653f9b1 | 1 | #ifndef SENSORS_MPU9250_H |
Anythingconnected | 2:8f53e653f9b1 | 2 | #define SENSORS_MPU9250_H |
Anythingconnected | 2:8f53e653f9b1 | 3 | #include "mbed.h" |
Anythingconnected | 2:8f53e653f9b1 | 4 | |
Anythingconnected | 2:8f53e653f9b1 | 5 | //InvenSense MPU-9250 |
Anythingconnected | 2:8f53e653f9b1 | 6 | //Driver for the nrf51822 mcu |
Anythingconnected | 2:8f53e653f9b1 | 7 | |
Anythingconnected | 2:8f53e653f9b1 | 8 | #define SHORT_SWAP_BYTE(s) (((s & 0xff) << 8) | ((s & 0xff00) >> 8)) |
Anythingconnected | 2:8f53e653f9b1 | 9 | |
Anythingconnected | 2:8f53e653f9b1 | 10 | |
Anythingconnected | 2:8f53e653f9b1 | 11 | #define MPU9250_ID 0x71 |
Anythingconnected | 2:8f53e653f9b1 | 12 | #define MPU9250_REG_ID 0x75 //Should read out MPU9250_ID |
Anythingconnected | 2:8f53e653f9b1 | 13 | |
Anythingconnected | 2:8f53e653f9b1 | 14 | |
Anythingconnected | 2:8f53e653f9b1 | 15 | #define MPU9250_REG_GYRO_X_H 0x43 |
Anythingconnected | 2:8f53e653f9b1 | 16 | #define MPU9250_REG_GYRO_X_L 0x44 |
Anythingconnected | 2:8f53e653f9b1 | 17 | #define MPU9250_REG_GYRO_Y_H 0x45 |
Anythingconnected | 2:8f53e653f9b1 | 18 | #define MPU9250_REG_GYRO_Y_L 0x46 |
Anythingconnected | 2:8f53e653f9b1 | 19 | #define MPU9250_REG_GYRO_Z_H 0x47 |
Anythingconnected | 2:8f53e653f9b1 | 20 | #define MPU9250_REG_GYRO_Z_L 0x48 |
Anythingconnected | 2:8f53e653f9b1 | 21 | #define MPU9250_REG_ACCEL_X_H 0x3B |
Anythingconnected | 2:8f53e653f9b1 | 22 | #define MPU9250_REG_ACCEL_X_L 0x3C |
Anythingconnected | 2:8f53e653f9b1 | 23 | #define MPU9250_REG_ACCEL_Y_H 0x3D |
Anythingconnected | 2:8f53e653f9b1 | 24 | #define MPU9250_REG_ACCEL_Y_L 0x3E |
Anythingconnected | 2:8f53e653f9b1 | 25 | #define MPU9250_REG_ACCEL_Z_H 0x3F |
Anythingconnected | 2:8f53e653f9b1 | 26 | #define MPU9250_REG_ACCEL_Z_L 0x40 |
Anythingconnected | 2:8f53e653f9b1 | 27 | #define MPU9250_REG_TEMP_H 0x41 |
Anythingconnected | 2:8f53e653f9b1 | 28 | #define MPU9250_REG_TEMP_L 0x42 |
Anythingconnected | 2:8f53e653f9b1 | 29 | |
Anythingconnected | 2:8f53e653f9b1 | 30 | #define MPU9250_REG_CFG 0x1A |
Anythingconnected | 2:8f53e653f9b1 | 31 | #define MPU9250_REG_GYROCFG 0x1B |
Anythingconnected | 2:8f53e653f9b1 | 32 | #define MPU9250_REG_ACCELCFG 0x1C |
Anythingconnected | 2:8f53e653f9b1 | 33 | #define MPU9250_REG ACCELCFG2 0x1D |
Anythingconnected | 2:8f53e653f9b1 | 34 | #define MPU9250_REG_MOTDETSTAT 0x61 |
Anythingconnected | 2:8f53e653f9b1 | 35 | #define MPU9250_REG_MOTDETCTRL 0x69 |
Anythingconnected | 2:8f53e653f9b1 | 36 | #define MPU9250_REG_USRCTRL 0x6A |
Anythingconnected | 2:8f53e653f9b1 | 37 | #define MPU9250_REG_PWR1 0x6B |
Anythingconnected | 2:8f53e653f9b1 | 38 | #define MPU9250_REG_PWR2 0x6C |
Anythingconnected | 2:8f53e653f9b1 | 39 | #define MPU9250_REG_INTCFG 0x37 |
Anythingconnected | 2:8f53e653f9b1 | 40 | #define MPU9250_REG_INTEN 0x38 |
Anythingconnected | 2:8f53e653f9b1 | 41 | #define MPU9250_REG_WOMT 0x1F |
Anythingconnected | 2:8f53e653f9b1 | 42 | |
Anythingconnected | 2:8f53e653f9b1 | 43 | #define MPU9250_REG_DMP_INTSTAT 0x39 |
Anythingconnected | 2:8f53e653f9b1 | 44 | #define MPU9250_REG_DMP_BANK 0x6D |
Anythingconnected | 2:8f53e653f9b1 | 45 | #define MPU9250_REG_DMP_RW_PNT 0x6E |
Anythingconnected | 2:8f53e653f9b1 | 46 | #define MPU9250_REG_DMP_REG 0x6F |
Anythingconnected | 2:8f53e653f9b1 | 47 | #define MPU9250_REG_DMP_REG1 0x70 |
Anythingconnected | 2:8f53e653f9b1 | 48 | #define MPU9250_REG_DMP_REG2 0x71 |
Anythingconnected | 2:8f53e653f9b1 | 49 | |
Anythingconnected | 2:8f53e653f9b1 | 50 | #define MPU9250_MAG_ADDRESS 0x0C |
Anythingconnected | 2:8f53e653f9b1 | 51 | #define MPU9250_MAG_REG_STATUS 0x02 |
Anythingconnected | 2:8f53e653f9b1 | 52 | #define MPU9250_MAG_REG_X_L 0x03 |
Anythingconnected | 2:8f53e653f9b1 | 53 | #define MPU9250_MAG_REG_X_H 0x04 |
Anythingconnected | 2:8f53e653f9b1 | 54 | #define MPU9250_MAG_REG_Y_L 0x05 |
Anythingconnected | 2:8f53e653f9b1 | 55 | #define MPU9250_MAG_REG_Y_H 0x06 |
Anythingconnected | 2:8f53e653f9b1 | 56 | #define MPU9250_MAG_REG_Z_L 0x07 |
Anythingconnected | 2:8f53e653f9b1 | 57 | #define MPU9250_MAG_REG_Z_H 0x08 |
Anythingconnected | 2:8f53e653f9b1 | 58 | #define MPU9250_MAG_REG_CNTL 0x0A //0b0 power down, 0b1 single measurement, 0b1000 self-test, 0b1111 fuse-rom access |
Anythingconnected | 2:8f53e653f9b1 | 59 | #define MPU9250_MAG_REG_FUSE_XADJ 0x10 |
Anythingconnected | 2:8f53e653f9b1 | 60 | #define MPU9250_MAG_REG_FUSE_YADJ 0x11 |
Anythingconnected | 2:8f53e653f9b1 | 61 | #define MPU9250_MAG_REG_FUSE_ZADJ 0x12 |
Anythingconnected | 2:8f53e653f9b1 | 62 | #define MPU9250_MAG_REG_I2CDIS 0x0F |
Anythingconnected | 2:8f53e653f9b1 | 63 | |
Anythingconnected | 2:8f53e653f9b1 | 64 | #define MPU9250_GYROSCALE_250 0x00 |
Anythingconnected | 2:8f53e653f9b1 | 65 | #define MPU9250_GYROSCALE_500 0x08 |
Anythingconnected | 2:8f53e653f9b1 | 66 | #define MPU9250_GYROSCALE_1000 0x10 |
Anythingconnected | 2:8f53e653f9b1 | 67 | #define MPU9250_GYROSCALE_2000 0x18 |
Anythingconnected | 2:8f53e653f9b1 | 68 | #define MPU9250_ACCSCALE_2 0x00 |
Anythingconnected | 2:8f53e653f9b1 | 69 | #define MPU9250_ACCSCALE_4 0x08 |
Anythingconnected | 2:8f53e653f9b1 | 70 | #define MPU9250_ACCSCALE_8 0x10 |
Anythingconnected | 2:8f53e653f9b1 | 71 | #define MPU9250_ACCSCALE_16 0x18 |
Anythingconnected | 2:8f53e653f9b1 | 72 | |
Anythingconnected | 2:8f53e653f9b1 | 73 | |
Anythingconnected | 2:8f53e653f9b1 | 74 | struct __attribute__((__packed__)) MPU9250_MAG_DATA { |
Anythingconnected | 2:8f53e653f9b1 | 75 | uint16_t x; |
Anythingconnected | 2:8f53e653f9b1 | 76 | uint16_t y; |
Anythingconnected | 2:8f53e653f9b1 | 77 | uint16_t z; |
Anythingconnected | 2:8f53e653f9b1 | 78 | uint8_t isValid; |
Anythingconnected | 2:8f53e653f9b1 | 79 | }; |
Anythingconnected | 2:8f53e653f9b1 | 80 | |
Anythingconnected | 2:8f53e653f9b1 | 81 | struct __attribute__((__packed__)) MPU9250_ACCEL_DATA { |
Anythingconnected | 2:8f53e653f9b1 | 82 | uint16_t x; |
Anythingconnected | 2:8f53e653f9b1 | 83 | uint16_t y; |
Anythingconnected | 2:8f53e653f9b1 | 84 | uint16_t z; |
Anythingconnected | 2:8f53e653f9b1 | 85 | uint8_t isValid; |
Anythingconnected | 2:8f53e653f9b1 | 86 | }; |
Anythingconnected | 2:8f53e653f9b1 | 87 | |
Anythingconnected | 2:8f53e653f9b1 | 88 | struct __attribute__((__packed__)) MPU9250_GYRO_DATA { |
Anythingconnected | 2:8f53e653f9b1 | 89 | uint16_t x; |
Anythingconnected | 2:8f53e653f9b1 | 90 | uint16_t y; |
Anythingconnected | 2:8f53e653f9b1 | 91 | uint16_t z; |
Anythingconnected | 2:8f53e653f9b1 | 92 | uint8_t isValid; |
Anythingconnected | 2:8f53e653f9b1 | 93 | }; |
Anythingconnected | 2:8f53e653f9b1 | 94 | |
Anythingconnected | 2:8f53e653f9b1 | 95 | struct __attribute__((__packed__)) MPU9250_TEMP_DATA { |
Anythingconnected | 2:8f53e653f9b1 | 96 | uint16_t temperature; |
Anythingconnected | 2:8f53e653f9b1 | 97 | uint8_t isValid; |
Anythingconnected | 2:8f53e653f9b1 | 98 | }; |
Anythingconnected | 2:8f53e653f9b1 | 99 | |
Anythingconnected | 2:8f53e653f9b1 | 100 | class MPU9250 { |
Anythingconnected | 2:8f53e653f9b1 | 101 | public: |
Anythingconnected | 2:8f53e653f9b1 | 102 | MPU9250(int SCLPin, int SDAPin, int addr); |
Anythingconnected | 2:8f53e653f9b1 | 103 | MPU9250_GYRO_DATA readGyro(); |
Anythingconnected | 2:8f53e653f9b1 | 104 | MPU9250_MAG_DATA readMag(); |
Anythingconnected | 2:8f53e653f9b1 | 105 | MPU9250_ACCEL_DATA readAccel(); |
Anythingconnected | 2:8f53e653f9b1 | 106 | MPU9250_ACCEL_DATA readAccelNew(); |
Anythingconnected | 2:8f53e653f9b1 | 107 | MPU9250_TEMP_DATA readTemp(); |
Anythingconnected | 2:8f53e653f9b1 | 108 | |
Anythingconnected | 2:8f53e653f9b1 | 109 | bool init(); |
Anythingconnected | 2:8f53e653f9b1 | 110 | bool wakeup(); |
Anythingconnected | 2:8f53e653f9b1 | 111 | bool standby(); |
Anythingconnected | 2:8f53e653f9b1 | 112 | bool sleep(); |
Anythingconnected | 2:8f53e653f9b1 | 113 | |
Anythingconnected | 2:8f53e653f9b1 | 114 | private: |
Anythingconnected | 2:8f53e653f9b1 | 115 | MPU9250(); |
Anythingconnected | 2:8f53e653f9b1 | 116 | I2C i2c; |
Anythingconnected | 2:8f53e653f9b1 | 117 | int deviceAddress; |
Anythingconnected | 2:8f53e653f9b1 | 118 | bool readRegister(int addr, uint8_t* data, int length); |
Anythingconnected | 2:8f53e653f9b1 | 119 | bool writeRegister(int addr, uint8_t data); |
Anythingconnected | 2:8f53e653f9b1 | 120 | bool readMagRegister(int addr, uint8_t* data, int length); |
Anythingconnected | 2:8f53e653f9b1 | 121 | bool writeMagRegister(int addr, uint8_t data); |
Anythingconnected | 2:8f53e653f9b1 | 122 | }; |
Anythingconnected | 2:8f53e653f9b1 | 123 | |
Anythingconnected | 2:8f53e653f9b1 | 124 | #endif |