LSM9DS1 i2c

Dependencies:   mbed

Committer:
antimo8@alice.it
Date:
Sun Jul 08 11:19:00 2018 +0200
Revision:
2:bf33a982a078
add LSM9DS1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
antimo8@alice.it 2:bf33a982a078 1 /*
antimo8@alice.it 2:bf33a982a078 2 * LSM9DS1_Sensor.c
antimo8@alice.it 2:bf33a982a078 3 *
antimo8@alice.it 2:bf33a982a078 4 * Created: 05/01/2015 19:49:04
antimo8@alice.it 2:bf33a982a078 5 * Author: speirano
antimo8@alice.it 2:bf33a982a078 6 */
antimo8@alice.it 2:bf33a982a078 7
antimo8@alice.it 2:bf33a982a078 8 //#include "Wire.h"
antimo8@alice.it 2:bf33a982a078 9 #include "LSM9DS1Reg.h"
antimo8@alice.it 2:bf33a982a078 10 #include "LSM9DS1.h"
antimo8@alice.it 2:bf33a982a078 11 #include "mbed.h"
antimo8@alice.it 2:bf33a982a078 12
antimo8@alice.it 2:bf33a982a078 13
antimo8@alice.it 2:bf33a982a078 14
antimo8@alice.it 2:bf33a982a078 15
antimo8@alice.it 2:bf33a982a078 16 float a_lsb_sentivity = A_LSB_SENSIT_2MG; // FC[1:0] register set to 0
antimo8@alice.it 2:bf33a982a078 17 inline float LSM9DS1_get_a_lsb_sensitivity(void) {
antimo8@alice.it 2:bf33a982a078 18 return a_lsb_sentivity;
antimo8@alice.it 2:bf33a982a078 19 }
antimo8@alice.it 2:bf33a982a078 20
antimo8@alice.it 2:bf33a982a078 21 float g_lsb_sentivity = G_LSB_SENSIT_245MDPS; // FC[1:0] register set to 0
antimo8@alice.it 2:bf33a982a078 22 inline float LSM9DS1_get_g_lsb_sentivity(void) {
antimo8@alice.it 2:bf33a982a078 23 return g_lsb_sentivity;
antimo8@alice.it 2:bf33a982a078 24 }
antimo8@alice.it 2:bf33a982a078 25
antimo8@alice.it 2:bf33a982a078 26 float m_lsb_sentivity = M_LSB_SENSIT_4MG; // FC[1:0] register set to 0
antimo8@alice.it 2:bf33a982a078 27 inline float LSM9DS1_get_m_lsb_sentivity(void) {
antimo8@alice.it 2:bf33a982a078 28 return m_lsb_sentivity;
antimo8@alice.it 2:bf33a982a078 29 }
antimo8@alice.it 2:bf33a982a078 30
antimo8@alice.it 2:bf33a982a078 31
antimo8@alice.it 2:bf33a982a078 32 // Read a single byte from addressToRead and return it as a byte
antimo8@alice.it 2:bf33a982a078 33 uint8_t LSM9DS1::readRegister(uint8_t slaveAddress, uint8_t regToRead)
antimo8@alice.it 2:bf33a982a078 34 {/*
antimo8@alice.it 2:bf33a982a078 35 Wire.beginTransmission(slaveAddress);
antimo8@alice.it 2:bf33a982a078 36 Wire.write(regToRead);
antimo8@alice.it 2:bf33a982a078 37 Wire.endTransmission(false); //endTransmission but keep the connection active
antimo8@alice.it 2:bf33a982a078 38
antimo8@alice.it 2:bf33a982a078 39 Wire.requestFrom(slaveAddress, 1); //Ask for 1 byte, once done, bus is released by default
antimo8@alice.it 2:bf33a982a078 40
antimo8@alice.it 2:bf33a982a078 41 while(!Wire.available()) ; //Wait for the data to come back
antimo8@alice.it 2:bf33a982a078 42 return Wire.read(); //Return this one byte*/
antimo8@alice.it 2:bf33a982a078 43
antimo8@alice.it 2:bf33a982a078 44
antimo8@alice.it 2:bf33a982a078 45
antimo8@alice.it 2:bf33a982a078 46
antimo8@alice.it 2:bf33a982a078 47 return 0; //FOR TEST
antimo8@alice.it 2:bf33a982a078 48 }
antimo8@alice.it 2:bf33a982a078 49
antimo8@alice.it 2:bf33a982a078 50 // Writes a single byte (dataToWrite) into regToWrite
antimo8@alice.it 2:bf33a982a078 51 bool LSM9DS1::writeRegister(uint8_t slaveAddress, uint8_t regToWrite, uint8_t dataToWrite)
antimo8@alice.it 2:bf33a982a078 52 {/*
antimo8@alice.it 2:bf33a982a078 53 uint8_t errorNo;
antimo8@alice.it 2:bf33a982a078 54 Wire.beginTransmission(slaveAddress);
antimo8@alice.it 2:bf33a982a078 55
antimo8@alice.it 2:bf33a982a078 56 if (!Wire.write(regToWrite)) {
antimo8@alice.it 2:bf33a982a078 57 return false;
antimo8@alice.it 2:bf33a982a078 58 }
antimo8@alice.it 2:bf33a982a078 59 if (!Wire.write(dataToWrite)) {
antimo8@alice.it 2:bf33a982a078 60 return false;
antimo8@alice.it 2:bf33a982a078 61 }
antimo8@alice.it 2:bf33a982a078 62
antimo8@alice.it 2:bf33a982a078 63 errorNo = Wire.endTransmission(); //Stop transmitting
antimo8@alice.it 2:bf33a982a078 64 return (errorNo == 0);*/
antimo8@alice.it 2:bf33a982a078 65
antimo8@alice.it 2:bf33a982a078 66
antimo8@alice.it 2:bf33a982a078 67 return 0; //FOR TEST
antimo8@alice.it 2:bf33a982a078 68 }
antimo8@alice.it 2:bf33a982a078 69
antimo8@alice.it 2:bf33a982a078 70
antimo8@alice.it 2:bf33a982a078 71 LSM9DS1::LSM9DS1(unsigned int address) : _address(address)
antimo8@alice.it 2:bf33a982a078 72 {
antimo8@alice.it 2:bf33a982a078 73 _ready_reg = 0;
antimo8@alice.it 2:bf33a982a078 74 _status_reg = 0;
antimo8@alice.it 2:bf33a982a078 75 _x = 0;
antimo8@alice.it 2:bf33a982a078 76 _y = 0;
antimo8@alice.it 2:bf33a982a078 77 _z = 0;
antimo8@alice.it 2:bf33a982a078 78 }
antimo8@alice.it 2:bf33a982a078 79
antimo8@alice.it 2:bf33a982a078 80 bool
antimo8@alice.it 2:bf33a982a078 81 LSM9DS1::readInternal(unsigned char high_reg, unsigned char low_reg, int *value)
antimo8@alice.it 2:bf33a982a078 82 {
antimo8@alice.it 2:bf33a982a078 83 uint16_t data = 0;
antimo8@alice.it 2:bf33a982a078 84 unsigned char read = 0;
antimo8@alice.it 2:bf33a982a078 85 int16_t signed_data = 0;
antimo8@alice.it 2:bf33a982a078 86
antimo8@alice.it 2:bf33a982a078 87 for (;;) {
antimo8@alice.it 2:bf33a982a078 88 read = readRegister(addr(), _status_reg);
antimo8@alice.it 2:bf33a982a078 89 if (read & _ready_reg) {
antimo8@alice.it 2:bf33a982a078 90 read = readRegister(addr(), low_reg);
antimo8@alice.it 2:bf33a982a078 91 data = read; // LSB
antimo8@alice.it 2:bf33a982a078 92
antimo8@alice.it 2:bf33a982a078 93 read = readRegister(addr(), high_reg);
antimo8@alice.it 2:bf33a982a078 94 data |= read << 8; // MSB
antimo8@alice.it 2:bf33a982a078 95
antimo8@alice.it 2:bf33a982a078 96 signed_data = data;
antimo8@alice.it 2:bf33a982a078 97 *value = signed_data;
antimo8@alice.it 2:bf33a982a078 98 return true;
antimo8@alice.it 2:bf33a982a078 99
antimo8@alice.it 2:bf33a982a078 100 } else {
antimo8@alice.it 2:bf33a982a078 101 wait_ms (1);
antimo8@alice.it 2:bf33a982a078 102 }
antimo8@alice.it 2:bf33a982a078 103 }
antimo8@alice.it 2:bf33a982a078 104
antimo8@alice.it 2:bf33a982a078 105 return false;
antimo8@alice.it 2:bf33a982a078 106 }
antimo8@alice.it 2:bf33a982a078 107
antimo8@alice.it 2:bf33a982a078 108
antimo8@alice.it 2:bf33a982a078 109 /*****************************************************************************/
antimo8@alice.it 2:bf33a982a078 110 /* Accelerometer / Gyroscope */
antimo8@alice.it 2:bf33a982a078 111 /*****************************************************************************/
antimo8@alice.it 2:bf33a982a078 112
antimo8@alice.it 2:bf33a982a078 113
antimo8@alice.it 2:bf33a982a078 114 LSM9DS1_A::LSM9DS1_A(void) : LSM9DS1(LSM9DS1_AG_ADDRESS)
antimo8@alice.it 2:bf33a982a078 115 {
antimo8@alice.it 2:bf33a982a078 116 _ready_reg = AG_ACCELEROMETER_READY;
antimo8@alice.it 2:bf33a982a078 117 _status_reg = AG_STATUS_REG;
antimo8@alice.it 2:bf33a982a078 118 }
antimo8@alice.it 2:bf33a982a078 119
antimo8@alice.it 2:bf33a982a078 120 bool LSM9DS1_A::begin(void)
antimo8@alice.it 2:bf33a982a078 121 {
antimo8@alice.it 2:bf33a982a078 122 uint8_t data;
antimo8@alice.it 2:bf33a982a078 123
antimo8@alice.it 2:bf33a982a078 124 data = readRegister(addr(), AG_WHO_AM_I);
antimo8@alice.it 2:bf33a982a078 125 if (data == AG_WHO_AM_I_RETURN){
antimo8@alice.it 2:bf33a982a078 126 if (activate()){
antimo8@alice.it 2:bf33a982a078 127 return true;
antimo8@alice.it 2:bf33a982a078 128 }
antimo8@alice.it 2:bf33a982a078 129 }
antimo8@alice.it 2:bf33a982a078 130 return false;
antimo8@alice.it 2:bf33a982a078 131 }
antimo8@alice.it 2:bf33a982a078 132
antimo8@alice.it 2:bf33a982a078 133 bool
antimo8@alice.it 2:bf33a982a078 134 LSM9DS1_A::activate(void)
antimo8@alice.it 2:bf33a982a078 135 {
antimo8@alice.it 2:bf33a982a078 136 uint8_t data;
antimo8@alice.it 2:bf33a982a078 137
antimo8@alice.it 2:bf33a982a078 138 data = readRegister(addr(), AG_CTRL_REG1_G);
antimo8@alice.it 2:bf33a982a078 139 //data |= POWER_UP;
antimo8@alice.it 2:bf33a982a078 140 data |= AG_ODR_SET;
antimo8@alice.it 2:bf33a982a078 141 writeRegister(addr(), AG_CTRL_REG1_G, data);
antimo8@alice.it 2:bf33a982a078 142
antimo8@alice.it 2:bf33a982a078 143 return true;
antimo8@alice.it 2:bf33a982a078 144 }
antimo8@alice.it 2:bf33a982a078 145
antimo8@alice.it 2:bf33a982a078 146 bool LSM9DS1_A::deactivate(void)
antimo8@alice.it 2:bf33a982a078 147 {
antimo8@alice.it 2:bf33a982a078 148 uint8_t data;
antimo8@alice.it 2:bf33a982a078 149
antimo8@alice.it 2:bf33a982a078 150 data = readRegister(addr(), AG_CTRL_REG1_G);
antimo8@alice.it 2:bf33a982a078 151 data &= ~AG_ODR_SET;
antimo8@alice.it 2:bf33a982a078 152 writeRegister(addr(), AG_CTRL_REG1_G, data);
antimo8@alice.it 2:bf33a982a078 153
antimo8@alice.it 2:bf33a982a078 154 return true;
antimo8@alice.it 2:bf33a982a078 155 }
antimo8@alice.it 2:bf33a982a078 156
antimo8@alice.it 2:bf33a982a078 157
antimo8@alice.it 2:bf33a982a078 158 int
antimo8@alice.it 2:bf33a982a078 159 LSM9DS1_A::readX()
antimo8@alice.it 2:bf33a982a078 160 {
antimo8@alice.it 2:bf33a982a078 161 int data = 0;
antimo8@alice.it 2:bf33a982a078 162 if (readInternal(AG_ACC_X_H, AG_ACC_X_L, &data)) {
antimo8@alice.it 2:bf33a982a078 163 _x = data;
antimo8@alice.it 2:bf33a982a078 164 }
antimo8@alice.it 2:bf33a982a078 165 // Decode Accel x-axis [mdps measurement unit]
antimo8@alice.it 2:bf33a982a078 166 return (a_lsb_sentivity * _x);
antimo8@alice.it 2:bf33a982a078 167 }
antimo8@alice.it 2:bf33a982a078 168
antimo8@alice.it 2:bf33a982a078 169 int
antimo8@alice.it 2:bf33a982a078 170 LSM9DS1_A::readY()
antimo8@alice.it 2:bf33a982a078 171 {
antimo8@alice.it 2:bf33a982a078 172 int data = 0;
antimo8@alice.it 2:bf33a982a078 173 if (readInternal(AG_ACC_Y_H, AG_ACC_Y_L, &data)) {
antimo8@alice.it 2:bf33a982a078 174 _y = data;
antimo8@alice.it 2:bf33a982a078 175 }
antimo8@alice.it 2:bf33a982a078 176 // Decode Accel y-axis [mdps measurement unit]
antimo8@alice.it 2:bf33a982a078 177 return (a_lsb_sentivity * _y);
antimo8@alice.it 2:bf33a982a078 178 }
antimo8@alice.it 2:bf33a982a078 179
antimo8@alice.it 2:bf33a982a078 180 int
antimo8@alice.it 2:bf33a982a078 181 LSM9DS1_A::readZ()
antimo8@alice.it 2:bf33a982a078 182 {
antimo8@alice.it 2:bf33a982a078 183 int data = 0;
antimo8@alice.it 2:bf33a982a078 184 if (readInternal(AG_ACC_Z_H, AG_ACC_Z_L, &data)) {
antimo8@alice.it 2:bf33a982a078 185 _z = data;
antimo8@alice.it 2:bf33a982a078 186 }
antimo8@alice.it 2:bf33a982a078 187 // Decode Accel z-axis [mdps measurement unit]
antimo8@alice.it 2:bf33a982a078 188 return (a_lsb_sentivity * _z);
antimo8@alice.it 2:bf33a982a078 189 }
antimo8@alice.it 2:bf33a982a078 190
antimo8@alice.it 2:bf33a982a078 191 LSM9DS1_G::LSM9DS1_G(void) : LSM9DS1(LSM9DS1_AG_ADDRESS)
antimo8@alice.it 2:bf33a982a078 192 {
antimo8@alice.it 2:bf33a982a078 193 _ready_reg = AG_GYROSCOPE_READY;
antimo8@alice.it 2:bf33a982a078 194 _status_reg = AG_STATUS_REG;
antimo8@alice.it 2:bf33a982a078 195 }
antimo8@alice.it 2:bf33a982a078 196
antimo8@alice.it 2:bf33a982a078 197
antimo8@alice.it 2:bf33a982a078 198 bool LSM9DS1_G::begin(void)
antimo8@alice.it 2:bf33a982a078 199 {
antimo8@alice.it 2:bf33a982a078 200 uint8_t data;
antimo8@alice.it 2:bf33a982a078 201
antimo8@alice.it 2:bf33a982a078 202 data = readRegister(addr(), AG_WHO_AM_I);
antimo8@alice.it 2:bf33a982a078 203 if (data == AG_WHO_AM_I_RETURN){
antimo8@alice.it 2:bf33a982a078 204 if (activate()){
antimo8@alice.it 2:bf33a982a078 205 return true;
antimo8@alice.it 2:bf33a982a078 206 }
antimo8@alice.it 2:bf33a982a078 207 }
antimo8@alice.it 2:bf33a982a078 208 return false;
antimo8@alice.it 2:bf33a982a078 209 }
antimo8@alice.it 2:bf33a982a078 210
antimo8@alice.it 2:bf33a982a078 211 bool
antimo8@alice.it 2:bf33a982a078 212 LSM9DS1_G::activate(void)
antimo8@alice.it 2:bf33a982a078 213 {
antimo8@alice.it 2:bf33a982a078 214 uint8_t data;
antimo8@alice.it 2:bf33a982a078 215
antimo8@alice.it 2:bf33a982a078 216 data = readRegister(addr(), AG_CTRL_REG1_G);
antimo8@alice.it 2:bf33a982a078 217 //data |= POWER_UP;
antimo8@alice.it 2:bf33a982a078 218 data |= AG_ODR_SET;
antimo8@alice.it 2:bf33a982a078 219 writeRegister(addr(), AG_CTRL_REG1_G, data);
antimo8@alice.it 2:bf33a982a078 220
antimo8@alice.it 2:bf33a982a078 221 return true;
antimo8@alice.it 2:bf33a982a078 222 }
antimo8@alice.it 2:bf33a982a078 223
antimo8@alice.it 2:bf33a982a078 224 bool LSM9DS1_G::deactivate(void)
antimo8@alice.it 2:bf33a982a078 225 {
antimo8@alice.it 2:bf33a982a078 226 uint8_t data;
antimo8@alice.it 2:bf33a982a078 227
antimo8@alice.it 2:bf33a982a078 228 data = readRegister(addr(), AG_CTRL_REG1_G);
antimo8@alice.it 2:bf33a982a078 229 data &= ~AG_ODR_SET;
antimo8@alice.it 2:bf33a982a078 230 writeRegister(addr(), AG_CTRL_REG1_G, data);
antimo8@alice.it 2:bf33a982a078 231 return true;
antimo8@alice.it 2:bf33a982a078 232 }
antimo8@alice.it 2:bf33a982a078 233
antimo8@alice.it 2:bf33a982a078 234
antimo8@alice.it 2:bf33a982a078 235 int
antimo8@alice.it 2:bf33a982a078 236 LSM9DS1_G::readX()
antimo8@alice.it 2:bf33a982a078 237 {
antimo8@alice.it 2:bf33a982a078 238 int data = 0;
antimo8@alice.it 2:bf33a982a078 239 if (readInternal(AG_GYR_X_H, AG_GYR_X_L, &data)) {
antimo8@alice.it 2:bf33a982a078 240 _x = data;
antimo8@alice.it 2:bf33a982a078 241 }
antimo8@alice.it 2:bf33a982a078 242 // Decode Gyroscope x-axis [mdps measurement unit]
antimo8@alice.it 2:bf33a982a078 243 return (g_lsb_sentivity * _x);
antimo8@alice.it 2:bf33a982a078 244 }
antimo8@alice.it 2:bf33a982a078 245
antimo8@alice.it 2:bf33a982a078 246 int
antimo8@alice.it 2:bf33a982a078 247 LSM9DS1_G::readY()
antimo8@alice.it 2:bf33a982a078 248 {
antimo8@alice.it 2:bf33a982a078 249 int data = 0;
antimo8@alice.it 2:bf33a982a078 250 if (readInternal(AG_GYR_Y_H, AG_GYR_Y_L, &data)) {
antimo8@alice.it 2:bf33a982a078 251 _y = data;
antimo8@alice.it 2:bf33a982a078 252 }
antimo8@alice.it 2:bf33a982a078 253 // Decode Gyroscope y-axis [mdps measurement unit]
antimo8@alice.it 2:bf33a982a078 254 return (g_lsb_sentivity * _y);
antimo8@alice.it 2:bf33a982a078 255 }
antimo8@alice.it 2:bf33a982a078 256
antimo8@alice.it 2:bf33a982a078 257 int
antimo8@alice.it 2:bf33a982a078 258 LSM9DS1_G::readZ()
antimo8@alice.it 2:bf33a982a078 259 {
antimo8@alice.it 2:bf33a982a078 260 int data = 0;
antimo8@alice.it 2:bf33a982a078 261 if (readInternal(AG_GYR_Z_H, AG_GYR_Z_L, &data)) {
antimo8@alice.it 2:bf33a982a078 262 _z = data;
antimo8@alice.it 2:bf33a982a078 263 }
antimo8@alice.it 2:bf33a982a078 264 // Decode Gyroscope z-axis [mdps measurement unit]
antimo8@alice.it 2:bf33a982a078 265 return (g_lsb_sentivity * _z);
antimo8@alice.it 2:bf33a982a078 266 }
antimo8@alice.it 2:bf33a982a078 267
antimo8@alice.it 2:bf33a982a078 268
antimo8@alice.it 2:bf33a982a078 269 /*****************************************************************************/
antimo8@alice.it 2:bf33a982a078 270 /* Magnetometer */
antimo8@alice.it 2:bf33a982a078 271 /*****************************************************************************/
antimo8@alice.it 2:bf33a982a078 272
antimo8@alice.it 2:bf33a982a078 273 LSM9DS1_M::LSM9DS1_M(void) : LSM9DS1(LSM9DS1_M_ADDRESS)
antimo8@alice.it 2:bf33a982a078 274 {
antimo8@alice.it 2:bf33a982a078 275 _ready_reg = M_ZYX_AXIS_READY;
antimo8@alice.it 2:bf33a982a078 276 _status_reg = M_STATUS_REG;
antimo8@alice.it 2:bf33a982a078 277 }
antimo8@alice.it 2:bf33a982a078 278
antimo8@alice.it 2:bf33a982a078 279 bool LSM9DS1_M::begin(void)
antimo8@alice.it 2:bf33a982a078 280 {
antimo8@alice.it 2:bf33a982a078 281 uint8_t data;
antimo8@alice.it 2:bf33a982a078 282
antimo8@alice.it 2:bf33a982a078 283 data = readRegister(addr(), M_WHO_AM_I);
antimo8@alice.it 2:bf33a982a078 284 if (data == M_WHO_AM_I_RETURN){
antimo8@alice.it 2:bf33a982a078 285 if (activate()){
antimo8@alice.it 2:bf33a982a078 286 return true;
antimo8@alice.it 2:bf33a982a078 287 }
antimo8@alice.it 2:bf33a982a078 288 }
antimo8@alice.it 2:bf33a982a078 289 return false;
antimo8@alice.it 2:bf33a982a078 290 }
antimo8@alice.it 2:bf33a982a078 291
antimo8@alice.it 2:bf33a982a078 292 bool
antimo8@alice.it 2:bf33a982a078 293 LSM9DS1_M::activate(void)
antimo8@alice.it 2:bf33a982a078 294 {
antimo8@alice.it 2:bf33a982a078 295 uint8_t data;
antimo8@alice.it 2:bf33a982a078 296
antimo8@alice.it 2:bf33a982a078 297 data = readRegister(addr(), M_CTRL_REG3_G);
antimo8@alice.it 2:bf33a982a078 298 //data |= POWER_UP;
antimo8@alice.it 2:bf33a982a078 299 //data |= 0x21;
antimo8@alice.it 2:bf33a982a078 300 data &= ~M_OPER_MODE_DIS;
antimo8@alice.it 2:bf33a982a078 301 //data &= (0xFC);
antimo8@alice.it 2:bf33a982a078 302
antimo8@alice.it 2:bf33a982a078 303 writeRegister(addr(), M_CTRL_REG3_G, data);
antimo8@alice.it 2:bf33a982a078 304
antimo8@alice.it 2:bf33a982a078 305 return true;
antimo8@alice.it 2:bf33a982a078 306 }
antimo8@alice.it 2:bf33a982a078 307
antimo8@alice.it 2:bf33a982a078 308 bool
antimo8@alice.it 2:bf33a982a078 309 LSM9DS1_M::deactivate(void)
antimo8@alice.it 2:bf33a982a078 310 {
antimo8@alice.it 2:bf33a982a078 311 uint8_t data;
antimo8@alice.it 2:bf33a982a078 312 data = readRegister(addr(), M_CTRL_REG3_G);
antimo8@alice.it 2:bf33a982a078 313 //data |= POWER_UP;
antimo8@alice.it 2:bf33a982a078 314 //data |= 0x21;
antimo8@alice.it 2:bf33a982a078 315 data |= M_OPER_MODE_DIS;
antimo8@alice.it 2:bf33a982a078 316 writeRegister(addr(), M_CTRL_REG3_G, data);
antimo8@alice.it 2:bf33a982a078 317
antimo8@alice.it 2:bf33a982a078 318 return true;
antimo8@alice.it 2:bf33a982a078 319 }
antimo8@alice.it 2:bf33a982a078 320
antimo8@alice.it 2:bf33a982a078 321 int
antimo8@alice.it 2:bf33a982a078 322 LSM9DS1_M::readX()
antimo8@alice.it 2:bf33a982a078 323 {
antimo8@alice.it 2:bf33a982a078 324 int data = 0;
antimo8@alice.it 2:bf33a982a078 325 if (readInternal(M_X_H, M_X_L, &data)) {
antimo8@alice.it 2:bf33a982a078 326 _x = data;
antimo8@alice.it 2:bf33a982a078 327 }
antimo8@alice.it 2:bf33a982a078 328 // Decode magnetic x-axis [mgauss measurement unit]
antimo8@alice.it 2:bf33a982a078 329 return (m_lsb_sentivity * _x);
antimo8@alice.it 2:bf33a982a078 330 }
antimo8@alice.it 2:bf33a982a078 331
antimo8@alice.it 2:bf33a982a078 332 int
antimo8@alice.it 2:bf33a982a078 333 LSM9DS1_M::readY()
antimo8@alice.it 2:bf33a982a078 334 {
antimo8@alice.it 2:bf33a982a078 335 int data = 0;
antimo8@alice.it 2:bf33a982a078 336 if (readInternal(M_Y_H, M_Y_L, &data)) {
antimo8@alice.it 2:bf33a982a078 337 _y = data;
antimo8@alice.it 2:bf33a982a078 338 }
antimo8@alice.it 2:bf33a982a078 339 // Decode magnetic y-axis [mgauss measurement unit]
antimo8@alice.it 2:bf33a982a078 340 return (m_lsb_sentivity * _y);
antimo8@alice.it 2:bf33a982a078 341 }
antimo8@alice.it 2:bf33a982a078 342
antimo8@alice.it 2:bf33a982a078 343 int
antimo8@alice.it 2:bf33a982a078 344 LSM9DS1_M::readZ()
antimo8@alice.it 2:bf33a982a078 345 {
antimo8@alice.it 2:bf33a982a078 346 int data = 0;
antimo8@alice.it 2:bf33a982a078 347 if (readInternal(M_Z_H, M_Z_L, &data)) {
antimo8@alice.it 2:bf33a982a078 348 _z = data;
antimo8@alice.it 2:bf33a982a078 349 }
antimo8@alice.it 2:bf33a982a078 350 // Decode magnetic z-axis [mgauss measurement unit]
antimo8@alice.it 2:bf33a982a078 351 return (m_lsb_sentivity * _z);
antimo8@alice.it 2:bf33a982a078 352 }
antimo8@alice.it 2:bf33a982a078 353
antimo8@alice.it 2:bf33a982a078 354
antimo8@alice.it 2:bf33a982a078 355 LSM9DS1_A smeAccelerometer;
antimo8@alice.it 2:bf33a982a078 356 LSM9DS1_M smeMagnetic;
antimo8@alice.it 2:bf33a982a078 357 LSM9DS1_G smeGyroscope;