Ich würde zuerst das Statusregister lesen. Dieses hat 3 Bits (Bit 0 - Bit 2). Bit 0 bedeutet neue Daten vorhanden. Das 2te Bit ist auch sehr wichtig, es sagt dir ob eine oder mehrere Achsen überlastet sind (magnetische Feld zu groß). Das 3te Bit ist nicht so wichtig, es sagt nur das du einen Messwert übersprungen hast (nicht ausgelesen).

Ich würde also das Statusbyte lesen und nur wenn Daten vorhanden sind (Bit 0 = 1) und du keine Achse überlastet hast (Bit 1 = 0) die Sensordaten auslesen. Wenn Bit 0 = 0 oder Bit 1 = 1 einfach die Messwerte ignorieren.


Was mir auch noch auffällt. Du lässt deinen Ort mit in die Berechnung einfließen, warum? Du benötigst keine Absoluten Winkel sondern nur einen relativen zum vorhergehenden.

MfG Hannes