Danke für eure Antworten.
Hab auch bis gerade mit dem selben Problem gekämpft. Hab mir zur Nanowii ein BOB (CJMCU-CF) von GLB gekauft, und das war auch um 90 grad verdreht. Egal, wie ich die Wirkrichtungen einstellte (sah mir zumindest so aus), hatte ich's nie richtig hinbekommen. Kalibriert hatte ich's immer. Aber anstatt der Nordrichtung wurde mal Osten, mal Süden oder anderes angezeigt. Mal drehte man den Copter um wenige Grad, dafür sprang das Heading gleich um 90 Grad und mehr.
Rollen und Pitchen brachten das Heading komplett durcheinander - oder eben nur ein bisschen.
Naja, die Geschichte kann man kürzen. Jetzt funzt es - es waren wirklich nur die Wirkrichtungen.
Folgende Definition funzt bei mir, bei der Einbaurichtung wie im Bild unten. Die CJMCU-CF hat aber mehrere Varianten - hab das Bild ganz schrecklich nachbearbeitet, damit es so aussieht, wie meiner.
#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = Y; magADC[PITCH] = -X ; magADC[YAW] = -Z;}
Der Kompass zeigt jetzt nach Norden, wenn der Copter nach Norden schaut. Das Heading wird nicht beeinflusst, wenn der Copter Pitch't oder Roll't. Die Sensor Achsen verändern sich jetzt so, wie im MW FAQ beschrieben:
TILT the MULTI to the RIGHT (left side up):
MAG_ROLL, ACC_ROLL and GYRO_ROLL goes up
MAG_Z and ACC_Z goes down
TILT the MULTI forward (tail up):
MAG_PITCH, ACC_PITCH and GYRO_PITCH goes up
MAG_Z and ACC_Z goes down
Rotating the copter clockwise (YAW):
GYRO_YAW goes up
The copter stays level:
MAG_Z is positive ; ACC_Z is positive