I tried to use LSM6DS3's Accelerometer X/Y/Z-axis user offset correction registers(X_OFS_USR: 0x73, Y_OFS_USR: 0x74, Z_OFS_USR: 0x75) to hardware compensate its accelerometer measures to save my host CPU loading, but I found they will stay at zeros after writing with any non-zero values(-127 ~ 127 as specified at page 88-89 in your specification of DocID028475 Rev 4, June 2016)?
Have someones used LSM6DS3's built-in hardware offset registers and solved the above problems?
On the other side, MAG_OFF X/Y/Z can be written after enabling access to Embedded Function Register (FUNC_CFG_ACCESS), but it randomly changes, e.g. changing between 180 and 206 deg while the module is statically pointed to 180 deg. If I zero MAG_OFF X/Y/Z registers and manually apply offset compensation(mag measure - bias), then the compensated direction is correct and fixed at 180 deg without random changing! Does the problem come from a mal-functional auto-temperature-compensated ? (since I re-read registers and found that the reg values will randomly change after writing MAG_OFF X/Y/Z registers with non-zero offset values)