Sistemi_digitali_integrati / Mbed 2 deprecated Sensor

Dependencies:   mbed

Revision:
3:7ee105ee13be
Parent:
2:6b07b1425f3e
diff -r 6b07b1425f3e -r 7ee105ee13be main.cpp
--- a/main.cpp	Sat Dec 10 18:38:37 2016 +0000
+++ b/main.cpp	Thu Dec 15 18:03:07 2016 +0000
@@ -1,6 +1,7 @@
 #include "mbed.h"
 #include <I2C.h>
- 
+#include <string.h>
+
 #define LSM6DS0_ADDRESS_WRITE (0xD6) //  Register_write
 #define LSM6DS0_ADDRESS_READ (0xD7) //  Register_read
 #define POWER_ON_ACC (0x20)
@@ -14,68 +15,76 @@
 
 I2C i2c(I2C_SDA,I2C_SCL);
 Serial pc(SERIAL_TX, SERIAL_RX);
-char readREG_I2C(char REG_ADDR[]);
-int setREG_I2C(char REG_ADDR_DATA[]);
+char readREG_I2C(char REG_ADDR[1]);
+void setREG_I2C(char REG_ADDR_DATA[2]);
 
 int main() {
+    char X_value[2];
     char ident[1];
     char data_write[2];
     char ADDR[1];
+    char ADDR_X[1];
+    char ADDR_Y[1];
+    char ADDR_Z[1];
     char X[2];
     char Y[2];
     char Z[2];
         
     //read WHO_AM_I
-    ADDR[0]=IDENTIFIER;
-    ident[0]=readREG_I2C(ADDR);
-    
+    //ADDR[0]=0x0F;
+    //ident[0]=readREG_I2C(ADDR);
+    //pc.printf("%c",ident[0]);
+ 
     //power on accelerometer
     data_write[0] = POWER_ON_ACC;
-    data_write[1] = 0x06; //select f=982Hz
+    data_write[1] = 0b01100000; //select f=982Hz
     setREG_I2C(data_write);
-    
+
+    /*
     //read X
-    ADDR[0]=READ_X_L;
-    X[0]=readREG_I2C(ADDR);
-    ADDR[0]=READ_X_H;
-    X[1]=readREG_I2C(ADDR);
-    pc.printf("%c",X);
-    
+    ADDR_X[0]=READ_X_L;
+    X[1]=readREG_I2C(ADDR_X);
+    pc.printf("%c",X[1]);
+    ADDR_X[0]=READ_X_H;
+    X[0]=readREG_I2C(ADDR_X);
+    pc.printf("%c",X[0]);
+ 
     //read Y
-    ADDR[0]=READ_Y_L;
-    Y[0]=readREG_I2C(ADDR);
-    ADDR[0]=READ_Y_H;
-    Y[1]=readREG_I2C(ADDR);
-    pc.printf("%c",Y);
-    
+    ADDR_Y[0]=READ_Y_L;
+    Y[1]=readREG_I2C(ADDR_Y);
+    pc.printf("%c",Y[1]);
+    ADDR_Y[0]=READ_Y_H;
+    Y[0]=readREG_I2C(ADDR_Y);
+    pc.printf("%c",Y[0]);
+    */
     //read Z
-    ADDR[0]=READ_Z_L;
-    Z[0]=readREG_I2C(ADDR);
-    ADDR[0]=READ_Z_H;
-    Z[1]=readREG_I2C(ADDR);
-    pc.printf("%c",Z);
+    ADDR_Z[0]=READ_Z_H;
+    Z[1]=readREG_I2C(ADDR_Z);
+    pc.printf("%c",Z[1]);
+    ADDR_Z[0]=READ_Z_L;
+    Z[0]=readREG_I2C(ADDR_Z);
+    pc.printf("%c",Z[0]);
+     
 }
  
 
  
-int setREG_I2C(char REG_ADDR_DATA[]) //argument to pass : address register and data to write in
+void setREG_I2C(char REG_ADDR_DATA[2]) //argument to pass : address register and data to write in
 { 
-    if ((i2c.write(LSM6DS0_ADDRESS_WRITE,REG_ADDR_DATA,2,0))==0)//ADDR+SUB+DATA+STOP, return 0 if ack
+    if ((i2c.write(LSM6DS0_ADDRESS_WRITE,REG_ADDR_DATA,2,0))!=0)//ADDR+SUB+DATA+STOP, return 0 if ack
     { 
-        pc.printf("Error, not ack\n");
-        return 0;       
+        pc.printf("Error, not ack\n");      
     } 
-    else 
-        return 1;
+   
 }
  
 // read register
-char readREG_I2C(char REG_ADDR[]) //argument to pass : address register to read
+char readREG_I2C(char REG_ADDR[1]) //argument to pass : address register to read
 { 
     char data_read[1];
     
         i2c.write(LSM6DS0_ADDRESS_WRITE,REG_ADDR,1,1);  //ADDR+SUB, return 0 if ack
         i2c.read(LSM6DS0_ADDRESS_READ,data_read,1,0); //ADDR+data+STOP, return 0 if ack
-        
+   
     return data_read[0];
 }
\ No newline at end of file