Nikola Milenic / bno055

Dependents:   MSPDFW

Committer:
milenicnikola
Date:
Wed Jun 12 21:48:44 2019 +0000
Revision:
1:2015b07f1b33
Parent:
0:52d78f7d0ede
Init

Who changed what in which revision?

UserRevisionLine numberNew contents of line
milenicnikola 0:52d78f7d0ede 1 #include "bno055.h"
milenicnikola 0:52d78f7d0ede 2 #include "mbed.h"
milenicnikola 0:52d78f7d0ede 3
milenicnikola 0:52d78f7d0ede 4 BNO055::BNO055(PinName SDA, PinName SCL) : _i2c(SDA,SCL){
milenicnikola 0:52d78f7d0ede 5 //Set I2C fast and bring reset line high
milenicnikola 0:52d78f7d0ede 6 _i2c.frequency(400000);
milenicnikola 0:52d78f7d0ede 7 address = BNOAddress;
milenicnikola 0:52d78f7d0ede 8 accel_scale = 0.001f;
milenicnikola 0:52d78f7d0ede 9 rate_scale = 1.0f/16.0f;
milenicnikola 0:52d78f7d0ede 10 angle_scale = 1.0f/16.0f;
milenicnikola 0:52d78f7d0ede 11 temp_scale = 1;
milenicnikola 0:52d78f7d0ede 12 }
milenicnikola 0:52d78f7d0ede 13
milenicnikola 0:52d78f7d0ede 14 void BNO055::reset(){
milenicnikola 0:52d78f7d0ede 15 //Perform a power-on-reset
milenicnikola 0:52d78f7d0ede 16 readchar(BNO055_SYS_TRIGGER_ADDR);
milenicnikola 0:52d78f7d0ede 17 rx = rx | 0x20;
milenicnikola 0:52d78f7d0ede 18 writechar(BNO055_SYS_TRIGGER_ADDR,rx);
milenicnikola 0:52d78f7d0ede 19 //Wait for the system to come back up again (datasheet says 650ms)
milenicnikola 0:52d78f7d0ede 20 wait_ms(675);
milenicnikola 0:52d78f7d0ede 21 }
milenicnikola 0:52d78f7d0ede 22
milenicnikola 0:52d78f7d0ede 23 bool BNO055::check(){
milenicnikola 0:52d78f7d0ede 24 //Check we have communication link with the chip
milenicnikola 0:52d78f7d0ede 25 readchar(BNO055_CHIP_ID_ADDR);
milenicnikola 0:52d78f7d0ede 26 if (rx != 0xA0) return false;
milenicnikola 0:52d78f7d0ede 27 //Grab the chip ID and software versions
milenicnikola 0:52d78f7d0ede 28 tx[0] = BNO055_CHIP_ID_ADDR;
milenicnikola 0:52d78f7d0ede 29 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 30 _i2c.read(address+1,rawdata,7,false);
milenicnikola 0:52d78f7d0ede 31 ID.id = rawdata[0];
milenicnikola 0:52d78f7d0ede 32 ID.accel = rawdata[1];
milenicnikola 0:52d78f7d0ede 33 ID.mag = rawdata[2];
milenicnikola 0:52d78f7d0ede 34 ID.gyro = rawdata[3];
milenicnikola 0:52d78f7d0ede 35 ID.sw[0] = rawdata[4];
milenicnikola 0:52d78f7d0ede 36 ID.sw[1] = rawdata[5];
milenicnikola 0:52d78f7d0ede 37 ID.bootload = rawdata[6];
milenicnikola 0:52d78f7d0ede 38 setpage(1);
milenicnikola 0:52d78f7d0ede 39 tx[0] = BNO055_UNIQUE_ID_ADDR;
milenicnikola 0:52d78f7d0ede 40 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 41 _i2c.read(address+1,ID.serial,16,false);
milenicnikola 0:52d78f7d0ede 42 setpage(0);
milenicnikola 0:52d78f7d0ede 43 return true;
milenicnikola 0:52d78f7d0ede 44 }
milenicnikola 0:52d78f7d0ede 45
milenicnikola 0:52d78f7d0ede 46 void BNO055::SetExternalCrystal(bool yn){
milenicnikola 0:52d78f7d0ede 47 // Read the current status from the device
milenicnikola 0:52d78f7d0ede 48 readchar(BNO055_SYS_TRIGGER_ADDR);
milenicnikola 0:52d78f7d0ede 49 if (yn) rx = rx | 0x80;
milenicnikola 0:52d78f7d0ede 50 else rx = rx & 0x7F;
milenicnikola 0:52d78f7d0ede 51 writechar(BNO055_SYS_TRIGGER_ADDR,rx);
milenicnikola 0:52d78f7d0ede 52 }
milenicnikola 0:52d78f7d0ede 53
milenicnikola 0:52d78f7d0ede 54 void BNO055::set_accel_units(char units){
milenicnikola 0:52d78f7d0ede 55 readchar(BNO055_UNIT_SEL_ADDR);
milenicnikola 0:52d78f7d0ede 56 if(units == MPERSPERS){
milenicnikola 0:52d78f7d0ede 57 rx = rx & 0xFE;
milenicnikola 0:52d78f7d0ede 58 accel_scale = 0.01f;
milenicnikola 0:52d78f7d0ede 59 }
milenicnikola 0:52d78f7d0ede 60 else {
milenicnikola 0:52d78f7d0ede 61 rx = rx | units;
milenicnikola 0:52d78f7d0ede 62 accel_scale = 0.001f;
milenicnikola 0:52d78f7d0ede 63 }
milenicnikola 0:52d78f7d0ede 64 writechar(BNO055_UNIT_SEL_ADDR,rx);
milenicnikola 0:52d78f7d0ede 65 }
milenicnikola 0:52d78f7d0ede 66
milenicnikola 0:52d78f7d0ede 67 void BNO055::set_anglerate_units(char units){
milenicnikola 0:52d78f7d0ede 68 readchar(BNO055_UNIT_SEL_ADDR);
milenicnikola 0:52d78f7d0ede 69 if (units == DEG_PER_SEC){
milenicnikola 0:52d78f7d0ede 70 rx = rx & 0xFD;
milenicnikola 0:52d78f7d0ede 71 rate_scale = 1.0f/16.0f;
milenicnikola 0:52d78f7d0ede 72 }
milenicnikola 0:52d78f7d0ede 73 else {
milenicnikola 0:52d78f7d0ede 74 rx = rx | units;
milenicnikola 0:52d78f7d0ede 75 rate_scale = 1.0f/900.0f;
milenicnikola 0:52d78f7d0ede 76 }
milenicnikola 0:52d78f7d0ede 77 writechar(BNO055_UNIT_SEL_ADDR,rx);
milenicnikola 0:52d78f7d0ede 78 }
milenicnikola 0:52d78f7d0ede 79
milenicnikola 0:52d78f7d0ede 80 void BNO055::set_angle_units(char units){
milenicnikola 0:52d78f7d0ede 81 readchar(BNO055_UNIT_SEL_ADDR);
milenicnikola 0:52d78f7d0ede 82 if (units == DEGREES){
milenicnikola 0:52d78f7d0ede 83 rx = rx & 0xFB;
milenicnikola 0:52d78f7d0ede 84 angle_scale = 1.0f/16.0f;
milenicnikola 0:52d78f7d0ede 85 }
milenicnikola 0:52d78f7d0ede 86 else {
milenicnikola 0:52d78f7d0ede 87 rx = rx | units;
milenicnikola 0:52d78f7d0ede 88 rate_scale = 1.0f/900.0f;
milenicnikola 0:52d78f7d0ede 89 }
milenicnikola 0:52d78f7d0ede 90 writechar(BNO055_UNIT_SEL_ADDR,rx);
milenicnikola 0:52d78f7d0ede 91 }
milenicnikola 0:52d78f7d0ede 92
milenicnikola 0:52d78f7d0ede 93 void BNO055::set_temp_units(char units){
milenicnikola 0:52d78f7d0ede 94 readchar(BNO055_UNIT_SEL_ADDR);
milenicnikola 0:52d78f7d0ede 95 if (units == CENTIGRADE){
milenicnikola 0:52d78f7d0ede 96 rx = rx & 0xEF;
milenicnikola 0:52d78f7d0ede 97 temp_scale = 1;
milenicnikola 0:52d78f7d0ede 98 }
milenicnikola 0:52d78f7d0ede 99 else {
milenicnikola 0:52d78f7d0ede 100 rx = rx | units;
milenicnikola 0:52d78f7d0ede 101 temp_scale = 2;
milenicnikola 0:52d78f7d0ede 102 }
milenicnikola 0:52d78f7d0ede 103 writechar(BNO055_UNIT_SEL_ADDR,rx);
milenicnikola 0:52d78f7d0ede 104 }
milenicnikola 0:52d78f7d0ede 105
milenicnikola 0:52d78f7d0ede 106 void BNO055::set_orientation(char units){
milenicnikola 0:52d78f7d0ede 107 readchar(BNO055_UNIT_SEL_ADDR);
milenicnikola 0:52d78f7d0ede 108 if (units == WINDOWS) rx = rx &0x7F;
milenicnikola 0:52d78f7d0ede 109 else rx = rx | units;
milenicnikola 0:52d78f7d0ede 110 writechar(BNO055_UNIT_SEL_ADDR,rx);
milenicnikola 0:52d78f7d0ede 111 }
milenicnikola 0:52d78f7d0ede 112
milenicnikola 0:52d78f7d0ede 113 void BNO055::setmode(char omode){
milenicnikola 0:52d78f7d0ede 114 writechar(BNO055_OPR_MODE_ADDR,omode);
milenicnikola 0:52d78f7d0ede 115 op_mode = omode;
milenicnikola 0:52d78f7d0ede 116 }
milenicnikola 0:52d78f7d0ede 117
milenicnikola 1:2015b07f1b33 118 char BNO055::getmode(){
milenicnikola 1:2015b07f1b33 119 readchar(BNO055_OPR_MODE_ADDR);
milenicnikola 1:2015b07f1b33 120 return rx;
milenicnikola 1:2015b07f1b33 121 }
milenicnikola 1:2015b07f1b33 122
milenicnikola 0:52d78f7d0ede 123 void BNO055::setpowermode(char pmode){
milenicnikola 0:52d78f7d0ede 124 writechar(BNO055_PWR_MODE_ADDR,pmode);
milenicnikola 0:52d78f7d0ede 125 pwr_mode = pmode;
milenicnikola 0:52d78f7d0ede 126 }
milenicnikola 0:52d78f7d0ede 127
milenicnikola 0:52d78f7d0ede 128 void BNO055::get_accel(void){
milenicnikola 0:52d78f7d0ede 129 tx[0] = BNO055_ACCEL_DATA_X_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 130 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 131 _i2c.read(address+1,rawdata,6,0);
milenicnikola 0:52d78f7d0ede 132 accel.rawx = (rawdata[1] << 8 | rawdata[0]);
milenicnikola 0:52d78f7d0ede 133 accel.rawy = (rawdata[3] << 8 | rawdata[2]);
milenicnikola 0:52d78f7d0ede 134 accel.rawz = (rawdata[5] << 8 | rawdata[4]);
milenicnikola 0:52d78f7d0ede 135 accel.x = float(accel.rawx)*accel_scale;
milenicnikola 0:52d78f7d0ede 136 accel.y = float(accel.rawy)*accel_scale;
milenicnikola 0:52d78f7d0ede 137 accel.z = float(accel.rawz)*accel_scale;
milenicnikola 0:52d78f7d0ede 138 }
milenicnikola 0:52d78f7d0ede 139
milenicnikola 0:52d78f7d0ede 140 void BNO055::get_gyro(void){
milenicnikola 0:52d78f7d0ede 141 tx[0] = BNO055_GYRO_DATA_X_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 142 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 143 _i2c.read(address+1,rawdata,6,0);
milenicnikola 0:52d78f7d0ede 144 gyro.rawx = (rawdata[1] << 8 | rawdata[0]);
milenicnikola 0:52d78f7d0ede 145 gyro.rawy = (rawdata[3] << 8 | rawdata[2]);
milenicnikola 0:52d78f7d0ede 146 gyro.rawz = (rawdata[5] << 8 | rawdata[4]);
milenicnikola 0:52d78f7d0ede 147 gyro.x = float(gyro.rawx)*rate_scale;
milenicnikola 0:52d78f7d0ede 148 gyro.y = float(gyro.rawy)*rate_scale;
milenicnikola 0:52d78f7d0ede 149 gyro.z = float(gyro.rawz)*rate_scale;
milenicnikola 0:52d78f7d0ede 150 }
milenicnikola 0:52d78f7d0ede 151
milenicnikola 0:52d78f7d0ede 152 void BNO055::get_mag(void){
milenicnikola 0:52d78f7d0ede 153 tx[0] = BNO055_MAG_DATA_X_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 154 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 155 _i2c.read(address+1,rawdata,6,0);
milenicnikola 0:52d78f7d0ede 156 mag.rawx = (rawdata[1] << 8 | rawdata[0]);
milenicnikola 0:52d78f7d0ede 157 mag.rawy = (rawdata[3] << 8 | rawdata[2]);
milenicnikola 0:52d78f7d0ede 158 mag.rawz = (rawdata[5] << 8 | rawdata[4]);
milenicnikola 0:52d78f7d0ede 159 mag.x = float(mag.rawx);
milenicnikola 0:52d78f7d0ede 160 mag.y = float(mag.rawy);
milenicnikola 0:52d78f7d0ede 161 mag.z = float(mag.rawz);
milenicnikola 0:52d78f7d0ede 162 }
milenicnikola 0:52d78f7d0ede 163
milenicnikola 0:52d78f7d0ede 164 void BNO055::get_lia(void){
milenicnikola 0:52d78f7d0ede 165 tx[0] = BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 166 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 167 _i2c.read(address+1,rawdata,6,0);
milenicnikola 0:52d78f7d0ede 168 lia.rawx = (rawdata[1] << 8 | rawdata[0]);
milenicnikola 0:52d78f7d0ede 169 lia.rawy = (rawdata[3] << 8 | rawdata[2]);
milenicnikola 0:52d78f7d0ede 170 lia.rawz = (rawdata[5] << 8 | rawdata[4]);
milenicnikola 0:52d78f7d0ede 171 lia.x = float(lia.rawx)*accel_scale;
milenicnikola 0:52d78f7d0ede 172 lia.y = float(lia.rawy)*accel_scale;
milenicnikola 0:52d78f7d0ede 173 lia.z = float(lia.rawz)*accel_scale;
milenicnikola 0:52d78f7d0ede 174 }
milenicnikola 0:52d78f7d0ede 175
milenicnikola 0:52d78f7d0ede 176 void BNO055::get_grv(void){
milenicnikola 0:52d78f7d0ede 177 tx[0] = BNO055_GRAVITY_DATA_X_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 178 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 179 _i2c.read(address+1,rawdata,6,0);
milenicnikola 0:52d78f7d0ede 180 gravity.rawx = (rawdata[1] << 8 | rawdata[0]);
milenicnikola 0:52d78f7d0ede 181 gravity.rawy = (rawdata[3] << 8 | rawdata[2]);
milenicnikola 0:52d78f7d0ede 182 gravity.rawz = (rawdata[5] << 8 | rawdata[4]);
milenicnikola 0:52d78f7d0ede 183 gravity.x = float(gravity.rawx)*accel_scale;
milenicnikola 0:52d78f7d0ede 184 gravity.y = float(gravity.rawy)*accel_scale;
milenicnikola 0:52d78f7d0ede 185 gravity.z = float(gravity.rawz)*accel_scale;
milenicnikola 0:52d78f7d0ede 186 }
milenicnikola 0:52d78f7d0ede 187
milenicnikola 0:52d78f7d0ede 188 void BNO055::get_quat(void){
milenicnikola 0:52d78f7d0ede 189 tx[0] = BNO055_QUATERNION_DATA_W_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 190 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 191 _i2c.read(address+1,rawdata,8,0);
milenicnikola 0:52d78f7d0ede 192 quat.raww = (rawdata[1] << 8 | rawdata[0]);
milenicnikola 0:52d78f7d0ede 193 quat.rawx = (rawdata[3] << 8 | rawdata[2]);
milenicnikola 0:52d78f7d0ede 194 quat.rawy = (rawdata[5] << 8 | rawdata[4]);
milenicnikola 0:52d78f7d0ede 195 quat.rawz = (rawdata[7] << 8 | rawdata[6]);
milenicnikola 0:52d78f7d0ede 196 quat.w = float(quat.raww)/16384.0f;
milenicnikola 0:52d78f7d0ede 197 quat.x = float(quat.rawx)/16384.0f;
milenicnikola 0:52d78f7d0ede 198 quat.y = float(quat.rawy)/16384.0f;
milenicnikola 0:52d78f7d0ede 199 quat.z = float(quat.rawz)/16384.0f;
milenicnikola 0:52d78f7d0ede 200 }
milenicnikola 0:52d78f7d0ede 201
milenicnikola 0:52d78f7d0ede 202 void BNO055::get_angles(void){
milenicnikola 0:52d78f7d0ede 203 tx[0] = BNO055_EULER_H_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 204 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 205 _i2c.read(address+1,rawdata,6,0);
milenicnikola 0:52d78f7d0ede 206 euler.rawyaw = (rawdata[1] << 8 | rawdata[0]);
milenicnikola 0:52d78f7d0ede 207 euler.rawroll = (rawdata[3] << 8 | rawdata[2]);
milenicnikola 0:52d78f7d0ede 208 euler.rawpitch = (rawdata[5] << 8 | rawdata[4]);
milenicnikola 0:52d78f7d0ede 209 euler.yaw = float(euler.rawyaw)*angle_scale;
milenicnikola 0:52d78f7d0ede 210 euler.roll = float(euler.rawroll)*angle_scale;
milenicnikola 0:52d78f7d0ede 211 euler.pitch = float(euler.rawpitch)*angle_scale;
milenicnikola 0:52d78f7d0ede 212 }
milenicnikola 0:52d78f7d0ede 213
milenicnikola 0:52d78f7d0ede 214
milenicnikola 0:52d78f7d0ede 215 void BNO055::get_temp(void){
milenicnikola 0:52d78f7d0ede 216 readchar(BNO055_TEMP_ADDR);
milenicnikola 0:52d78f7d0ede 217 temperature = rx / temp_scale;
milenicnikola 0:52d78f7d0ede 218 }
milenicnikola 0:52d78f7d0ede 219
milenicnikola 0:52d78f7d0ede 220 char BNO055::get_calib(void){
milenicnikola 0:52d78f7d0ede 221 readchar(BNO055_CALIB_STAT_ADDR);
milenicnikola 0:52d78f7d0ede 222 calib = rx;
milenicnikola 0:52d78f7d0ede 223 return calib;
milenicnikola 0:52d78f7d0ede 224 }
milenicnikola 0:52d78f7d0ede 225
milenicnikola 0:52d78f7d0ede 226 char* BNO055::read_calibration_data(void){
milenicnikola 0:52d78f7d0ede 227 char tempmode = op_mode;
milenicnikola 0:52d78f7d0ede 228 setmode(OPERATION_MODE_CONFIG);
milenicnikola 0:52d78f7d0ede 229 wait_ms(20);
milenicnikola 0:52d78f7d0ede 230 tx[0] = ACCEL_OFFSET_X_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 231 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 232 _i2c.read(address,calibration,22,false);
milenicnikola 0:52d78f7d0ede 233 calibration[22]=0;
milenicnikola 0:52d78f7d0ede 234 setmode(tempmode);
milenicnikola 0:52d78f7d0ede 235 wait_ms(10);
milenicnikola 0:52d78f7d0ede 236 return calibration;
milenicnikola 0:52d78f7d0ede 237 }
milenicnikola 0:52d78f7d0ede 238
milenicnikola 0:52d78f7d0ede 239 void BNO055::set_calibration_data(char* data){
milenicnikola 0:52d78f7d0ede 240 for(int i=0; i<22; i++){
milenicnikola 0:52d78f7d0ede 241 calibration[i]=data[i];
milenicnikola 0:52d78f7d0ede 242 }
milenicnikola 0:52d78f7d0ede 243 calibration[22]=0;
milenicnikola 0:52d78f7d0ede 244 }
milenicnikola 0:52d78f7d0ede 245
milenicnikola 0:52d78f7d0ede 246 void BNO055::write_calibration_data(){
milenicnikola 0:52d78f7d0ede 247 char tempmode = op_mode;
milenicnikola 0:52d78f7d0ede 248 setmode(OPERATION_MODE_CONFIG);
milenicnikola 0:52d78f7d0ede 249 wait_ms(20);
milenicnikola 0:52d78f7d0ede 250 tx[0] = ACCEL_OFFSET_X_LSB_ADDR;
milenicnikola 0:52d78f7d0ede 251 _i2c.write(address,tx,1,true);
milenicnikola 0:52d78f7d0ede 252 _i2c.write(address,calibration,22,false);
milenicnikola 0:52d78f7d0ede 253 setmode(tempmode);
milenicnikola 0:52d78f7d0ede 254 wait_ms(10);
milenicnikola 0:52d78f7d0ede 255 }
milenicnikola 0:52d78f7d0ede 256
milenicnikola 0:52d78f7d0ede 257 void BNO055::set_mapping(char orient){
milenicnikola 0:52d78f7d0ede 258 switch (orient){
milenicnikola 0:52d78f7d0ede 259 case 0:
milenicnikola 0:52d78f7d0ede 260 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x21);
milenicnikola 0:52d78f7d0ede 261 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x04);
milenicnikola 0:52d78f7d0ede 262 break;
milenicnikola 0:52d78f7d0ede 263 case 1:
milenicnikola 0:52d78f7d0ede 264 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x24);
milenicnikola 0:52d78f7d0ede 265 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x00);
milenicnikola 0:52d78f7d0ede 266 break;
milenicnikola 0:52d78f7d0ede 267 case 2:
milenicnikola 0:52d78f7d0ede 268 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x24);
milenicnikola 0:52d78f7d0ede 269 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x00);
milenicnikola 0:52d78f7d0ede 270 break;
milenicnikola 0:52d78f7d0ede 271 case 3:
milenicnikola 0:52d78f7d0ede 272 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x21);
milenicnikola 0:52d78f7d0ede 273 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x02);
milenicnikola 0:52d78f7d0ede 274 break;
milenicnikola 0:52d78f7d0ede 275 case 4:
milenicnikola 0:52d78f7d0ede 276 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x24);
milenicnikola 0:52d78f7d0ede 277 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x03);
milenicnikola 0:52d78f7d0ede 278 break;
milenicnikola 0:52d78f7d0ede 279 case 5:
milenicnikola 0:52d78f7d0ede 280 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x21);
milenicnikola 0:52d78f7d0ede 281 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x01);
milenicnikola 0:52d78f7d0ede 282 break;
milenicnikola 0:52d78f7d0ede 283 case 6:
milenicnikola 0:52d78f7d0ede 284 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x21);
milenicnikola 0:52d78f7d0ede 285 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x07);
milenicnikola 0:52d78f7d0ede 286 break;
milenicnikola 0:52d78f7d0ede 287 case 7:
milenicnikola 0:52d78f7d0ede 288 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x24);
milenicnikola 0:52d78f7d0ede 289 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x05);
milenicnikola 0:52d78f7d0ede 290 break;
milenicnikola 0:52d78f7d0ede 291 default:
milenicnikola 0:52d78f7d0ede 292 writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x24);
milenicnikola 0:52d78f7d0ede 293 writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x00);
milenicnikola 0:52d78f7d0ede 294 }
milenicnikola 0:52d78f7d0ede 295 }