Dummy commit.

Dependents:   iBeacon acnsensa acnSENSA

Fork of ACD52832_LSM9DS1 by Filip Hormot

Committer:
Dautor
Date:
Fri Mar 02 12:37:11 2018 +0000
Revision:
5:d6a0d907988f
Parent:
4:a1a57aaacc4c
Made naming be more consistent

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Anunnaki 0:da46ed0f1363 1 #include "mbed.h"
Anunnaki 0:da46ed0f1363 2 #include "LSM9DS1.h"
Anunnaki 0:da46ed0f1363 3 #include "LSM9DS1_RegVals.h"
Anunnaki 1:45447b012eea 4 #include "acd52832_bsp.h"
Anunnaki 0:da46ed0f1363 5
jurica238814 4:a1a57aaacc4c 6 LSM9DS1::LSM9DS1(I2C *i2c){
jurica238814 4:a1a57aaacc4c 7 _i2c = i2c;
Anunnaki 0:da46ed0f1363 8 }
Anunnaki 0:da46ed0f1363 9
Dautor 5:d6a0d907988f 10 void LSM9DS1::startMagnetometer(){
Anunnaki 0:da46ed0f1363 11 char data[2];
Anunnaki 0:da46ed0f1363 12
Anunnaki 0:da46ed0f1363 13 data[0] = (char)CTRL_REG1_M; // Target register
Anunnaki 0:da46ed0f1363 14 data[1] = (char)0x7C; // Data to write
jurica238814 4:a1a57aaacc4c 15 _i2c->write(TWI_MAG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 16
Anunnaki 0:da46ed0f1363 17 data[0] = (char)CTRL_REG2_M; // Target register
jurica238814 2:4a4b17ad577e 18 data[1] = (char)0x00; // Full scale for the sensor (+-4g)
jurica238814 4:a1a57aaacc4c 19 _i2c->write(TWI_MAG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 20
Anunnaki 0:da46ed0f1363 21 data[0] = (char)CTRL_REG3_M; // Target register
Anunnaki 0:da46ed0f1363 22 data[1] = (char)0x00; // Data to write
jurica238814 4:a1a57aaacc4c 23 _i2c->write(TWI_MAG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 24
Anunnaki 0:da46ed0f1363 25 data[0] = (char)CTRL_REG4_M; // Target register
Anunnaki 1:45447b012eea 26 data[1] = (char)(3<<3); // Data to write
jurica238814 4:a1a57aaacc4c 27 _i2c->write(TWI_MAG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 28
Anunnaki 0:da46ed0f1363 29 data[0] = (char)CTRL_REG5_M; // Target register
Anunnaki 0:da46ed0f1363 30 data[1] = (char)0x00; // Data to write
jurica238814 4:a1a57aaacc4c 31 _i2c->write(TWI_MAG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 32 }
Anunnaki 0:da46ed0f1363 33
Dautor 5:d6a0d907988f 34 void LSM9DS1::readMagnetometer(int16_t *results){
Anunnaki 0:da46ed0f1363 35 char results_[6];
Dautor 5:d6a0d907988f 36 int16_t resultFinal[3];
Anunnaki 0:da46ed0f1363 37 char out_x_l_m = OUT_X_L_M;
Anunnaki 0:da46ed0f1363 38
jurica238814 4:a1a57aaacc4c 39 _i2c->write(TWI_MAG_ADDR, &out_x_l_m, 1, true);
jurica238814 4:a1a57aaacc4c 40 _i2c->read(TWI_MAG_ADDR, results_, 6, 0);
Dautor 5:d6a0d907988f 41 resultFinal[0] = ((results_[1]<<8) | results_[0]);
Dautor 5:d6a0d907988f 42 resultFinal[1] = ((results_[3]<<8) | results_[2]);
Dautor 5:d6a0d907988f 43 resultFinal[2] = ((results_[5]<<8) | results_[4]);
Anunnaki 0:da46ed0f1363 44
Dautor 5:d6a0d907988f 45 *(results) = resultFinal[0];
Dautor 5:d6a0d907988f 46 *(results + 1) = resultFinal[1];
Dautor 5:d6a0d907988f 47 *(results + 2) = resultFinal[2];
Anunnaki 0:da46ed0f1363 48 }
Anunnaki 0:da46ed0f1363 49
Dautor 5:d6a0d907988f 50 void LSM9DS1::startAccelerometer(){
Anunnaki 0:da46ed0f1363 51 char data[2];
Anunnaki 0:da46ed0f1363 52
Anunnaki 0:da46ed0f1363 53 data[0] = (char)CTRL_REG5_XL; // Target register
Anunnaki 0:da46ed0f1363 54 data[1] = (char)0x38; // Data to write
jurica238814 4:a1a57aaacc4c 55 _i2c->write(TWI_AG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 56
Anunnaki 0:da46ed0f1363 57
Anunnaki 0:da46ed0f1363 58 data[0] = (char)CTRL_REG6_XL; // Target register
jurica238814 2:4a4b17ad577e 59 data[1] = (char)0xC7; // +-2g -> See reference manual for more info (page 52)
jurica238814 4:a1a57aaacc4c 60 _i2c->write(TWI_AG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 61 }
Anunnaki 0:da46ed0f1363 62
Dautor 5:d6a0d907988f 63 void LSM9DS1::readAccelerometer(int16_t *results){
Anunnaki 0:da46ed0f1363 64 char results_[6];
Dautor 5:d6a0d907988f 65 int16_t resultFinal[3];
Anunnaki 0:da46ed0f1363 66 char out_x_l_xl = OUT_X_L_XL;
Anunnaki 0:da46ed0f1363 67
jurica238814 4:a1a57aaacc4c 68 _i2c->write(TWI_AG_ADDR, &out_x_l_xl, 1, true);
jurica238814 4:a1a57aaacc4c 69 _i2c->read(TWI_AG_ADDR, results_, 6, 0);
Dautor 5:d6a0d907988f 70 resultFinal[0] = ((results_[1]<<8) | results_[0]);
Dautor 5:d6a0d907988f 71 resultFinal[1] = ((results_[3]<<8) | results_[2]);
Dautor 5:d6a0d907988f 72 resultFinal[2] = ((results_[5]<<8) | results_[4]);
Anunnaki 0:da46ed0f1363 73
Dautor 5:d6a0d907988f 74 *(results) = resultFinal[0];
Dautor 5:d6a0d907988f 75 *(results + 1) = resultFinal[1];
Dautor 5:d6a0d907988f 76 *(results + 2) = resultFinal[2];
Anunnaki 0:da46ed0f1363 77 }
Anunnaki 0:da46ed0f1363 78
Dautor 5:d6a0d907988f 79 void LSM9DS1::startGyroscope(){
Anunnaki 0:da46ed0f1363 80 char data[2];
Anunnaki 0:da46ed0f1363 81
Anunnaki 1:45447b012eea 82 data[0] = (char)CTRL_REG6_XL; // Target register
Anunnaki 1:45447b012eea 83 data[1] = (char)0xC7 & (char)0x1F; // Data to write
jurica238814 4:a1a57aaacc4c 84 _i2c->write(TWI_AG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 85
Anunnaki 0:da46ed0f1363 86 data[0] = (char)CTRL_REG1_G; // Target register
jurica238814 2:4a4b17ad577e 87 data[1] = (char)0xC0; // 245 DPS scale
jurica238814 4:a1a57aaacc4c 88 _i2c->write(TWI_AG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 89
Anunnaki 0:da46ed0f1363 90
Anunnaki 0:da46ed0f1363 91 data[0] = (char)CTRL_REG2_G; // Target register
Anunnaki 0:da46ed0f1363 92 data[1] = (char)0x00; // Data to write
jurica238814 4:a1a57aaacc4c 93 _i2c->write(TWI_AG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 94
Anunnaki 0:da46ed0f1363 95
Anunnaki 0:da46ed0f1363 96 data[0] = (char)CTRL_REG3_G; // Target register
Anunnaki 0:da46ed0f1363 97 data[1] = (char)0x00; // Data to write
jurica238814 4:a1a57aaacc4c 98 _i2c->write(TWI_AG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 99
Anunnaki 0:da46ed0f1363 100
Anunnaki 0:da46ed0f1363 101 data[0] = (char)CTRL_REG4; // Target register
Anunnaki 0:da46ed0f1363 102 data[1] = (char)0x3A; // Data to write
jurica238814 4:a1a57aaacc4c 103 _i2c->write(TWI_AG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 104
Anunnaki 0:da46ed0f1363 105
Anunnaki 0:da46ed0f1363 106 data[0] = (char)ORIENT_CFG_G; // Target register
Anunnaki 0:da46ed0f1363 107 data[1] = (char)0x00; // Data to write
jurica238814 4:a1a57aaacc4c 108 _i2c->write(TWI_AG_ADDR, data, 0x02,0);
Anunnaki 0:da46ed0f1363 109
Anunnaki 0:da46ed0f1363 110 }
Anunnaki 0:da46ed0f1363 111
Dautor 5:d6a0d907988f 112 void LSM9DS1::readGyroscope(int16_t *results){
Anunnaki 0:da46ed0f1363 113 char results_[6];
Dautor 5:d6a0d907988f 114 int16_t resultFinal[3];
Anunnaki 0:da46ed0f1363 115 char out_x_l_g = OUT_X_L_G;
Anunnaki 0:da46ed0f1363 116
jurica238814 4:a1a57aaacc4c 117 _i2c->write(TWI_AG_ADDR, &out_x_l_g, 1, true);
jurica238814 4:a1a57aaacc4c 118 _i2c->read(TWI_AG_ADDR, results_, 6, 0);
Dautor 5:d6a0d907988f 119 resultFinal[0] = ((results_[1]<<8) | results_[0]);
Dautor 5:d6a0d907988f 120 resultFinal[1] = ((results_[3]<<8) | results_[2]);
Dautor 5:d6a0d907988f 121 resultFinal[2] = ((results_[5]<<8) | results_[4]);
Anunnaki 0:da46ed0f1363 122
Dautor 5:d6a0d907988f 123 *(results) = resultFinal[0];
Dautor 5:d6a0d907988f 124 *(results + 1) = resultFinal[1];
Dautor 5:d6a0d907988f 125 *(results + 2) = resultFinal[2];
Anunnaki 0:da46ed0f1363 126 }