Hallo

Deine float/gettime()-Funktion in KurzzurueckunddannLinkskurve() kommt mir etwas spanisch vor. Rückgabewert von gettime() ist unsigned long, ich weiß nicht was passiert wenn gettime() überläuft und endtime deshalb nie erreicht wird? Besser wäre auf jeden Fall anstelle von float auch unsigned long für endtime zu verwenden. (Warum eigentlich endtime/2?) Vermutlich bleibt dein Programm irgendwie hier stecken:

Code:
	while (Gettime() > endtime/2 && Gettime() < endtime)
	{
		MotorDir(FWD,FWD);
		MotorSpeed(FULL_L - 100, FULL_R);
	}
Das würde ich allerdings etwas anders formulieren weil zu häufiges und schnelles Aufrufen von MotorSpeed() möglicherweise Probleme verursachen könnte:

Code:
	MotorDir(FWD,FWD);
	MotorSpeed(FULL_L - 100, FULL_R);
	while (Gettime() > endtime/2 && Gettime() < endtime);
Und nun kannst du dir das gettime() sparen und durch schlichtes Msleep() ersetzen...
Code:
	MotorDir(FWD,FWD);
	MotorSpeed(FULL_L - 100, FULL_R);
	Msleep(1000);
Gruß

mic