Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- Revision:
- 3:7ee105ee13be
- Parent:
- 2:6b07b1425f3e
--- 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