Im bin immer noch dran den Oneshot-Code zu verstehen. Ich denke mal laut, korrigiert mich wenn ich falsch liege:
In dem array motor[] werden die errechneten Werte für die einzelnen Motoren vorgehalten. (Nach den Sensoren, PID, Mixing).
Jedes Element dieses Array ist als 16Bit Integer angelegt.
8Bit (256) reicht nicht um das abzubilden, deshalb der nächste Schritt, 16 Bit. In diesem Array stehen Werte zwischen MINCOMMAND 1000 und MAXTHROTTLE 2000.
Diese Werte müssen in der Funktion writeMotors() auf die PWM-Register gemappt werden. Die PWM-Register werden wohl ebenfalls mit 16Bit angesprochen, 8 wäre zu wenig. Das sind Werte zwischen 0 und 65536.
Jetzt müssen die Werte aus dem motor[]-array umgerechnet werden damit das richtige Tastverhältnis rauskommt.
Beim flyduino 32u4 wird bei oneshot deaktiviert ein bitshifting <<4 durchgeführt, im Multiwii-Code für den Mega nur <
.
Das ist mal die erste Stelle an der ich komplett hänge.
Würde sich jemand erbarmen und mich über die Magie mit den PWM-Registern aufklären?