Hello, i am currently implementing 2 BMI085 in a rotating enviroment. It happens quite often that after i get a interrupt from accelerometer and i read out triggered by that the accelrometer axis and sensortime, that the values of the axis are not changing over 2-8 interrupts. So the accelerometer data stays constant for this time which means in my setup almost 100ms of constant data when the device is actually turning! The sensorTime is actually changing between every I2C read out (i read always 9 bytes beginning on register 0x12). The accelerometers are configured to +/-4g and ODR=100Hz with no oversampling (BW=40Hz) and gyroscope ODR=100Hz, BW=12Hz. The gyroscope does not show this phenomenon, but both accelerometers! Attached you can find a plot that shows one accelerometer axis over sensorTime (this wasn't a rotating scenario, but me shaking the device). I tried a lot and find out that this problem shows also up, if i do not configure and not use the interrupts, but read all devices sequentially within one thread. So i do something like: while(1){ startTime = getTime(); readAcc1(); readGyr1(); readAcc2(); readGyr2(); endTime = getTime(); sleep(12ms - (endTime-startTime)); } As shown above the BMI085 is configured to ODR=100Hz what is every 10ms. If i read my devices every 12ms i still get constant values over 2-3 reads. The only thing that fixes the problem of reading out constant values is to increase the cycle time to at least 17-18ms. So going back to my application where i need to know the exact time when the data was generated (this is why is need the interrupts), i have to ignore every second interrupt to get over this problem that the accelerometer register 0x12 ,0x13,0x14,0x15,0x16,0x17 are holding sometimes the value from the interrupt before. I am out of ideas here. Can you help me or is this a known issue? My expectation was that if i set the chip to ODR=100Hz that i will get fresh data after each interrupt. But this is not happening! Best regards, Jens
... View more