BNO library commit with fork

Dependents:   ES456_Labs MadPulseCntrl MadPulseIMU MadPulse_Controller_ros

Fork of BNO055_fusion by Kenji Arai

Committer:
jdawkins
Date:
Mon Sep 19 12:59:35 2016 +0000
Revision:
6:ae4be69ac7bb
Parent:
5:a44318a8bad4
Changed BNO005 Library to rotate mag axes from z-up to z-down. This was already done for the accels and gyros.

Who changed what in which revision?

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