Stimmt, meine Begründung ist nicht ganz vollständig. (Ist mir auch erst jetzt aufgefallen.)

Die Funktionen "printAllSensorValues" bzw. "getAllSensors" werden in "task_LCDHeartbeat" aufgerufen, d. h. nur einmmal pro Sekunde. Beim ersten Aufruf sind "adc0", "adc1" also noch 0 und der "abyss.state" wird sofort geändert. Der Zustand wird aber nicht zurück auf "IDLE" geändert, sobald die Werte korrekt sind. Dies geht nur über den Zustand "ABYSS_WAIT_END". Dieser wird aber nie erreicht, da die Bewegung nicht abgearbeitet wird, solange "WaitForStart" noch aktiv ist.

Erst wenn "WaitForStart" verlassen wird, kommt der "Abyss"-Zustand ("ABYSS_FRONT") zum tragen, die Bewegung wird ausgeführt und "abyss.state" wird wieder "IDLE" zugewiesen.

Eine Lösung wäre beim Verlassen von "WaitForStart" "abyss.state" nochmal explizit auf "IDLE" zu setzen.


Solche Gedankengänge in Worte zu fassen ist irgendwie schwierig

Carsten[/code]