Hi Sebastian,
It looks like an incorrect interpretation of negative acceleration values. How are you converting the raw data from accelerometer registers 0x01 – 0x06 to signed 12-bit values and then real values in g’s?
You might find useful my example code where I illustrate this conversion:
// Signed 12-bit accelerometer data
Xout_12_bit = ((short) (AccelData[0]<<8 | AccelData[1])) >> 4; // Compute 12-bit X-axis acceleration output value
Yout_12_bit = ((short) (AccelData[2]<<8 | AccelData[3])) >> 4; // Compute 12-bit Y-axis acceleration output value
Zout_12_bit = ((short) (AccelData[4]<<8 | AccelData[5])) >> 4; // Compute 12-bit Z-axis acceleration output value
// Accelerometer data converted to real values in g's
Xout_g = ((float) Xout_12_bit) / SENSITIVITY_2G; // Compute X-axis output value in g's
Yout_g = ((float) Yout_12_bit) / SENSITIVITY_2G; // Compute Y-axis output value in g's
Zout_g = ((float) Zout_12_bit) / SENSITIVITY_2G; // Compute Z-axis output value in g's
Let me know whether or not this helps, or if you have any other questions.
Regards,
Tomas
PS: If my answer helps to solve your question, please mark it as "Correct" or “Helpful”. Thank you.