Hallo,

> ich habe jetzt jeden Aufruf von mSleep()
> durch einen Aufruf einer Stopwatch und einer while-Schleife erstzt,


Du musst dann aber in der while Schleife natürlich weiterhin alle benötigten task_IRGENDWAS funktionen aufrufen und ggf. darauf reagieren - sonst macht auch das keinen Unterschied.



Zum Code:




setACSPwrHigh();
task_ACS();
ACSWeitR = obstacle_right;
ACSWeitL = obstacle_left;

setACSPwrMed();
task_ACS();
ACSMittelR = obstacle_right;
ACSMittelL = obstacle_left;

setACSPwrLow();
task_ACS();
ACSNaheR = obstacle_right;
ACSNaheL = obstacle_left;


Das ist so leider quatsch

task_ACS muss nicht nur häufig aufgerufen werden - die Funktion muss auch MEHRMALS für eine gewisse Zeit hintereinander aufgerufen werden.
Schau Dir die Funktion doch einfach mal in der Lib an!
Die hat mehrere Zustände die ZEITGESTEUERT nacheinander durchlaufen werden (links senden, links warten + empfangen, rechts senden, rechts warten + empfangen, ... warten ob RC5 Codes empfangen werden ... )

Das da oben KANN also gar nicht so klappen wie gedacht, vermutlich modulierst Du da die IR LEDs nochmal weil dauernd die Sendestärke umgestellt wird


Mein Rat:
Schau Dir wirklich mal die Beispiele mit den Zustandsautomaten an.
(hier im Forum gab es da auch ein oder zwei Threads zu)

MfG,
SlyD