Hi,
Ich steuere die Berechnungen/Tasks in der Main über einen Timer:
Im Timer wird festgelegt zu welcher Zeit welcher Taskflag gesetzt wird.
zB
if (tasktimer==TASKPID1) {taskflag=PID1_flag;}
if (tasktimer==TASKPID2) {taskflag=PID2_flag;}

in der Main gibt es dann folgende if Anweisungen:
if (taskflag== PID1_flag) {taskflag=taskflagclear;....
if (taskflag== PID2_flag) {taskflag=taskflagclear;....

Sensoren werden laufend in der Main loop abgefragt.

Wobei die PID Regler bei mir mittlerweile im Timer Interrupt laufen, aber zu genauen Zeiten und zeitlich versetzt wie gezeigt mit tasktimer geregelt, hat sich für die Drehzahlregelung als beste Lösung erwiesen. Und das bei nur 4 und 8hz...
Positionsberechnung oder Datentransfer über Bluetooth bleibt im Main.

Ich verwende das um einen zeitlich genauen Ablauf zu erhalten. Zuvor konnte es passieren dass zufällig mehrere lange Berechnungen gleichzeitig anfielen und dann langsamer/nicht auf die Sensoren reagiert wurde. Jetzt gibt es genaue Zeitfenster, die Laufzeit der einzelnen Berechnungen hatte ich zuvor im Simulator ermittelt, und so wurde das ganze System leistungsfähiger.

Vielleicht ist die Hardware PWM nicht sinnvoll und steuerst den Pin gleich über den PID Timer mit?

LG!