Sistemi_digitali_integrati / Mbed 2 deprecated Sensor

Dependencies:   mbed

Committer:
ymerdushku
Date:
Thu Dec 01 18:33:20 2016 +0000
Revision:
1:68e3916ad434
Parent:
0:f043a4a4ec8d
Child:
2:6b07b1425f3e
a;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ymerdushku 0:f043a4a4ec8d 1 #include "mbed.h"
ymerdushku 0:f043a4a4ec8d 2 #include <I2C.h>
ymerdushku 1:68e3916ad434 3
ymerdushku 1:68e3916ad434 4 #define LSM6DS0_ADDRESS_WRITE (0xD6) // Configuration Register_write
ymerdushku 1:68e3916ad434 5 #define LSM6DS0_ADDRESS_READ (0xD7)
ymerdushku 1:68e3916ad434 6 #define POWER_ON_ACC (0x20)
ymerdushku 1:68e3916ad434 7 //#define IDENTIFIER (0x0F)
ymerdushku 0:f043a4a4ec8d 8
ymerdushku 0:f043a4a4ec8d 9 I2C i2c(I2C_SDA,I2C_SCL);
ymerdushku 0:f043a4a4ec8d 10 Serial pc(SERIAL_TX, SERIAL_RX);
ymerdushku 1:68e3916ad434 11 char readREG_I2C(char REG_ADDR[1]);
ymerdushku 1:68e3916ad434 12 int setREG_I2C(char REG_ADDR_DATA[2]);
ymerdushku 0:f043a4a4ec8d 13
ymerdushku 0:f043a4a4ec8d 14 int main() {
ymerdushku 1:68e3916ad434 15
ymerdushku 1:68e3916ad434 16
ymerdushku 1:68e3916ad434 17 char X_value[1];
ymerdushku 1:68e3916ad434 18 char address[2];
ymerdushku 1:68e3916ad434 19 char address_read[1];
ymerdushku 1:68e3916ad434 20 address_read[0]=0x0B;
ymerdushku 1:68e3916ad434 21 address[0]=0x0B;
ymerdushku 1:68e3916ad434 22 address[1]=0xB5;
ymerdushku 1:68e3916ad434 23 //ide[0]=readREG_I2C(address);
ymerdushku 1:68e3916ad434 24 //pc.printf(ide);
ymerdushku 1:68e3916ad434 25 setREG_I2C(address);
ymerdushku 1:68e3916ad434 26
ymerdushku 1:68e3916ad434 27 X_value[0]=readREG_I2C(address_read);
ymerdushku 1:68e3916ad434 28 pc.printf("%c",X_value);
ymerdushku 0:f043a4a4ec8d 29
ymerdushku 0:f043a4a4ec8d 30 }
ymerdushku 1:68e3916ad434 31
ymerdushku 0:f043a4a4ec8d 32
ymerdushku 1:68e3916ad434 33
ymerdushku 0:f043a4a4ec8d 34 int setREG_I2C(char REG_ADDR_DATA[2]){ //argument to pass : address register and data to write in
ymerdushku 1:68e3916ad434 35 //i2c.start(); //send start bit
ymerdushku 0:f043a4a4ec8d 36 if ((i2c.write(LSM6DS0_ADDRESS_WRITE,REG_ADDR_DATA,2,0))!=0){ //ADDR+SUB+DATA+STOP, return 0 if ack
ymerdushku 0:f043a4a4ec8d 37 pc.printf("Error, not ack\n");
ymerdushku 0:f043a4a4ec8d 38 return 0;
ymerdushku 0:f043a4a4ec8d 39 } else return 1;
ymerdushku 0:f043a4a4ec8d 40 }
ymerdushku 1:68e3916ad434 41
ymerdushku 1:68e3916ad434 42
ymerdushku 0:f043a4a4ec8d 43 char readREG_I2C(char REG_ADDR[1]){ //argument to pass : address register to read
ymerdushku 0:f043a4a4ec8d 44 char data_read[1];
ymerdushku 1:68e3916ad434 45 //i2c.start(); //send start bit
ymerdushku 1:68e3916ad434 46 int status=i2c.write(LSM6DS0_ADDRESS_WRITE,REG_ADDR,1,1);
ymerdushku 1:68e3916ad434 47 if (status==0){ //ADDR+SUB, return 0 if ack
ymerdushku 0:f043a4a4ec8d 48 if((i2c.read(LSM6DS0_ADDRESS_READ,data_read,1,0))==0){} //ADDR+data+STOP, return 0 if ack
ymerdushku 0:f043a4a4ec8d 49 else{
ymerdushku 1:68e3916ad434 50 pc.printf("Error, not\n");
ymerdushku 0:f043a4a4ec8d 51 }
ymerdushku 0:f043a4a4ec8d 52 } else{
ymerdushku 0:f043a4a4ec8d 53 pc.printf("Error, not ack\n");
ymerdushku 0:f043a4a4ec8d 54 }
ymerdushku 0:f043a4a4ec8d 55 return data_read[0];
ymerdushku 0:f043a4a4ec8d 56 }