I am using a BNO055 as a compass. This is my process:
- Initialisation (Power Mode Normal, Operation Mode NDOF, external Clock source)
- get calibration register (system, gyro, accel, mag) until they reach "3"
- get the euler heading angle
- go to suspend mode (first go to Config mode, then set Suspend Mode)
Now, what is the correct approach to wakeup the BNO from suspend mode? When I go to the Config mode first and change to Normal mode after, my calibration registers say "0" for all three sensors and the euler heading ist random... After a reset, the calibration registers instantly have a "3" again until I wake the BNO up again.
The BNO is always powered and not turned off.
And by the way whats the sys calib register? sometims all 3 sensors are fully calibrated and the system register says "0".
Thanks for your help
some additional Information:
I read the SYSTEM_STATUS register (0x39) and it says 0x01 (ERROR). Then read SYS_ERR (0X3A) and it says that I have a Register Map Write Error (0x06).
What does this mean?
The correct procedure for put sensor in suspend mode is: NDOF -> Config mode -> Power Suspend mode.
The correct procedure for wake up sensor under suspend mode is: Power Suspend mode -> Config mode -> NDoF mode.
When sensor change to suspend mode, the register content will keep, so after resume, the offset value is still in the registers and system calibration level will keep the same value as previously enter the suspend mode. Sensor output will also keep as previous value.
After Sensor reset, all vlaue in registers will be lost. Then system calibration will be 0 as well as all sensor calibration level. System starts from initlia status.
If all sensor are fully calibrated, the system calibration status should also 3. If not, we need to take a close look what happened then.
This means you either write some wrong value into sensor register or overwrite the sensor register.
So you need to check if you follow correct procedure and write proper value into it.
I forgot to set the NDOF Mode in my wake up process.. so now I can see that the Calib Stat remains the same. But now i dont recieve correct values (Euler Headings).
If I go throu the code step by step, it updates the values, but if the code runs normal on the board, the values dont update..
Any ideas what could be the reason for that?