Hi! I'm currently trying to incorporate bno055 into zephyr RTOS for a project. As I understood the official API at https://github.com/BoschSensortec/BNO055_driver, the device needs a initialized bno055_struct instance and that instance has to be provided .read() .write() .delay() function definitions as well as I2C_address. The device is initialized using .init() API call and reads the chip_id, acc_id, mag_id etc registers followed by writing config page to 0. Next the API reads current operation mode, if not CONFIGURE_MODE it sets device into CONFIG_MODE applies NORMAL power mode, goes back to CONFIG_MODE and sets desired OPERATION_MODE. My issue is as follows: When attempting to change the OPERATION_MODE to ACC_ONLY or any other mode, I can see using Saleae Logic Analyzer that I am sending a 0x11 value to 0x3D register. However when I read said register after 600ms operation mode change delay the register remains sat to 0x10 ( I am aware that the MSB is ignored). I am using the I2C interface to read and write to registers.The device is connected as follows: VIN -> 3.0V, 3vo -> 3.0V, GND -> Power Supply GND, SDA -> NRF52840 SDA, SCL -> NRF52840 SCL, RST -> 3.0V, PS0 -> GND, PS1 -> GND, INT -> floating and ADR -> GND. So following the datasheet the device has address of 0x28 and is configured to communicate using I2C bus. Following the example provided in the bno055_support.h file the sensor shouldn't require additional calls other then .init() , set_power_mode() and set_operation_mode() to be ready to be read from. I am struggling to understand where I have made a mistake. Can somebody shed some light on to the issue? Thanks in advance!
... View more