Hi inka,
nein, die "task_motionControl Funktion" brauchst du nicht, wenn du mit der M32 als I2C-Master die Base ansteuerst.
Der Grund, warum das rotate blockierend nur 1x ausgeführt wird, liegt wohl daran, dass dein rotate-Block innerhalb der if(key) Abfrage liegt.
Du müßtest dein Programm so umschreiben, dass die Richtungsmessung, -korrektur und (blockierendes) rotate in der while(true)-Schleife unabhängig vom Tastendruck immer durchlaufen kann bis zu einer Abbruchbedingung (z.B. +- 5° vom Zielwert).
Die Tastaturabfrage würde dann parallel laufen und nur ausgewertet, wenn die "richtige" Taste gedrückt wird.