A library for the Invensense MPU9150
MPU9150.cpp@2:581fad93a809, 2014-06-09 (annotated)
- Committer:
- ethanharstad
- Date:
- Mon Jun 09 21:17:40 2014 +0000
- Revision:
- 2:581fad93a809
- Parent:
- 1:1b0ada1695a7
Untested implementation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ethanharstad | 2:581fad93a809 | 1 | // Check methods that write bit fields |
ethanharstad | 0:d6616b97605d | 2 | #include "MPU9150.h" |
ethanharstad | 0:d6616b97605d | 3 | #include "mbed.h" |
ethanharstad | 0:d6616b97605d | 4 | |
ethanharstad | 1:1b0ada1695a7 | 5 | MPU9150::MPU9150() : i2c_(I2C_SDA, I2C_SCL) { |
ethanharstad | 1:1b0ada1695a7 | 6 | address_ = MPU9150_ADDRESS_DEFAULT; |
ethanharstad | 2:581fad93a809 | 7 | |
ethanharstad | 2:581fad93a809 | 8 | accelRange_ = 0; |
ethanharstad | 2:581fad93a809 | 9 | gyroRange_ = 0; |
ethanharstad | 0:d6616b97605d | 10 | } |
ethanharstad | 0:d6616b97605d | 11 | |
ethanharstad | 1:1b0ada1695a7 | 12 | MPU9150::MPU9150(const bool AD0) : i2c_(I2C_SDA, I2C_SCL) { |
ethanharstad | 1:1b0ada1695a7 | 13 | if(AD0) { |
ethanharstad | 1:1b0ada1695a7 | 14 | address_ = MPU9150_ADDRESS_AD0_HIGH; |
ethanharstad | 1:1b0ada1695a7 | 15 | } else { |
ethanharstad | 1:1b0ada1695a7 | 16 | address_ = MPU9150_ADDRESS_AD0_LOW; |
ethanharstad | 1:1b0ada1695a7 | 17 | } |
ethanharstad | 2:581fad93a809 | 18 | |
ethanharstad | 2:581fad93a809 | 19 | accelRange_ = 0; |
ethanharstad | 2:581fad93a809 | 20 | gyroRange_ = 0; |
ethanharstad | 0:d6616b97605d | 21 | } |
ethanharstad | 0:d6616b97605d | 22 | |
ethanharstad | 1:1b0ada1695a7 | 23 | MPU9150::MPU9150(const PinName sda, const PinName scl, const bool AD0) : i2c_(sda, scl) { |
ethanharstad | 1:1b0ada1695a7 | 24 | if(AD0) { |
ethanharstad | 1:1b0ada1695a7 | 25 | address_ = MPU9150_ADDRESS_AD0_HIGH; |
ethanharstad | 1:1b0ada1695a7 | 26 | } else { |
ethanharstad | 1:1b0ada1695a7 | 27 | address_ = MPU9150_ADDRESS_AD0_LOW; |
ethanharstad | 1:1b0ada1695a7 | 28 | } |
ethanharstad | 2:581fad93a809 | 29 | |
ethanharstad | 2:581fad93a809 | 30 | accelRange_ = 0; |
ethanharstad | 2:581fad93a809 | 31 | gyroRange_ = 0; |
ethanharstad | 0:d6616b97605d | 32 | } |
ethanharstad | 2:581fad93a809 | 33 | |
ethanharstad | 2:581fad93a809 | 34 | void MPU9150::initialize() { |
ethanharstad | 2:581fad93a809 | 35 | i2c_.setFrequency(100000); // Set frequency to 400 kHz |
ethanharstad | 2:581fad93a809 | 36 | setClockSource(MPU9150_PWR_MGMT_CLOCK_GYRO_X); |
ethanharstad | 2:581fad93a809 | 37 | setGyroFullScaleRange(MPU9150_GYRO_FS_250); |
ethanharstad | 2:581fad93a809 | 38 | setAccelFullScaleRange(MPU9150_ACCEL_FS_2); |
ethanharstad | 2:581fad93a809 | 39 | setSleepEnabled(false); |
ethanharstad | 2:581fad93a809 | 40 | } |
ethanharstad | 2:581fad93a809 | 41 | |
ethanharstad | 2:581fad93a809 | 42 | bool MPU9150::test() { |
ethanharstad | 2:581fad93a809 | 43 | return getDeviceID() == 0x34; |
ethanharstad | 2:581fad93a809 | 44 | } |
ethanharstad | 2:581fad93a809 | 45 | |
ethanharstad | 2:581fad93a809 | 46 | uint8_t MPU9150::getSampleRateDivider() { |
ethanharstad | 2:581fad93a809 | 47 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 48 | i2c_.readByte(address_, MPU9150_RA_SMPRT_DIV, &buf); |
ethanharstad | 2:581fad93a809 | 49 | return buf; |
ethanharstad | 2:581fad93a809 | 50 | } |
ethanharstad | 2:581fad93a809 | 51 | void MPU9150::setSampleRateDivider(const uint8_t divider) { |
ethanharstad | 2:581fad93a809 | 52 | i2c_.writeByte(address_, MPU9150_RA_SMPRT_DIV, divider); |
ethanharstad | 2:581fad93a809 | 53 | } |
ethanharstad | 2:581fad93a809 | 54 | |
ethanharstad | 2:581fad93a809 | 55 | uint8_t MPU9150::getExternalFrameSync() { |
ethanharstad | 2:581fad93a809 | 56 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 57 | i2c_.readBits(address_, MPU9150_RA_CONFIG, 5, 3, &buf); |
ethanharstad | 2:581fad93a809 | 58 | return buf; |
ethanharstad | 2:581fad93a809 | 59 | } |
ethanharstad | 2:581fad93a809 | 60 | void MPU9150::setExternalFrameSync(const uint8_t sync) { |
ethanharstad | 2:581fad93a809 | 61 | i2c_.writeBits(address_, MPU9150_RA_CONFIG, 5, 3, sync); |
ethanharstad | 2:581fad93a809 | 62 | } |
ethanharstad | 2:581fad93a809 | 63 | uint8_t MPU9150::getDLPFBandwidth() { |
ethanharstad | 2:581fad93a809 | 64 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 65 | i2c_.readBits(address_, MPU9150_RA_CONFIG, 2, 3, &buf); |
ethanharstad | 2:581fad93a809 | 66 | return buf; |
ethanharstad | 2:581fad93a809 | 67 | } |
ethanharstad | 2:581fad93a809 | 68 | void MPU9150::setDLPFBandwidth(const uint8_t bandwidth) { |
ethanharstad | 2:581fad93a809 | 69 | i2c_.writeBits(address_, MPU9150_RA_CONFIG, 2, 3, bandwidth); |
ethanharstad | 2:581fad93a809 | 70 | } |
ethanharstad | 2:581fad93a809 | 71 | |
ethanharstad | 2:581fad93a809 | 72 | uint8_t MPU9150::getGyroFullScaleRange() { |
ethanharstad | 2:581fad93a809 | 73 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 74 | i2c_.readBits(address_, MPU9150_RA_GYRO_CONFIG, 4, 2, &buf); |
ethanharstad | 2:581fad93a809 | 75 | return buf; |
ethanharstad | 2:581fad93a809 | 76 | } |
ethanharstad | 2:581fad93a809 | 77 | void MPU9150::setGyroFullScaleRange(const uint8_t range) { |
ethanharstad | 2:581fad93a809 | 78 | i2c_.writeBits(address_, MPU9150_RA_GYRO_CONFIG, 4, 2, range); |
ethanharstad | 2:581fad93a809 | 79 | } |
ethanharstad | 2:581fad93a809 | 80 | |
ethanharstad | 2:581fad93a809 | 81 | uint8_t MPU9150::getAccelFullScaleRange() { |
ethanharstad | 2:581fad93a809 | 82 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 83 | i2c_.readBits(address_, MPU9150_RA_ACCEL_CONFIG, 4, 2, &buf); |
ethanharstad | 2:581fad93a809 | 84 | return buf; |
ethanharstad | 2:581fad93a809 | 85 | } |
ethanharstad | 2:581fad93a809 | 86 | void MPU9150::setAccelFullScaleRange(const uint8_t range) { |
ethanharstad | 2:581fad93a809 | 87 | i2c_.writeBits(address_, MPU9150_RA_ACCEL_CONFIG, 4, 2, range); |
ethanharstad | 2:581fad93a809 | 88 | } |
ethanharstad | 2:581fad93a809 | 89 | |
ethanharstad | 2:581fad93a809 | 90 | int16_t MPU9150::getAccelX() { |
ethanharstad | 2:581fad93a809 | 91 | uint16_t buf = 0xFFFF; |
ethanharstad | 2:581fad93a809 | 92 | i2c_.readWord(address_, MPU9150_RA_ACCEL_XOUT_H, &buf); |
ethanharstad | 2:581fad93a809 | 93 | return (int16_t)buf; |
ethanharstad | 2:581fad93a809 | 94 | } |
ethanharstad | 2:581fad93a809 | 95 | int16_t MPU9150::getAccelY() { |
ethanharstad | 2:581fad93a809 | 96 | uint16_t buf = 0xFFFF; |
ethanharstad | 2:581fad93a809 | 97 | i2c_.readWord(address_, MPU9150_RA_ACCEL_YOUT_H, &buf); |
ethanharstad | 2:581fad93a809 | 98 | return (int16_t)buf; |
ethanharstad | 2:581fad93a809 | 99 | } |
ethanharstad | 2:581fad93a809 | 100 | int16_t MPU9150::getAccelZ() { |
ethanharstad | 2:581fad93a809 | 101 | uint16_t buf = 0xFFFF; |
ethanharstad | 2:581fad93a809 | 102 | i2c_.readWord(address_, MPU9150_RA_ACCEL_ZOUT_H, &buf); |
ethanharstad | 2:581fad93a809 | 103 | return (int16_t)buf; |
ethanharstad | 2:581fad93a809 | 104 | } |
ethanharstad | 2:581fad93a809 | 105 | |
ethanharstad | 2:581fad93a809 | 106 | int16_t MPU9150::getTemp() { |
ethanharstad | 2:581fad93a809 | 107 | uint16_t buf = 0xFFFF; |
ethanharstad | 2:581fad93a809 | 108 | i2c_.readWord(address_, MPU9150_RA_TEMP_OUT_H, &buf); |
ethanharstad | 2:581fad93a809 | 109 | return (int16_t)buf; |
ethanharstad | 2:581fad93a809 | 110 | } |
ethanharstad | 2:581fad93a809 | 111 | |
ethanharstad | 2:581fad93a809 | 112 | int16_t MPU9150::getGyroX() { |
ethanharstad | 2:581fad93a809 | 113 | uint16_t buf = 0xFFFF; |
ethanharstad | 2:581fad93a809 | 114 | i2c_.readWord(address_, MPU9150_RA_GYRO_XOUT_H, &buf); |
ethanharstad | 2:581fad93a809 | 115 | return (int16_t)buf; |
ethanharstad | 2:581fad93a809 | 116 | } |
ethanharstad | 2:581fad93a809 | 117 | int16_t MPU9150::getGyroY() { |
ethanharstad | 2:581fad93a809 | 118 | uint16_t buf = 0xFFFF; |
ethanharstad | 2:581fad93a809 | 119 | i2c_.readWord(address_, MPU9150_RA_GYRO_YOUT_H, &buf); |
ethanharstad | 2:581fad93a809 | 120 | return (int16_t)buf; |
ethanharstad | 2:581fad93a809 | 121 | } |
ethanharstad | 2:581fad93a809 | 122 | int16_t MPU9150::getGyroZ() { |
ethanharstad | 2:581fad93a809 | 123 | uint16_t buf = 0xFFFF; |
ethanharstad | 2:581fad93a809 | 124 | i2c_.readWord(address_, MPU9150_RA_GYRO_ZOUT_H, &buf); |
ethanharstad | 2:581fad93a809 | 125 | return (int16_t)buf; |
ethanharstad | 2:581fad93a809 | 126 | } |
ethanharstad | 2:581fad93a809 | 127 | |
ethanharstad | 2:581fad93a809 | 128 | void MPU9150::resetGyroPath() { |
ethanharstad | 2:581fad93a809 | 129 | i2c_.writeBit(address_, MPU9150_RA_SIGNAL_PATH_RESET, 2, 0x01); |
ethanharstad | 2:581fad93a809 | 130 | } |
ethanharstad | 2:581fad93a809 | 131 | void MPU9150::resetAccelPath() { |
ethanharstad | 2:581fad93a809 | 132 | i2c_.writeBit(address_, MPU9150_RA_SIGNAL_PATH_RESET, 1, 0x01); |
ethanharstad | 2:581fad93a809 | 133 | } |
ethanharstad | 2:581fad93a809 | 134 | void MPU9150::resetTempPath() { |
ethanharstad | 2:581fad93a809 | 135 | i2c_.writeBit(address_, MPU9150_RA_SIGNAL_PATH_RESET, 0, 0x01); |
ethanharstad | 2:581fad93a809 | 136 | } |
ethanharstad | 2:581fad93a809 | 137 | |
ethanharstad | 2:581fad93a809 | 138 | bool MPU9150::getFifoEnabled() { |
ethanharstad | 2:581fad93a809 | 139 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 140 | i2c_.readBit(address_, MPU9150_RA_USER_CTRL, 6, &buf); |
ethanharstad | 2:581fad93a809 | 141 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 142 | } |
ethanharstad | 2:581fad93a809 | 143 | void MPU9150::setFifoEnabled(const bool fifo) { |
ethanharstad | 2:581fad93a809 | 144 | i2c_.writeBit(address_, MPU9150_RA_USER_CTRL, 6, fifo); |
ethanharstad | 2:581fad93a809 | 145 | } |
ethanharstad | 2:581fad93a809 | 146 | bool MPU9150::getI2CMasterEnabled() { |
ethanharstad | 2:581fad93a809 | 147 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 148 | i2c_.readBit(address_, MPU9150_RA_USER_CTRL, 5, &buf); |
ethanharstad | 2:581fad93a809 | 149 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 150 | } |
ethanharstad | 2:581fad93a809 | 151 | void MPU9150::setI2CMasterEnabled(const bool master) { |
ethanharstad | 2:581fad93a809 | 152 | i2c_.writeBit(address_, MPU9150_RA_USER_CTRL, 5, master); |
ethanharstad | 2:581fad93a809 | 153 | } |
ethanharstad | 2:581fad93a809 | 154 | void MPU9150::resetFifo() { |
ethanharstad | 2:581fad93a809 | 155 | i2c_.writeBit(address_, MPU9150_RA_USER_CTRL, 2, 0x01); |
ethanharstad | 2:581fad93a809 | 156 | } |
ethanharstad | 2:581fad93a809 | 157 | void MPU9150::resetI2CMaster() { |
ethanharstad | 2:581fad93a809 | 158 | i2c_.writeBit(address_, MPU9150_RA_USER_CTRL, 1, 0x01); |
ethanharstad | 2:581fad93a809 | 159 | } |
ethanharstad | 2:581fad93a809 | 160 | void MPU9150::resetSensors() { |
ethanharstad | 2:581fad93a809 | 161 | i2c_.writeBit(address_, MPU9150_RA_USER_CTRL, 0, 0x01); |
ethanharstad | 2:581fad93a809 | 162 | } |
ethanharstad | 2:581fad93a809 | 163 | |
ethanharstad | 2:581fad93a809 | 164 | void MPU9150::reset() { |
ethanharstad | 2:581fad93a809 | 165 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_1, 7, 0x01); |
ethanharstad | 2:581fad93a809 | 166 | } |
ethanharstad | 2:581fad93a809 | 167 | bool MPU9150::getSleepEnabled() { |
ethanharstad | 2:581fad93a809 | 168 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 169 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_1, 6, &buf); |
ethanharstad | 2:581fad93a809 | 170 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 171 | } |
ethanharstad | 2:581fad93a809 | 172 | void MPU9150::setSleepEnabled(const bool sleep) { |
ethanharstad | 2:581fad93a809 | 173 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_1, 6, sleep); |
ethanharstad | 2:581fad93a809 | 174 | } |
ethanharstad | 2:581fad93a809 | 175 | bool MPU9150::getCycleEnabled() { |
ethanharstad | 2:581fad93a809 | 176 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 177 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_1, 5, &buf); |
ethanharstad | 2:581fad93a809 | 178 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 179 | } |
ethanharstad | 2:581fad93a809 | 180 | void MPU9150::setCycleEnabled(const bool cycle) { |
ethanharstad | 2:581fad93a809 | 181 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_1, 5, cycle); |
ethanharstad | 2:581fad93a809 | 182 | } |
ethanharstad | 2:581fad93a809 | 183 | bool MPU9150::getTempEnabled() { |
ethanharstad | 2:581fad93a809 | 184 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 185 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_1, 3, &buf); |
ethanharstad | 2:581fad93a809 | 186 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 187 | } |
ethanharstad | 2:581fad93a809 | 188 | void MPU9150::setTempEnabled(const bool temp) { |
ethanharstad | 2:581fad93a809 | 189 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_1, 3, temp); |
ethanharstad | 2:581fad93a809 | 190 | } |
ethanharstad | 2:581fad93a809 | 191 | uint8_t MPU9150::getClockSource() { |
ethanharstad | 2:581fad93a809 | 192 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 193 | i2c_.readBits(address_, MPU9150_RA_PWR_MGMT_1, 2, 3, &buf); |
ethanharstad | 2:581fad93a809 | 194 | return buf; |
ethanharstad | 2:581fad93a809 | 195 | } |
ethanharstad | 2:581fad93a809 | 196 | void MPU9150::setClockSource(const uint8_t source) { |
ethanharstad | 2:581fad93a809 | 197 | i2c_.writeBits(address_, MPU9150_RA_PWR_MGMT_1, 2, 3, source); |
ethanharstad | 2:581fad93a809 | 198 | } |
ethanharstad | 2:581fad93a809 | 199 | |
ethanharstad | 2:581fad93a809 | 200 | uint8_t MPU9150::getCycleFrequency() { |
ethanharstad | 2:581fad93a809 | 201 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 202 | i2c_.readBits(address_, MPU9150_RA_PWR_MGMT_2, 7, 2, &buf); |
ethanharstad | 2:581fad93a809 | 203 | return buf; |
ethanharstad | 2:581fad93a809 | 204 | } |
ethanharstad | 2:581fad93a809 | 205 | void MPU9150::setCycleFrequency(const uint8_t frequency) { |
ethanharstad | 2:581fad93a809 | 206 | i2c_.writeBits(address_, MPU9150_RA_PWR_MGMT_2, 7, 2, frequency); |
ethanharstad | 2:581fad93a809 | 207 | } |
ethanharstad | 2:581fad93a809 | 208 | bool MPU9150::getStandbyAccelXEnabled() { |
ethanharstad | 2:581fad93a809 | 209 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 210 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_2, 5, &buf); |
ethanharstad | 2:581fad93a809 | 211 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 212 | } |
ethanharstad | 2:581fad93a809 | 213 | void MPU9150::setStandbyAccelXEnabled(const bool enabled) { |
ethanharstad | 2:581fad93a809 | 214 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_2, 5, enabled); |
ethanharstad | 2:581fad93a809 | 215 | } |
ethanharstad | 2:581fad93a809 | 216 | bool MPU9150::getStandbyAccelYEnabled() { |
ethanharstad | 2:581fad93a809 | 217 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 218 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_2, 4, &buf); |
ethanharstad | 2:581fad93a809 | 219 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 220 | } |
ethanharstad | 2:581fad93a809 | 221 | void MPU9150::setStandbyAccelYEnabled(const bool enabled) { |
ethanharstad | 2:581fad93a809 | 222 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_2, 4, enabled); |
ethanharstad | 2:581fad93a809 | 223 | } |
ethanharstad | 2:581fad93a809 | 224 | bool MPU9150::getStandbyAccelZEnabled() { |
ethanharstad | 2:581fad93a809 | 225 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 226 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_2, 3, &buf); |
ethanharstad | 2:581fad93a809 | 227 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 228 | } |
ethanharstad | 2:581fad93a809 | 229 | void MPU9150::setStandbyAccelZEnabled(const bool enabled) { |
ethanharstad | 2:581fad93a809 | 230 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_2, 3, enabled); |
ethanharstad | 2:581fad93a809 | 231 | } |
ethanharstad | 2:581fad93a809 | 232 | bool MPU9150::getStandbyGyroXEnabled() { |
ethanharstad | 2:581fad93a809 | 233 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 234 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_2, 2, &buf); |
ethanharstad | 2:581fad93a809 | 235 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 236 | } |
ethanharstad | 2:581fad93a809 | 237 | void MPU9150::setStandbyGyroXEnabled(const bool enabled) { |
ethanharstad | 2:581fad93a809 | 238 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_2, 2, enabled); |
ethanharstad | 2:581fad93a809 | 239 | } |
ethanharstad | 2:581fad93a809 | 240 | bool MPU9150::getStandbyGyroYEnabled() { |
ethanharstad | 2:581fad93a809 | 241 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 242 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_2, 1, &buf); |
ethanharstad | 2:581fad93a809 | 243 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 244 | } |
ethanharstad | 2:581fad93a809 | 245 | void MPU9150::setStandbyGyroYEnabled(const bool enabled) { |
ethanharstad | 2:581fad93a809 | 246 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_2, 1, enabled); |
ethanharstad | 2:581fad93a809 | 247 | } |
ethanharstad | 2:581fad93a809 | 248 | bool MPU9150::getStandbyGyroZEnabled() { |
ethanharstad | 2:581fad93a809 | 249 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 250 | i2c_.readBit(address_, MPU9150_RA_PWR_MGMT_2, 0, &buf); |
ethanharstad | 2:581fad93a809 | 251 | return (bool)buf; |
ethanharstad | 2:581fad93a809 | 252 | } |
ethanharstad | 2:581fad93a809 | 253 | void MPU9150::setStandbyGyroZEnabled(const bool enabled) { |
ethanharstad | 2:581fad93a809 | 254 | i2c_.writeBit(address_, MPU9150_RA_PWR_MGMT_2, 0, enabled); |
ethanharstad | 2:581fad93a809 | 255 | } |
ethanharstad | 2:581fad93a809 | 256 | |
ethanharstad | 2:581fad93a809 | 257 | uint8_t MPU9150::getDeviceID() { |
ethanharstad | 2:581fad93a809 | 258 | uint8_t buf = 0xFF; |
ethanharstad | 2:581fad93a809 | 259 | i2c_.readBits(address_, MPU9150_RA_WHO_AM_I, 6, 6, &buf); |
ethanharstad | 2:581fad93a809 | 260 | return buf; |
ethanharstad | 2:581fad93a809 | 261 | } |