Mems sensor
Revision 1:45447b012eea, committed 2016-09-23
- Comitter:
- Anunnaki
- Date:
- Fri Sep 23 12:15:01 2016 +0000
- Parent:
- 0:da46ed0f1363
- Commit message:
- Changed faulty addresses
Changed in this revision
diff -r da46ed0f1363 -r 45447b012eea LSM9DS1.cpp --- a/LSM9DS1.cpp Thu Sep 22 14:13:04 2016 +0000 +++ b/LSM9DS1.cpp Fri Sep 23 12:15:01 2016 +0000 @@ -1,6 +1,7 @@ #include "mbed.h" #include "LSM9DS1.h" #include "LSM9DS1_RegVals.h" +#include "acd52832_bsp.h" LSM9DS1::LSM9DS1(I2C i2c) : _i2c(i2c){ startAcc(); @@ -16,7 +17,7 @@ _i2c.write(TWI_MAG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG2_M; // Target register - data[1] = (char)0x60; // Data to write + data[1] = (char)0x00; // Data to write _i2c.write(TWI_MAG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG3_M; // Target register @@ -24,18 +25,17 @@ _i2c.write(TWI_MAG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG4_M; // Target register - data[1] = (char)0x0C; // Data to write + data[1] = (char)(3<<3); // Data to write _i2c.write(TWI_MAG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG5_M; // Target register data[1] = (char)0x00; // Data to write _i2c.write(TWI_MAG_ADDR, data, 0x02,0); - } -void LSM9DS1::readMag(float *results){ +void LSM9DS1::readMag(int16_t *results){ char results_[6]; - float res_final[3]; + int16_t res_final[3]; char out_x_l_m = OUT_X_L_M; _i2c.write(TWI_MAG_ADDR, &out_x_l_m, 1, true); @@ -54,23 +54,21 @@ data[0] = (char)CTRL_REG5_XL; // Target register data[1] = (char)0x38; // Data to write - _i2c.write(TWI_MAG_ADDR, data, 0x02,0); + _i2c.write(TWI_AG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG6_XL; // Target register data[1] = (char)0xC7; // Data to write - _i2c.write(TWI_MAG_ADDR, data, 0x02,0); - - + _i2c.write(TWI_AG_ADDR, data, 0x02,0); } -void LSM9DS1::readAcc(float *results){ +void LSM9DS1::readAcc(int16_t *results){ char results_[6]; - float res_final[3]; + int16_t res_final[3]; char out_x_l_xl = OUT_X_L_XL; - _i2c.write(TWI_MAG_ADDR, &out_x_l_xl, 1, true); - _i2c.read(TWI_MAG_ADDR, results_, 6, 0); + _i2c.write(TWI_AG_ADDR, &out_x_l_xl, 1, true); + _i2c.read(TWI_AG_ADDR, results_, 6, 0); res_final[0] = ((results_[1]<<8) | results_[0]); res_final[1] = ((results_[3]<<8) | results_[2]); res_final[2] = ((results_[5]<<8) | results_[4]); @@ -83,47 +81,43 @@ void LSM9DS1::startGyro(){ char data[2]; - // If GYRO is defines (gyro enabled) - #ifdef GYRO - data[0] = (char)CTRL_REG6_XL; // Target register - data[1] = (char)0xC7 & (char)0x1F; // Data to write - = _i2c.write(TWI_MAG_ADDR, data, 0x02,0); - - #endif + data[0] = (char)CTRL_REG6_XL; // Target register + data[1] = (char)0xC7 & (char)0x1F; // Data to write + _i2c.write(TWI_AG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG1_G; // Target register data[1] = (char)0xC0; // Data to write - _i2c.write(TWI_MAG_ADDR, data, 0x02,0); + _i2c.write(TWI_AG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG2_G; // Target register data[1] = (char)0x00; // Data to write - _i2c.write(TWI_MAG_ADDR, data, 0x02,0); + _i2c.write(TWI_AG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG3_G; // Target register data[1] = (char)0x00; // Data to write - _i2c.write(TWI_MAG_ADDR, data, 0x02,0); + _i2c.write(TWI_AG_ADDR, data, 0x02,0); data[0] = (char)CTRL_REG4; // Target register data[1] = (char)0x3A; // Data to write - _i2c.write(TWI_MAG_ADDR, data, 0x02,0); + _i2c.write(TWI_AG_ADDR, data, 0x02,0); data[0] = (char)ORIENT_CFG_G; // Target register data[1] = (char)0x00; // Data to write - _i2c.write(TWI_MAG_ADDR, data, 0x02,0); + _i2c.write(TWI_AG_ADDR, data, 0x02,0); } -void LSM9DS1::readGyro(float *results){ +void LSM9DS1::readGyro(int16_t *results){ char results_[6]; - float res_final[3]; + int16_t res_final[3]; char out_x_l_g = OUT_X_L_G; - _i2c.write(TWI_MAG_ADDR, &out_x_l_g, 1, true); - _i2c.read(TWI_MAG_ADDR, results_, 6, 0); + _i2c.write(TWI_AG_ADDR, &out_x_l_g, 1, true); + _i2c.read(TWI_AG_ADDR, results_, 6, 0); res_final[0] = ((results_[1]<<8) | results_[0]); res_final[1] = ((results_[3]<<8) | results_[2]); res_final[2] = ((results_[5]<<8) | results_[4]);
diff -r da46ed0f1363 -r 45447b012eea LSM9DS1.h --- a/LSM9DS1.h Thu Sep 22 14:13:04 2016 +0000 +++ b/LSM9DS1.h Fri Sep 23 12:15:01 2016 +0000 @@ -5,11 +5,11 @@ public: LSM9DS1(I2C i2c); void startMag(void); - void readMag(float *results); + void readMag(int16_t *results); void startAcc(void); - void readAcc(float *results); + void readAcc(int16_t *results); void startGyro(void); - void readGyro(float *results); + void readGyro(int16_t *results); private: I2C _i2c; }; \ No newline at end of file
diff -r da46ed0f1363 -r 45447b012eea LSM9DS1_RegVals.h --- a/LSM9DS1_RegVals.h Thu Sep 22 14:13:04 2016 +0000 +++ b/LSM9DS1_RegVals.h Fri Sep 23 12:15:01 2016 +0000 @@ -4,10 +4,7 @@ * WARRANTY of ANY KIND is provided. This heading must NOT be removed from * the file. * - */ - - //Magnetometer I2C address - #define TWI_MAG_ADDR (0x1C << 1) + */ //Accelerometer and Gyroscope registars addresses #define ACT_THS 0x04