Hi!

Zuerst mal wundere ich mich ein wenig über dieses Konstrukt:
Code:
      //NUR AUFRUFEN, WENN EIN TIMER INTERUPT DA WAR 
      if(servo_flag == 1) { 
         cli(); 
         calc_steps(); 
         keep_moving(); 
         sei();
Warum machst Du das über ein Flag und schreibst nicht den ganzen Kram in die Interrupt-Routine?

Was Dein Empfangs-Problem angeht - das wird wohl ein Timing-Problem sein. Der Empfangs-Interrupt bekommt einfach nicht genügend Zeit zum arbeiten.

Versuche doch mal
- Den Timer langsamer laufen zu lassen
- Die Interrupts während der Positionierung nicht global zu deaktivieren.

askazo