Hi, zusammen,

ja, bei dieser Konstellation, muss ich euch Recht geben.
Na, dann bleibt ja noch der Timer-Interrupt, der so lustig vor sich hinzählt.

Da Msleep() benutzt wird, sehe ich, dass die Asuro-LIB benutzt wird.
Dort gibt es eine Funktion á la "HoleZeitInMSSekunden".
Hier ein ganz, ganz grober Rahmen. (Ich muss noch Arbeiten. hoffe es sieht jetzt kein Chef rein )
Code:
long letzter_kontakt = 0;
long vor_letzter_kontakt;

if (switched == 1)
{
  vor_letzter_kontakt = letzter_kontakt;
  letzter_kontakt = "HoleZeitInMSSekunden";
  if (letzter_kontakt > (ODER <??) vor_letzter_kontakt + (ODER -??) 100bisNochMehrMillisekunden)
     variable_fuer_grad = 90; (Oder besser hier 180)
  else
     variable_fuer_grad = 180; (und dafuer hier nur 90?? ;-))

   ...
   ...
}
Gruß Sternthaler

P.S.: Schöne Zeichnung sebär. Nun schaffe ich es auch dein Problem zu 'sehen'. Hab leider nur schlamperlich deinen Text gelesen.