also wenn der prozessor erst dem motortreiber die ausweichen-signale geben muss, wartet der hauptprozess natürlich erstmal, bis der bot ausgewichen ist.
Wenn das Programm (oder die Funktion oder der Thread) so programmiert wäre, würde auch Multithreading nicht helfen!

Blockierende Programmteile, wie etwa "Sleep" oder "Wait", die einfach den Prozessor zu NOPs zwingen, darf es nicht geben. Die Idee von felix ist doch: warte auf ein Ereignis, unterbreche alles andere, mache nur das notwendige (AD-Wert abfragen und speichern) und setze einen Event (oder Flag), gib den Prozessor sofort wieder frei.
Da ein Prozesser ja nicht NICHTS tun kann, muß es irgendwo ein main-Programm geben, dass nichts weiter macht, als alle Events (oder Flags) ständig reihum abzufragen. War eins gesetzt, wird die dazu passende Funktion (gespeicherten AD-Wert umrechnen, skalieren, verarbeiten, ...) aufgerufen. Nach dem Ende der Funktion geht es zum main-Programm zurück, das die nächsten Flags abfragt.

Das "Komplizierte" an so einem Programmaufbau ist, sich Events zu schaffen, die den Beginn und/oder das Ende einer Handlung signalisieren. Das können Interrupts (auch Timer) sein, oder einfach auch nur irgendwelche Flags, die irgendwer zu irgendeinem Zeitpunkt setzt.


Bitte kein "Sleep" oder "Wait" verwenden, sondern einen Timer starten und die Funktion verlassen (oder mit was anderem weiterarbeiten). Der Timer kommt später in einer Interrupt-Routine zurück, die jetzt dort weitermacht, was nach "Sleep" oder "Wait" stehen würde.

Blackbird