i2c trial - does'nt work
Dependencies: ACD_ePaper aconno_I2C aconno_bsp mbed
Fork of acd52832_LSM9DS1 by
Diff: main.cpp
- Revision:
- 1:e97c56fb9629
- Parent:
- 0:940647793667
--- a/main.cpp Thu Sep 22 11:38:40 2016 +0000 +++ b/main.cpp Wed Feb 14 21:16:43 2018 +0000 @@ -1,4 +1,13 @@ -/* Copyright (c) 2016 Aconno. All Rights Reserved. +//plan of debugging and what the result was +//what the problem is and how :lessons learned what was tried +//your own development and knowledge +//analysis report - working hard thinking throug the problems +//less is more - essential information +//what your thinkijg is what problems are and what u tried +//point form + + + /* Copyright (c) 2016 Aconno. All Rights Reserved. * * Licensees are granted free, non-transferable use of the information. NO * WARRANTY of ANY KIND is provided. This heading must NOT be removed from @@ -9,17 +18,23 @@ #include "mbed.h" #include "acd52832_bsp.h" -#include "LSM9DS1_regs.h" -#include "LSM9DS1_defVals.h" +//#include "LSM9DS1_regs.h" +//#include "LSM9DS1_defVals.h" +#include "LSM9DS1.h" #include "GDEP015OC1.h" +#include "aconno_i2c.h" +//#include "main.h" // #define GYRO -SPI spi(p3, NC, p4); +SPI spi(p3, NC, p4); //keep this spi connection - for e paper display GDEP015OC1 epd = GDEP015OC1(spi, p5, p6, p7, p8); // Initialize I2C protocol I2C mems(PIN_EXP_SDA, PIN_EXP_SCL); +char memsI2CAddress = I2C_ADDRESS; +LSM9DS1 mems(&i2c, memsI2CAddress); + DigitalOut RED(PIN_LED_RED); DigitalOut GREEN(PIN_LED_GREEN); @@ -27,6 +42,56 @@ DigitalOut LEDD(PIN_LED); +uint8_t LSM9DS1::enableAxes(Axis axis){ + char ctrl1Copy; + i2c.readFromReg((char)CTRL_REG5_XL, &ctrl1Copy, 1); + ctrl1Copy |= axis; + i2c.writeToReg((char)CTRL_REG6_XL, &ctrl1Copy, 1); + return 0; +} + +int16_t LSM9DS1::readXAxis(){ + int16_t rawData; + char tempData; + // Make sure new data is ready + do{ + i2c.readFromReg((char)STATUS_REG_0, &tempData, 1); + }while(!(tempData & 0x08)); + do{ + i2c.readFromReg((char)STATUS_REG_0, &tempData, 1); + }while(!(tempData & 0x80)); + // Same data have been overwritten + + i2c.readFromReg((char)OUT_X_H_XL, &tempData, 1); + rawData = (int8_t)tempData << 8; + i2c.readFromReg((char)OUT_X_L_XL, &tempData, 1); + rawData |= (int8_t)tempData; + return rawData; +} + +int16_t LSM9DS1::readYAxis(){ + int16_t rawData; + char tempData; + i2c.readFromReg((char)OUT_Y_H_XL, &tempData, 1); + rawData = (int8_t)tempData << 8; + i2c.readFromReg((char)OUT_Y_L_XL, &tempData, 1); + rawData |= (int8_t)tempData; + return rawData; +} + +int16_t LSM9DS1::readZAxis(){ + int16_t rawData; + char tempData; + i2c.readFromReg((char)OUT_Z_H_XL, &tempData, 1); + rawData = (int8_t)tempData << 8; + i2c.readFromReg((char)OUT_Z_L_XL, &tempData, 1); + rawData |= (int8_t)tempData; + return rawData; +} + + + + void check(bool success) { if(!success) { @@ -46,44 +111,34 @@ -void start_mag() + + + + +void start_acc() { char data[2]; bool success; - - data[0] = (char)CTRL_REG1_M; // Target register - data[1] = (char)0x7C; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - - data[0] = (char)CTRL_REG2_M; // Target register - data[1] = (char)0x60; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); + + data[0] = (char)CTRL_REG5_XL; // Target register + data[1] = (char)0x38; // Data to write + success = mems.write(TWI_AG_ADDR, data, 0x02,0); check(success); - - data[0] = (char)CTRL_REG3_M; // Target register - data[1] = (char)0x00; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); + + data[0] = (char)CTRL_REG6_XL; // Target register + data[1] = (char)0xC7; // Data to write + success = mems.write(TWI_AG_ADDR, data, 0x02,0); check(success); - - data[0] = (char)CTRL_REG4_M; // Target register - data[1] = (char)0x0C; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - - data[0] = (char)CTRL_REG5_M; // Target register - data[1] = (char)0x00; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); + } -void read_mag(float *results){ +void read_acc(float *results){ char results_[6]; float res_final[3]; - char out_x_l_m = OUT_X_L_M; + char out_x_l_xl = OUT_X_L_XL; - check (mems.write(TWI_MAG_ADDR, &out_x_l_m, 1, true)); - check (mems.read(TWI_MAG_ADDR, results_, 6, 0)); + check (mems.write(TWI_AG_ADDR, &out_x_l_xl, 1, true)); + check (mems.read(TWI_AG_ADDR, results_, 6, 0)); res_final[0] = ((results_[1]<<8) | results_[0]); res_final[1] = ((results_[3]<<8) | results_[2]); res_final[2] = ((results_[5]<<8) | results_[4]); @@ -93,93 +148,13 @@ *(results + 2) = res_final[2]; } -void start_acc() -{ - char data[2]; - bool success; - - data[0] = (char)CTRL_REG5_XL; // Target register - data[1] = (char)0x38; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - - data[0] = (char)CTRL_REG6_XL; // Target register - data[1] = (char)0xC7; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - -} - -void read_acc(float *results){ - char results_[6]; - float res_final[3]; - char out_x_l_xl = OUT_X_L_XL; - - check (mems.write(TWI_MAG_ADDR, &out_x_l_xl, 1, true)); - check (mems.read(TWI_MAG_ADDR, results_, 6, 0)); - res_final[0] = ((results_[1]<<8) | results_[0]); - res_final[1] = ((results_[3]<<8) | results_[2]); - res_final[2] = ((results_[5]<<8) | results_[4]); - - *(results) = res_final[0]; - *(results + 1) = res_final[1]; - *(results + 2) = res_final[2]; -} - -void start_gyro(){ - char data[2]; - bool success; - - // If GYRO is defines (gyro enabled) - #ifdef GYRO - data[0] = (char)CTRL_REG6_XL; // Target register - data[1] = (char)0xC7 & (char)0x1F; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - #endif - - data[0] = (char)CTRL_REG1_G; // Target register - data[1] = (char)0xC0; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - - data[0] = (char)CTRL_REG2_G; // Target register - data[1] = (char)0x00; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - - data[0] = (char)CTRL_REG3_G; // Target register - data[1] = (char)0x00; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - - data[0] = (char)CTRL_REG4; // Target register - data[1] = (char)0x3A; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); - - data[0] = (char)ORIENT_CFG_G; // Target register - data[1] = (char)0x00; // Data to write - success = mems.write(TWI_MAG_ADDR, data, 0x02,0); - check(success); -} - -void read_gyro(float *results){ - char results_[6]; - float res_final[3]; - char out_x_l_g = OUT_X_L_G; - - check (mems.write(TWI_MAG_ADDR, &out_x_l_g, 1, true)); - check (mems.read(TWI_MAG_ADDR, results_, 6, 0)); - res_final[0] = ((results_[1]<<8) | results_[0]); - res_final[1] = ((results_[3]<<8) | results_[2]); - res_final[2] = ((results_[5]<<8) | results_[4]); - - *(results) = res_final[0]; - *(results + 1) = res_final[1]; - *(results + 2) = res_final[2]; -} - +////////////////////////////////////////////////////// +void read_bb(float *res) { + char res_[6]; + float final_res[3]; + char out_bb = out_xl_bb; +}//char out_xl_bb +///////////////////////////////////////////////////////// int main() { @@ -190,30 +165,39 @@ // Clear LEDs RED = 1; GREEN = 1; + //----------------- + + // Start acceleration sensor start_acc(); while (1) { - // Get data from mag sensor + // Get data from ag sensor + read_acc(results); if (*results != old_res) { // Write new value on display epd.empty(); + //////////////////// + epd.writeString("Aconno Accelerometer Data:",10,50,0); + ////////////////// epd.write(); - // Write mag_x + + + // Write ag_x sprintf(buffer, "%+2.1f", *results); //Create a string epd.writeString(buffer,85,70,0); //Write new data to the buffer epd.write(); - // Write mag_y + // Write ag_y sprintf(buffer, "%+2.1f", *(results+1)); //Create a string epd.writeString(buffer,85,80,0); //Write new data to the buffer epd.write(); - // Write mag_z + // Write ag_z sprintf(buffer, "%+2.1f", *(results+2)); //Create a string epd.writeString(buffer,85,90,0); //Write new data to the buffer epd.write(); @@ -223,6 +207,9 @@ wait (1); BLUE = 1; wait(1); + + + } LEDD = 0; wait(1); @@ -230,5 +217,24 @@ wait(1); } +// from the bb: +//while(1){ + + //the functions are in the wrong class +enableI2C(); + mems.enableAxes(X_axis); ////enable axis not woking???? + mems.readXaxis(); + mems.disableAxes(X_axis); + mems.enableAxes(Y_axis); + mems.readYaxis(); + mems.disableAxes(Y_axis); + mems.enableAxes(Z_axis); + mems.readZaxis(); + mems.disableAxes(Z_axis); + epd.writeString("BB Accelerometer Data:",10,90,0); + epd.write(); + ///////////// write to epd + ///add in epd for each -} \ No newline at end of file + +//} \ No newline at end of file