Also ich habs jetzt mal so geschrieben (verkürzte Form):
Code:
int main (void) {
	//TIMER-IINTERRUPT AN
	TCCR0 |= (1<<CS01) | (1<<CS00);
	TIMSK |= (1<<TOIE0);
	//UART-INTERRUPT AN
	UCSRB |= (1<<RXCIE);
	//UART INITIALISIEREN (RX UND TX ANSCHALTEN)
	uart_init(1, 1);
	//GLOBAL INTERRUPT AN
	sei();
	//PRINTF FÜR AUSGABE KONFIGURIEREN
  	fdevopen(putChar,NULL,0);
	printf("\n\n\rSTART !!!\n\r");
	//HAUPTSCHLEIFE
	while(1)
	{
		//NUR AUFRUFEN, WENN EIN TIMER INTERUPT DA WAR
		if(servo_flag == 1) {
			calc_steps();
			keep_moving();
		}
		if(char_flag == 1) {
			input();
		}
	}
	return 0;
}

void input(void) {
	inStr[inCnt] = uart_readChar();
	printf("\nCHAR RECEIVED: %c\n\r", inStr[inCnt]);
	switch (inStr[inCnt])
	{
	case (stopsign):
		//parseInput();
		inCnt=0;
		break;
	case (startsign):
		inCnt=0;
		break;
	default:
		inCnt++;
		break;
	}
	char_flag = 0;
}

SIGNAL (SIG_OVERFLOW0){
	servo_flag = 1;
}
SIGNAL(SIG_USART_RECV) {
	char_flag = 1;
}
Die keep_moving()-Methode ist noch fast die selbe. Ich habe nur mal statt dem CoController die Werte zu schicken eine Ausgabe über UART draus gemacht, die einem die momentanen Positionen der Servos angibt.
Die bekomme jetzt auch immer schön regelmäßig Informationen zu den Servopositionen. Wenn ich jetzt ein Zeichen schicke kommt auch "CHAR RECEIVED" allerdings stimmt das Zeichen nie. Entweder piept der PC nur oder es kommt > oder + oder # (das dürften so sie gängigsten sein )

Weiß jemand woran das liegt?


mfg
jagdfalke