Ohh man, das ich da nicht früher drauf gekommen bin

Wenn ich mit encoder[0] arbeite hab ich genau das gleiche Problem.

Werd also die Schaltung noch mal in diese Richtung prüfen müssen.
Vielen Vielen Dank!!!!

Hab da aber ein anderes kleines Programmtechnisches Problem.
Vielleicht kann mir da mal jemand helfen. Hab wahrscheinlich ne kleine Denkblockade.

Denn jedesmal wenn ein case im Switch fertig ist hängt sich mein Programm auf.

Code:
#include "asuro.h"
#include "myasuro.h"

int x=0;									//Zählvariablen für diverse Zählschleifen
char emfangene_daten[10];


void Goo(int d,int l)								//eigene go anweisung 
{	
	StatusLED(GREEN);
	
	SetMotorPower(d,d+5);								//Fahr los mit vorgegebenem Tempo,richtung über +/- Wert
	
	l=l*38/10;											//l ist die Strecke die zurück gelegt werden soll. 1cm = 3.8 ticks												
	EncoderInit();
		for(encoder[1]=0; encoder[1]<=l; )				//Abfrage nur von einem Encoder, da der andere defekt ist!
		{
			Msleep (10);
		}
	MotorSpeed(BREAK,BREAK);
}


int main(void)
{

    
  Init();  									//Devinierter Zustand vom ATMEL
  
 
 while(1)
{
	  while (PollSwitch() == 0)
	  { 
		StatusLED (GREEN);
		Msleep (500);
		StatusLED (RED);
		Msleep (500);
	  }
		
		switch (PollSwitch())					//Auswahlmenü gesteuert über Pollswitch
		{
			case 1:emfang();					//aufruf von Emfang
			break;
			
			case 4: 								//Kleine Fahranweisung zu Demo zwecken.
			StatusLED (YELLOW);						//Funktioniert nicht!!!!
			Msleep (2000);
			
			EncoderInit ();
			for (x=1; x<=4; x++)					//Asuro fährt ein quadrat
				{GoTurn ( 0, 45, 200);					//45° hier entspricht 90° drehung im real, da "grobe" encoderscheibe eingebaut
				GoTurn (150, 0, 200);}
			Msleep(1000);
			
			for (x=1; x<=2; x++)					//Asuro fährt einen kreis vorwärts und rückwärts
				{if (x==1)
				GoTurn (300, 90, 255);
				else 
				GoTurn (-300, -90, 255);
				Msleep(500);}
			break;
		
		
			default: 								//Bei falscheingabe blinkt die Status LED 5x Gelb
			for(x=1; x<=5; x++)
				{StatusLED(OFF);
				Msleep(500);
				StatusLED(YELLOW);
				Msleep(500);}
		break;
	  }
		
	return 0;
	}
}

int emfang(void)							//Steuerung über Seriel
{
	EncoderInit ();
	
	
	StatusLED (YELLOW);  
	BackLED (ON, OFF);						
	Msleep (500);
	BackLED (OFF,ON);
	Msleep (500);
	BackLED (OFF,OFF);							//AUS damit, sonst probleme mit Odometrie!!!!
	
	SerWrite ("READY", 10);
	SerPrint ("\n\r");
	SerRead (emfangene_daten, 1, 0);			//Warte auf Daten, ohne timeout!!
	
	switch (emfangene_daten[0])
	{
		case'T':								//keine Daten erhalten
		break;
		
		case '1':								//Wenn daten =1 fahr vor.
		Goo( 100, 10);
		break;
		
		case '2':								//wenn daten =2 fahr zurück
		Goo (-100, 10);
		break;
		
		default:								//sonst sendefehler 5xgelb
		for(x=1; x<=5; x++)	
		{
			StatusLED(OFF);
			Msleep(500);
			StatusLED(YELLOW);
			Msleep(500);
		}
		break;
	}
return 0;
}
Schon einmal Danke im Vorraus