Mems sensor

Files at this revision

API Documentation at this revision

Comitter:
Anunnaki
Date:
Fri Sep 23 12:15:01 2016 +0000
Parent:
0:da46ed0f1363
Commit message:
Changed faulty addresses

Changed in this revision

LSM9DS1.cpp Show annotated file Show diff for this revision Revisions of this file
LSM9DS1.h Show annotated file Show diff for this revision Revisions of this file
LSM9DS1_RegVals.h Show annotated file Show diff for this revision Revisions of this file
--- 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]);
--- 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
--- 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