Hallo

Ohne weiteren Kommentar zum von dir hingeknallten Quellcode:

Code:
#include "RP6RobotBaseLib.h"

char Buffer[UART_RECEIVE_BUFFER_SIZE + 1];
char Name[12+1];
uint8_t cnt;
uint8_t speed = 0;
int8_t dir = 0;


uint8_t Eingabe(void)
{
	static uint8_t buffer_pos = 0;

	if(getBufferLength())
	{
		Buffer[buffer_pos]=readChar();
		if(Buffer[buffer_pos]=='\n')
		{
			Buffer[buffer_pos] = '\0';
			buffer_pos = 0;
			clearReceptionBuffer();
			return 1;

		}
		else if(buffer_pos >= UART_RECEIVE_BUFFER_SIZE)
		{
   		Buffer[buffer_pos] = '\0';
   		buffer_pos = 0;
   		clearReceptionBuffer();
   		return 1;
		}
		buffer_pos++;
	}
	return 0;
}

void Warten(void)
{
	for(cnt = 0; cnt <UART_RECEIVE_BUFFER_SIZE + 2; cnt++)
	{
		Buffer[cnt]=0;
	}

	while(!Eingabe());
}



void Namenlesen(void)
{
	uint8_t a;

	for(a=0;a<14;a++)
	{
		Name[a]=Buffer[a];
	}
}

void KommandoAuswerten(void)
{
	int cnt = 0;
	int cnt2;
	int done = 0;
	char Speed[2];

	while(Buffer[cnt] != '\n' )
	{
		if (Buffer[cnt]=='_' && done == 0)
		{
			for(cnt2=0;cnt2<4;cnt2++)
			{
				Speed[cnt2]=Buffer[cnt2];
			}
			speed = atoi(Speed);
			done = 1;
			break;
		}
		cnt++;
	}
}

int main(void)
{
	initRobotBase();

	setLEDs(0b000000);

	writeString("Hallo lass uns starten\n");
	writeString("Schreibe mal bitte deinen Namen ins Terminal\n");

	Warten();
	Namenlesen();
	writeString("Dein Name ist also ");
	writeString(Name);

	writeChar('.');
	writeString("\n");

	writeString("Gib mir mal ein Komando");
	writeString("\n");
	Warten();
	KommandoAuswerten();
	powerON();
	moveAtSpeed(speed,speed);
	return 0;
}
So geht's auch und kann sogar Fehler- und Warnungsfrei kompiliert werden. Was auf den ersten Blick auffällt: Keine Endlosschleife! MoveAtSpeed benötigt das Tasksystem. Mehr mag ich eigentlich noch nicht anmerken. Putze den Code, füge Kommentare ein, simuliere empfangene Daten/Befehle....

Viel Erfolg

mic