Code for break using sensor

Dependencies:   SEGGER_RTT mbed-dev

Fork of DigitalOut_HelloWorld by mbed official

Committer:
Anythingconnected
Date:
Mon Dec 18 10:41:06 2017 +0000
Revision:
3:c058c2f600bb
Parent:
2:8f53e653f9b1
1

Who changed what in which revision?

UserRevisionLine numberNew 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