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
main.cpp@3:7ee105ee13be, 2016-12-15 (annotated)
- Committer:
- ymerdushku
- Date:
- Thu Dec 15 18:03:07 2016 +0000
- Revision:
- 3:7ee105ee13be
- Parent:
- 2:6b07b1425f3e
VERSIONE FUNZIONA
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ymerdushku | 0:f043a4a4ec8d | 1 | #include "mbed.h" |
ymerdushku | 0:f043a4a4ec8d | 2 | #include <I2C.h> |
ymerdushku | 3:7ee105ee13be | 3 | #include <string.h> |
ymerdushku | 3:7ee105ee13be | 4 | |
ymerdushku | 2:6b07b1425f3e | 5 | #define LSM6DS0_ADDRESS_WRITE (0xD6) // Register_write |
ymerdushku | 2:6b07b1425f3e | 6 | #define LSM6DS0_ADDRESS_READ (0xD7) // Register_read |
ymerdushku | 1:68e3916ad434 | 7 | #define POWER_ON_ACC (0x20) |
ymerdushku | 2:6b07b1425f3e | 8 | #define READ_X_L (0x28) |
ymerdushku | 2:6b07b1425f3e | 9 | #define READ_X_H (0x29) |
ymerdushku | 2:6b07b1425f3e | 10 | #define READ_Y_L (0x2A) |
ymerdushku | 2:6b07b1425f3e | 11 | #define READ_Y_H (0x2B) |
ymerdushku | 2:6b07b1425f3e | 12 | #define READ_Z_L (0x2C) |
ymerdushku | 2:6b07b1425f3e | 13 | #define READ_Z_H (0x2D) |
ymerdushku | 2:6b07b1425f3e | 14 | #define IDENTIFIER (0x0F) |
ymerdushku | 0:f043a4a4ec8d | 15 | |
ymerdushku | 0:f043a4a4ec8d | 16 | I2C i2c(I2C_SDA,I2C_SCL); |
ymerdushku | 0:f043a4a4ec8d | 17 | Serial pc(SERIAL_TX, SERIAL_RX); |
ymerdushku | 3:7ee105ee13be | 18 | char readREG_I2C(char REG_ADDR[1]); |
ymerdushku | 3:7ee105ee13be | 19 | void setREG_I2C(char REG_ADDR_DATA[2]); |
ymerdushku | 0:f043a4a4ec8d | 20 | |
ymerdushku | 0:f043a4a4ec8d | 21 | int main() { |
ymerdushku | 3:7ee105ee13be | 22 | char X_value[2]; |
ymerdushku | 2:6b07b1425f3e | 23 | char ident[1]; |
ymerdushku | 2:6b07b1425f3e | 24 | char data_write[2]; |
ymerdushku | 2:6b07b1425f3e | 25 | char ADDR[1]; |
ymerdushku | 3:7ee105ee13be | 26 | char ADDR_X[1]; |
ymerdushku | 3:7ee105ee13be | 27 | char ADDR_Y[1]; |
ymerdushku | 3:7ee105ee13be | 28 | char ADDR_Z[1]; |
ymerdushku | 2:6b07b1425f3e | 29 | char X[2]; |
ymerdushku | 2:6b07b1425f3e | 30 | char Y[2]; |
ymerdushku | 2:6b07b1425f3e | 31 | char Z[2]; |
ymerdushku | 2:6b07b1425f3e | 32 | |
ymerdushku | 2:6b07b1425f3e | 33 | //read WHO_AM_I |
ymerdushku | 3:7ee105ee13be | 34 | //ADDR[0]=0x0F; |
ymerdushku | 3:7ee105ee13be | 35 | //ident[0]=readREG_I2C(ADDR); |
ymerdushku | 3:7ee105ee13be | 36 | //pc.printf("%c",ident[0]); |
ymerdushku | 3:7ee105ee13be | 37 | |
ymerdushku | 2:6b07b1425f3e | 38 | //power on accelerometer |
ymerdushku | 2:6b07b1425f3e | 39 | data_write[0] = POWER_ON_ACC; |
ymerdushku | 3:7ee105ee13be | 40 | data_write[1] = 0b01100000; //select f=982Hz |
ymerdushku | 2:6b07b1425f3e | 41 | setREG_I2C(data_write); |
ymerdushku | 3:7ee105ee13be | 42 | |
ymerdushku | 3:7ee105ee13be | 43 | /* |
ymerdushku | 2:6b07b1425f3e | 44 | //read X |
ymerdushku | 3:7ee105ee13be | 45 | ADDR_X[0]=READ_X_L; |
ymerdushku | 3:7ee105ee13be | 46 | X[1]=readREG_I2C(ADDR_X); |
ymerdushku | 3:7ee105ee13be | 47 | pc.printf("%c",X[1]); |
ymerdushku | 3:7ee105ee13be | 48 | ADDR_X[0]=READ_X_H; |
ymerdushku | 3:7ee105ee13be | 49 | X[0]=readREG_I2C(ADDR_X); |
ymerdushku | 3:7ee105ee13be | 50 | pc.printf("%c",X[0]); |
ymerdushku | 3:7ee105ee13be | 51 | |
ymerdushku | 2:6b07b1425f3e | 52 | //read Y |
ymerdushku | 3:7ee105ee13be | 53 | ADDR_Y[0]=READ_Y_L; |
ymerdushku | 3:7ee105ee13be | 54 | Y[1]=readREG_I2C(ADDR_Y); |
ymerdushku | 3:7ee105ee13be | 55 | pc.printf("%c",Y[1]); |
ymerdushku | 3:7ee105ee13be | 56 | ADDR_Y[0]=READ_Y_H; |
ymerdushku | 3:7ee105ee13be | 57 | Y[0]=readREG_I2C(ADDR_Y); |
ymerdushku | 3:7ee105ee13be | 58 | pc.printf("%c",Y[0]); |
ymerdushku | 3:7ee105ee13be | 59 | */ |
ymerdushku | 2:6b07b1425f3e | 60 | //read Z |
ymerdushku | 3:7ee105ee13be | 61 | ADDR_Z[0]=READ_Z_H; |
ymerdushku | 3:7ee105ee13be | 62 | Z[1]=readREG_I2C(ADDR_Z); |
ymerdushku | 3:7ee105ee13be | 63 | pc.printf("%c",Z[1]); |
ymerdushku | 3:7ee105ee13be | 64 | ADDR_Z[0]=READ_Z_L; |
ymerdushku | 3:7ee105ee13be | 65 | Z[0]=readREG_I2C(ADDR_Z); |
ymerdushku | 3:7ee105ee13be | 66 | pc.printf("%c",Z[0]); |
ymerdushku | 3:7ee105ee13be | 67 | |
ymerdushku | 0:f043a4a4ec8d | 68 | } |
ymerdushku | 1:68e3916ad434 | 69 | |
ymerdushku | 0:f043a4a4ec8d | 70 | |
ymerdushku | 1:68e3916ad434 | 71 | |
ymerdushku | 3:7ee105ee13be | 72 | void setREG_I2C(char REG_ADDR_DATA[2]) //argument to pass : address register and data to write in |
ymerdushku | 2:6b07b1425f3e | 73 | { |
ymerdushku | 3:7ee105ee13be | 74 | if ((i2c.write(LSM6DS0_ADDRESS_WRITE,REG_ADDR_DATA,2,0))!=0)//ADDR+SUB+DATA+STOP, return 0 if ack |
ymerdushku | 2:6b07b1425f3e | 75 | { |
ymerdushku | 3:7ee105ee13be | 76 | pc.printf("Error, not ack\n"); |
ymerdushku | 2:6b07b1425f3e | 77 | } |
ymerdushku | 3:7ee105ee13be | 78 | |
ymerdushku | 0:f043a4a4ec8d | 79 | } |
ymerdushku | 1:68e3916ad434 | 80 | |
ymerdushku | 2:6b07b1425f3e | 81 | // read register |
ymerdushku | 3:7ee105ee13be | 82 | char readREG_I2C(char REG_ADDR[1]) //argument to pass : address register to read |
ymerdushku | 2:6b07b1425f3e | 83 | { |
ymerdushku | 2:6b07b1425f3e | 84 | char data_read[1]; |
ymerdushku | 2:6b07b1425f3e | 85 | |
ymerdushku | 2:6b07b1425f3e | 86 | i2c.write(LSM6DS0_ADDRESS_WRITE,REG_ADDR,1,1); //ADDR+SUB, return 0 if ack |
ymerdushku | 2:6b07b1425f3e | 87 | i2c.read(LSM6DS0_ADDRESS_READ,data_read,1,0); //ADDR+data+STOP, return 0 if ack |
ymerdushku | 3:7ee105ee13be | 88 | |
ymerdushku | 0:f043a4a4ec8d | 89 | return data_read[0]; |
ymerdushku | 0:f043a4a4ec8d | 90 | } |