hab jetzt folgendes gemacht:

Code:
/**
 * Bumpers Event Handler
 */ 
void bumpersStateChanged(void)
{
	interrupt_status.bumperLeft = bumper_left;
	if(bumper_right)
		interrupt_status.bumperRight = true;
	else
		interrupt_status.bumperRight = false;
	signalInterrupt();
	move(60, BWD, DIST_MM(300), true);
	rotate(50, RIGHT, 90, false);
}
Problem:
Wenn ich den Blocking-Parameter der Rotate-Fkt. auf "false" setze, dann beendet er das Programm nach Abfahren der Strecke und Rotieren und will einen Reset.
Wenn ich den Parameter auf "true" setze, macht er das Gleiche, nur dass er dreimal rotiert... ???
Außerdem arbeitet er auch sonst nix mehr ab (sendet nichts mehr ans Terminal, und legt nichts auf den I2C für die M32).



Was stimmt da nicht?

Was aber funktioniert hat, war statt anderen Befehlen einfach ein
stop();
mSleep(2000);
Dann geht soweit alles und Schlimmeres wird verhindert
Auch wenn es einen Moment dauert, bis er anhält...

Dann zum M32:
Ich möchte ein paar LEDs schalten auf RC5-Code 13 (ein) und 34 (aus).

Hab das so versucht:
Code:
// ------------------------------------
		// Check if there was a RC5 Reception:
		if(interrupt_status.RC5reception)
		{
			uint8_t readBuf[2];
			writeString_P("Received RC5 Transmission: ");
			I2CTWI_transmitByte(I2C_RP6_BASE_ADR,I2C_REG_RC5_ADR);
			I2CTWI_readBytes(I2C_RP6_BASE_ADR, readBuf, 2);
			writeString_P("ADR:");writeInteger(readBuf[0],DEC);
			writeString_P(" | DATA:");writeInteger(readBuf[1],DEC);
			writeString_P("\n");
			if(I2C_REG_RC5_DATA == 13)
				{
				DDRC |= IO_PC7;		//PC7 ist nun auf OUT
				PORTC |= IO_PC7;	//PC7 ist nun High
				}
			else if(I2C_REG_RC5_DATA == 34)
				{
				DDRC |= IO_PC7;		//PC7 ist nun auf OUT
				PORTC &= ~IO_PC7;	//PC7 ist nun Low
				}
		}
Aber es passiert leider nichts.

Danke schon mal,
Fabian