i2c trial - does'nt work

Dependencies:   ACD_ePaper aconno_I2C aconno_bsp mbed

Fork of acd52832_LSM9DS1 by Jurica Resetar

Committer:
med2017
Date:
Wed Feb 14 21:16:43 2018 +0000
Revision:
1:e97c56fb9629
testing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
med2017 1:e97c56fb9629 1 #include "LSM9DS1.h"
med2017 1:e97c56fb9629 2 #include "mbed.h"
med2017 1:e97c56fb9629 3 #include "aconno_i2c.h"
med2017 1:e97c56fb9629 4
med2017 1:e97c56fb9629 5 LSM9DS1::LSM9DS1(I2C *i2c_, char address) : i2c(i2c_, address){
med2017 1:e97c56fb9629 6 }
med2017 1:e97c56fb9629 7
med2017 1:e97c56fb9629 8 /*uint8_t LSM9DS1::whoIAm(){
med2017 1:e97c56fb9629 9 char regAddr = (char)WHO_AM_I;
med2017 1:e97c56fb9629 10 char regData;
med2017 1:e97c56fb9629 11 i2c.readFromReg(regAddr, &regData, 1);
med2017 1:e97c56fb9629 12 return (uint8_t)regData;
med2017 1:e97c56fb9629 13 }
med2017 1:e97c56fb9629 14 */
med2017 1:e97c56fb9629 15 uint8_t LSM9DS1::setMode(Mode mode){
med2017 1:e97c56fb9629 16 char ctrl1Copy;
med2017 1:e97c56fb9629 17 char ctrl4Copy;
med2017 1:e97c56fb9629 18 uint8_t success;
med2017 1:e97c56fb9629 19
med2017 1:e97c56fb9629 20 //i2c.readFromReg((char)CTRL_REG1, &ctrl1Copy, 1);
med2017 1:e97c56fb9629 21 //i2c.readFromReg((char)CTRL_REG4, &ctrl4Copy, 1);
med2017 1:e97c56fb9629 22
med2017 1:e97c56fb9629 23 /* DONT NEED TO SWITCH MODE CAUSE JUST USING ACCELERATION
med2017 1:e97c56fb9629 24
med2017 1:e97c56fb9629 25 switch(mode){
med2017 1:e97c56fb9629 26 case HIGH_RES:
med2017 1:e97c56fb9629 27 ctrl1Copy &= 0xF7;
med2017 1:e97c56fb9629 28 ctrl4Copy |= 0x08;
med2017 1:e97c56fb9629 29 break;
med2017 1:e97c56fb9629 30 case NORMAL:
med2017 1:e97c56fb9629 31 ctrl1Copy &= 0xF7;
med2017 1:e97c56fb9629 32 ctrl4Copy &= 0xF7;
med2017 1:e97c56fb9629 33 break;
med2017 1:e97c56fb9629 34 case LOW_POWER:
med2017 1:e97c56fb9629 35 ctrl1Copy |= 0x08;
med2017 1:e97c56fb9629 36 ctrl4Copy &= 0xF7;
med2017 1:e97c56fb9629 37 break;
med2017 1:e97c56fb9629 38 default:
med2017 1:e97c56fb9629 39 return 0;
med2017 1:e97c56fb9629 40 }
med2017 1:e97c56fb9629 41 i2c.writeToReg((char)CTRL_REG5_XL, &ctrl1Copy, 1);
med2017 1:e97c56fb9629 42 success = i2c.writeToReg((char)CTRL_REG6_XL, &ctrl4Copy, 1);
med2017 1:e97c56fb9629 43 return success;
med2017 1:e97c56fb9629 44 }
med2017 1:e97c56fb9629 45
med2017 1:e97c56fb9629 46 */
med2017 1:e97c56fb9629 47
med2017 1:e97c56fb9629 48 uint8_t LSM9DS1::enableAxes(Axis axis){
med2017 1:e97c56fb9629 49 char ctrl1Copy;
med2017 1:e97c56fb9629 50 i2c.readFromReg((char)CTRL_REG5_XL, &ctrl1Copy, 1);
med2017 1:e97c56fb9629 51 ctrl1Copy |= axis;
med2017 1:e97c56fb9629 52 i2c.writeToReg((char)CTRL_REG6_XL, &ctrl1Copy, 1);
med2017 1:e97c56fb9629 53 return 0;
med2017 1:e97c56fb9629 54 }
med2017 1:e97c56fb9629 55
med2017 1:e97c56fb9629 56 uint8_t LSM9DS1::disableAxes(Axis axis){
med2017 1:e97c56fb9629 57 char ctrl1Copy;
med2017 1:e97c56fb9629 58 i2c.readFromReg((char)CTRL_REG5_XL, &ctrl1Copy, 1);
med2017 1:e97c56fb9629 59 ctrl1Copy &= ~(1 << axis);
med2017 1:e97c56fb9629 60 i2c.writeToReg((char)CTRL_REG6_XL, &ctrl1Copy, 1);
med2017 1:e97c56fb9629 61 return 0;
med2017 1:e97c56fb9629 62 }
med2017 1:e97c56fb9629 63
med2017 1:e97c56fb9629 64 int16_t LSM9DS1::readXAxis(){
med2017 1:e97c56fb9629 65 int16_t rawData;
med2017 1:e97c56fb9629 66 char tempData;
med2017 1:e97c56fb9629 67 // Make sure new data is ready
med2017 1:e97c56fb9629 68 do{
med2017 1:e97c56fb9629 69 i2c.readFromReg((char)STATUS_REG_0, &tempData, 1);
med2017 1:e97c56fb9629 70 }while(!(tempData & 0x08));
med2017 1:e97c56fb9629 71 do{
med2017 1:e97c56fb9629 72 i2c.readFromReg((char)STATUS_REG_0, &tempData, 1);
med2017 1:e97c56fb9629 73 }while(!(tempData & 0x80));
med2017 1:e97c56fb9629 74 // Same data have been overwritten
med2017 1:e97c56fb9629 75
med2017 1:e97c56fb9629 76 i2c.readFromReg((char)OUT_X_H_XL, &tempData, 1);
med2017 1:e97c56fb9629 77 rawData = (int8_t)tempData << 8;
med2017 1:e97c56fb9629 78 i2c.readFromReg((char)OUT_X_L_XL, &tempData, 1);
med2017 1:e97c56fb9629 79 rawData |= (int8_t)tempData;
med2017 1:e97c56fb9629 80 return rawData;
med2017 1:e97c56fb9629 81 }
med2017 1:e97c56fb9629 82
med2017 1:e97c56fb9629 83 int16_t LSM9DS1::readYAxis(){
med2017 1:e97c56fb9629 84 int16_t rawData;
med2017 1:e97c56fb9629 85 char tempData;
med2017 1:e97c56fb9629 86 i2c.readFromReg((char)OUT_Y_H_XL, &tempData, 1);
med2017 1:e97c56fb9629 87 rawData = (int8_t)tempData << 8;
med2017 1:e97c56fb9629 88 i2c.readFromReg((char)OUT_Y_L_XL, &tempData, 1);
med2017 1:e97c56fb9629 89 rawData |= (int8_t)tempData;
med2017 1:e97c56fb9629 90 return rawData;
med2017 1:e97c56fb9629 91 }
med2017 1:e97c56fb9629 92
med2017 1:e97c56fb9629 93 int16_t LSM9DS1::readZAxis(){
med2017 1:e97c56fb9629 94 int16_t rawData;
med2017 1:e97c56fb9629 95 char tempData;
med2017 1:e97c56fb9629 96 i2c.readFromReg((char)OUT_Z_H_XL, &tempData, 1);
med2017 1:e97c56fb9629 97 rawData = (int8_t)tempData << 8;
med2017 1:e97c56fb9629 98 i2c.readFromReg((char)OUT_Z_L_XL, &tempData, 1);
med2017 1:e97c56fb9629 99 rawData |= (int8_t)tempData;
med2017 1:e97c56fb9629 100 return rawData;
med2017 1:e97c56fb9629 101 }
med2017 1:e97c56fb9629 102
med2017 1:e97c56fb9629 103 //uint8_t LSM9DS1::setODR(Odr odr){
med2017 1:e97c56fb9629 104 // char ctrl1Copy;
med2017 1:e97c56fb9629 105 //i2c.readFromReg((char)CTRL_REG8, &ctrl1Copy, 1);
med2017 1:e97c56fb9629 106 //ctrl1Copy |= (odr << 4);
med2017 1:e97c56fb9629 107 //i2c.writeToReg((char)CTRL_REG8, &ctrl1Copy, 1);
med2017 1:e97c56fb9629 108 //return 0;
med2017 1:e97c56fb9629 109 //}
med2017 1:e97c56fb9629 110
med2017 1:e97c56fb9629 111 /*uint8_t LSM9DS1::setScale(Scale scale){
med2017 1:e97c56fb9629 112 char ctrl4Copy;
med2017 1:e97c56fb9629 113 i2c.readFromReg((char)CTRL_REG9, &ctrl4Copy, 1);
med2017 1:e97c56fb9629 114 ctrl4Copy |= (scale << 4);
med2017 1:e97c56fb9629 115 i2c.writeToReg((char)CTRL_REG9, &ctrl4Copy, 1);
med2017 1:e97c56fb9629 116 return 0;
med2017 1:e97c56fb9629 117 }
med2017 1:e97c56fb9629 118 *?
med2017 1:e97c56fb9629 119
med2017 1:e97c56fb9629 120 /* Interrupt activity 1 driven to INT1 pad */
med2017 1:e97c56fb9629 121
med2017 1:e97c56fb9629 122 /*
med2017 1:e97c56fb9629 123 uint8_t LSM9DS1::int1Setup(uint8_t setup){
med2017 1:e97c56fb9629 124 char data = setup;
med2017 1:e97c56fb9629 125 i2c.writeToReg((char)CTRL_REG6_XL, &data, 1);
med2017 1:e97c56fb9629 126 return 0;
med2017 1:e97c56fb9629 127 }
med2017 1:e97c56fb9629 128
med2017 1:e97c56fb9629 129
med2017 1:e97c56fb9629 130 */
med2017 1:e97c56fb9629 131
med2017 1:e97c56fb9629 132
med2017 1:e97c56fb9629 133 /*uint8_t LSM9DS1::int1Latch(uint8_t enable){
med2017 1:e97c56fb9629 134 char ctrl5Copy;
med2017 1:e97c56fb9629 135 i2c.readFromReg((char)CTRL_REG5, &ctrl5Copy, 1); //reg for magnetometer
med2017 1:e97c56fb9629 136 ctrl5Copy |= enable;
med2017 1:e97c56fb9629 137 i2c.writeToReg((char)CTRL_REG5, &ctrl5Copy, 1);
med2017 1:e97c56fb9629 138 return 0;
med2017 1:e97c56fb9629 139 }
med2017 1:e97c56fb9629 140 */
med2017 1:e97c56fb9629 141
med2017 1:e97c56fb9629 142 /*uint8_t LSM9DS1::int1Duration(uint8_t duration){
med2017 1:e97c56fb9629 143 char copy = duration;
med2017 1:e97c56fb9629 144 i2c.writeToReg((char)INT1_DURATION, &copy, 1);//reg for magnetometer
med2017 1:e97c56fb9629 145 return 0;
med2017 1:e97c56fb9629 146 }
med2017 1:e97c56fb9629 147 */
med2017 1:e97c56fb9629 148
med2017 1:e97c56fb9629 149
med2017 1:e97c56fb9629 150 /*
med2017 1:e97c56fb9629 151 uint8_t LSM9DS1::int1Threshold(uint8_t threshold){
med2017 1:e97c56fb9629 152 char copy = threshold;
med2017 1:e97c56fb9629 153 i2c.writeToReg((char)INT1_THS, &copy, 1);
med2017 1:e97c56fb9629 154 return 0;
med2017 1:e97c56fb9629 155 }
med2017 1:e97c56fb9629 156
med2017 1:e97c56fb9629 157 uint8_t LSM9DS1::int1Config(uint8_t config){
med2017 1:e97c56fb9629 158 char copy = config;
med2017 1:e97c56fb9629 159 i2c.writeToReg((char)INT1_CFG, &copy, 1);
med2017 1:e97c56fb9629 160 return 0;
med2017 1:e97c56fb9629 161 }
med2017 1:e97c56fb9629 162
med2017 1:e97c56fb9629 163 void LSM9DS1::clearIntFlag(){
med2017 1:e97c56fb9629 164 char data;
med2017 1:e97c56fb9629 165 i2c.readFromReg((char)INT1_SRC, (char*)&data, 1);
med2017 1:e97c56fb9629 166 }
med2017 1:e97c56fb9629 167
med2017 1:e97c56fb9629 168 */
med2017 1:e97c56fb9629 169