BNO080 issue with multiple i2c devices in one bus

me and my team are going to contest in mexicos robocup nacional league, so the issue is that we are using a bno080 in our robot but it just stop working at random moments, we are using a raspberry pi pico as our main controller, theres three i2cs devices in our robot bno080, HTirseeker and MRir360, we try lots of thinks, the code that we are using now is this

 Serial.begin(9600);
  Serial1.begin(115200);
  delay(100);
  Wire.begin();
  delay(100);
  myIMU.begin();
  Wire.setClock(100000); 
  myIMU.enableMagnetometer(50); //Send data update every 50ms
  myIMU.enableRotationVector(50);

  while(millis()<600){
  Set=getRawRotation();
  }

we are using the wire clock at 100k because is the others 2 i2c devices max speed, the only way to solve it was using 2 i2c busses and have Wire1 only for bno080 with the pull up resistor jumper active, we have this problem with all of our BNO080s, we have 5 and its the same in all of them, we can try with the 2 busses but it would need to remake our pcb and we only have 8 days to solve it.

Take a look @ https://www.amazon.com/SparkFun-Qwiic-M … B08CHMCSX8 which has very fast shipping; also note that only one set of pull-ups on each i2c bus is usually needed (so you’d likely need to disable several)

Hi,

There is an issue with the BNO080 where if you have set the data rate, you must keep reading the data at that rate - otherwise an internal buffer fills up and the chip resets. Please make sure you are reading the magnetometer and rotation vector data every 50ms in your loop.

I hope this helps,

Paul