allerdings fehlt jetzt komplett die komponente mit der konstanten Geschwindigkeit.
Ups, stimmt. Das habe ich völlig verdrängt. Ein einfacher Ansatz:

Code:
#include "asuro.h"
//#include <stdlib.h>

int main(void)
{
	unsigned char flagl=0, flagr=0;
	unsigned int data[2]; //Speicher Bereitstellen
	int wegl, wegr, diff, time, timeb;
	int speed, speedLeft, speedRight;
	int speedSoll, speedDiff;

	Init();
	MotorDir(RWD,RWD);
	StatusLED(GREEN);
	speedSoll=200;
	speedLeft = speedRight = speed = speedSoll;

	while(TRUE)
	{
		wegl=0; wegr=0;
		for(time=1; time<500; time++) // Zeitschleife 1 Sekunde
		{
			OdometrieData(data);
			if ((data[0] < 550) && (flagl == 1)) {flagl = 0; wegl++;}
			if ((data[0] > 650) && (flagl == 0)) {flagl = 1; wegl++;}
			if ((data[1] < 550) && (flagr == 1)) {flagr = 0; wegr++;}
			if ((data[1] > 650) && (flagr == 0)) {flagr = 1; wegr++;}
			diff=wegr-wegl;
			if (diff>0) speedRight--; // fahre geradeaus
			else if (diff<0) speedLeft--;
			else
			{
				speedRight=speed;
				speedLeft=speed;
			}

			// Summe links+rechts mit 2*soll vergleichen und die Differenz addieren
			speedDiff=(2*speedSoll-(speedLeft+speedRight))/2;
			speedLeft+=speedDiff;
			speedRight+=speedDiff;

			StatusLED(GREEN); // gelb=beschleunigen, rot=bremsen, gruen=sollspeed?
			if (speedDiff > 0) StatusLED(YELLOW);
			if (speedDiff < 0) StatusLED(RED);

			MotorSpeed(speedLeft,speedRight);
			//SerWrite(wegl, sizeof(wegl));
			Sleep(76); // 1 Millisekunde pause
		}

		if(PollSwitch()>0)
		{
			for (timeb=1;timeb<500;timeb++)
			{
			if(PollSwitch()>0)
			{
				MotorDir(BREAK,BREAK);
				BackLED(ON,ON);
				Sleep(76);
			}
		}
	}

}

return 0;
}
speedSoll wird gerecht zwischen beiden Motoren aufgeteilt. Ob das so funktioniert kann ich leider nicht feststellen. Eine ernsthaftere Lösung sollte die Wege über der Zeit messen und danach die Motoren regeln. Aber das kann man nicht so auf die Schnelle zusammenbasteln...

Eigentlich warte ich noch auf den unvermeidlichen(?) Hinweis auf die erweiterten Funktionen der aktuellen asuro-Lib. Damit gehts zwar auch, aber man lernt eben mehr, wenn man es selbst macht.

Gruß

mic