@robonooby:
Ich kann deinen Code auch nicht komplett ansehen.

Aber:
Du solltest erst mal ganz einfach nur die Rohwerte auslesen (ohne weitere Berechnungen, Kalibrierung o.ä.) und hier posten.


Zum Auslesen der Rohwerte:
1. Beschleunigungssensor:
Nach dem Einlesen der 6 Bytes und Berechnung jeder Achse als (H_Byte * 256 + L_Byte)
... gib hier mal die Min/Max-Werte an.
Dabei sollte beim Beschleunigungssensor der jeweilige Maximal-/Minimalwert erreicht werden, wenn die jeweilige Achse (X/Y/Z) nach unten/oben gehalten wird.

2. Magnetfeldsensor:
Nach dem Einlesen der 6 Bytes und Berechnung jeder Achse als (H_Byte * 256 + L_Byte)
... gib hier mal die Min/Max-Werte an.
Dabei kann man die Min/Max-Werte durch Drehen/Neigen/Kippen des Sensors erreichen.