Hi Andreas,
This
comes across with the hold time for function 2 after the stepper has reached the compass position:
If the stepper is always moving, the timer will never be started.
To update the position every 200ms you could use an additional BaseTimer or you use a bool variable. Because of your joystick timer the switch case block is called only every 100ms. If you call stepper1.write(compassAngle1) every second pass ( by toggling your bool ), you will update it every 200ms.