Sistemi_digitali_integrati / Mbed 2 deprecated Sensor

Dependencies:   mbed

main.cpp

Committer:
ymerdushku
Date:
2016-12-01
Revision:
1:68e3916ad434
Parent:
0:f043a4a4ec8d
Child:
2:6b07b1425f3e

File content as of revision 1:68e3916ad434:

#include "mbed.h"
#include <I2C.h>
 
#define LSM6DS0_ADDRESS_WRITE (0xD6) // Configuration Register_write
#define LSM6DS0_ADDRESS_READ (0xD7)
#define POWER_ON_ACC (0x20)
//#define IDENTIFIER (0x0F)

I2C i2c(I2C_SDA,I2C_SCL);
Serial pc(SERIAL_TX, SERIAL_RX);
char readREG_I2C(char REG_ADDR[1]);
int setREG_I2C(char REG_ADDR_DATA[2]);

int main() {
    
    
char X_value[1];
char address[2];
char address_read[1];
address_read[0]=0x0B;
address[0]=0x0B;
address[1]=0xB5;
//ide[0]=readREG_I2C(address);
 //pc.printf(ide);
 setREG_I2C(address);
 
X_value[0]=readREG_I2C(address_read);
pc.printf("%c",X_value);

}
 

 
int setREG_I2C(char REG_ADDR_DATA[2]){ //argument to pass : address register and data to write in
//i2c.start(); //send start bit
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;       
    } else return 1;
}
 
 
char readREG_I2C(char REG_ADDR[1]){ //argument to pass : address register to read
char data_read[1];
//i2c.start(); //send start bit
int status=i2c.write(LSM6DS0_ADDRESS_WRITE,REG_ADDR,1,1);
if (status==0){ //ADDR+SUB, return 0 if ack
    if((i2c.read(LSM6DS0_ADDRESS_READ,data_read,1,0))==0){} //ADDR+data+STOP, return 0 if ack
            else{
            pc.printf("Error, not\n");
            }
    } else{
        pc.printf("Error, not ack\n");
        }
    return data_read[0];
}