Dummy commit.
Dependents: iBeacon acnsensa acnSENSA
Fork of ACD52832_LSM9DS1 by
LSM9DS1.cpp@5:d6a0d907988f, 2018-03-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |