Mems sensor

Revision:
1:45447b012eea
Parent:
0:da46ed0f1363
--- 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]);