Hi, ich habe jetzt mal das hier geschrieben:
Code:
	char *s_pre = "Shoulder: ";
	char *str = "   ";
	sprintf(str, "%d", shoulder_pos);
	str = strcat(s_pre, strcat(str, "\n\r"));
	uart_puts(str);
Es gibt schon einigermaßen das richtige aus, aber irgendwann siehts so aus:
Shoulder: 128
Shoulder: 128
130Shoulder: 128
130131Shoulder: 128
130131131Shoulder: 128
13013113.131Shoulder: 128
13013113.131131Shoulder: 128
13013113.131131131Shoulder: 128
13013113.131131131131Shoulder: 128
13013113.131131131131131Shoulder: 128
13013113.131131131131131131Shoulder: 128
13013113.131131131131131131131Shoulder: 128
13013113.131131131131131131131131Shoulder: 128
13013113.131131131131131131131131131Shoulder: 128
Die Methode, die das macht wird per timer interrupt ausgeführt. Ich habe aber am Anfang der Methode cli() und am Ende ein sei() stehn.

hier mal die komplette methode:
Code:
void keep_moving() {
	cli();

	//NEUE POSITIONEN AUSRECHNEN UND RUNDEN
	shoulder_pos = (uint8_t)(shoulder_pos + shoulder_step);
	elbow_pos = (uint8_t)(elbow_pos + elbow_step);

	//POSITIONEN ÄNDERN
	//move(1, shoulder_pos);
	//move(2, shoulder_pos);
	//move(3, elbow_pos);

	char *s_pre = "Shoulder: ";
	char *str = "   ";
	sprintf(str, "%d", shoulder_pos);
	str = strcat(s_pre, strcat(str, "\n\r"));
	uart_puts(str);

	//WENN DIE POSITIONEN GERUNDET ÜBEREINSTIMMEN
	//NEUBERECHNUNG DER STEPS ERLAUBEN UND NEUES ZIEL FÜR ELBOW SETZEN
	if(shoulder_pos == shoulder_dest && elbow_pos == elbow_dest) {
		recalc_flag = 1;
	} else {
		recalc_flag = 0;
	}

	servo_flag = 0;
	sei();
}
mfg
jagdfalke