-
Das String-zusammenbasteln zahlt sich da nicht aus
Code:
void servo_move(int servo, int pos)
{
loop_until_bit_is_set(UCSRA, UDRE);
UDR = '#';
loop_until_bit_is_set(UCSRA, UDRE);
UDR = 's';
loop_until_bit_is_set(UCSRA, UDRE);
UDR = servo;
loop_until_bit_is_set(UCSRA, UDRE);
UDR = pos;
}
Das Stringbauen + schleifen-konstrukt macht die Sache nur länger
-
Mit '+' Kann man in C keine Strings zusammenbasteln!!!
Mit '+' addierst du die Adressen der Strings, das Resultat zeigt irgendwo in deinen Speicher und du liest Käse raus bzw das, was gerade da steht.
Strings aneinanderhängen geht mit strcat(), aber besser ist der Vorschlag von Robert.
-
Ja, warum einfach, wenns auch kompliziert geht ? :D
Danke, jetzt klappts.
Eine neue Frage hat sich aufgetan:
wenn ich jetzt
Code:
int i=0;
for(i=0; i<=255; i++) {
servo_move(1, i);
}
laufen lasse, beept mein PC immer. Woran liegt denn das? Das ist dasselbe beepen, das man hört, wenn man in ner Linuxkonsole die Pfeiltaste nach unten drückt.
mfg
jagdfalke
-
Du meinst, Du willst Die ausgabe die für den Motor gedacht ist am PC sehen ?
Es piept deshalb, weil das Zeichen das ankommt nicht darstellbar ist, und evtl. den Code 7 hat.
Sehen kann man nur die ersten beiden Zeichen also "#s", von den 255 möglichen nur die, die auch als Zeichen darstellbar sind.
Da kommt dann allerhand drucheinander an, oder ?
-
Durcheinander kommt eigentlich nix.
Er zeigt halt nur "#s" an und beept. Naja das geht dann wohl nicht.
-
Dazu gleich eine Warnung: je nach Emulation kann sich ein Terminal bei ungünstigen Zeichen regelrecht "aufhängen". Nicht erschrecken, ggf. beenden und neu starten