codice
Dependencies: X_NUCLEO_IKS01A1 mbed
Diff: main.cpp
- Revision:
- 0:44863862864b
- Child:
- 1:c3bb15cf5b08
diff -r 000000000000 -r 44863862864b main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Nov 24 18:07:10 2016 +0000 @@ -0,0 +1,66 @@ +#include "mbed.h" +#include "I2C.h" +#include "Serial.h" +#include "x_nucleo_iks01a1.h" +#define OUT_X_XL (0x28) +#define CTRL_REG6_XL (0x20) +#define XL_ADDR (0b1101010) + +//port D15 SCL clock +//port D14 SDA data + +Serial pc_comm(SERIAL_TX, SERIAL_RX); +I2C xel_bus(I2C_SDA, I2C_SCL); +char xel_outx[2], xel_outy[2], xel_outz[2]; + +void setupRoutine(); + +void writeRoutine(); + +int readRoutine(); + +int main() +{ + setupRoutine(); + while(1) + { + pc_comm.printf("I'm working!!!\n"); + if( !readRoutine() ) + pc_comm.printf("Data read failed\n"); + else + pc_comm.printf("%d %d\n",xel_outx[0],xel_outx[1]); + wait(1.0); + //xel_bus.read(0x2A,xel_outx,2); + //xel_bus.read(0x28,xel_outx,2); + } +} + +void setupRoutine() +{ + //pc_comm = new Serial(D1,D0,9600); + //xel_bus = new I2C(D15, D14); + xel_bus.frequency(10); + xel_Routine(); + //CTRL_REG6_XL = 0x20; //write to register to enable accelerometer //fondo scala ±2g, ODR= 10Hz ----> BW=408Hz, Filtro AA= 408Hz + //CTRL_REG1_G = 0x10; //write to register to enable the accelerometer and gyroscope +} + +void xel_Routine() +{ + char config[2]; + config[0] = CTRL_REG6_XL; + config[1] = 0x00; + xel_bus.write(XL_ADDR, config, 1); // write to register to enable accelerometer + config[1] = 0x20; + xel_bus.write(XL_ADDR, config, 2); // fondo scala ±2g, ODR= 10Hz ----> BW=408Hz, Filtro AA= 408Hz +} + +int readRoutine() +{ + int result; + //xel_bus.start(); + xel_bus.write(XL_ADDR, OUT_X_XL, 1, 1); + result = xel_bus.read(XL_ADDR, xel_outx, 2, 0); + xel_bus.stop(); + +} \ No newline at end of file