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
Lesezeichen