Liste der Anhänge anzeigen (Anzahl: 1)
ZeichenKETTE einlesen und damit G'keit von 2 Steppern regeln
Hallo zusammen,
Ich habe eine Frage zum einlesen von Daten via RS232 in meinen ATmega8. Hab zwar schon zig Threads gelesen, bin aber doch nicht schlau geworden. Ich kann zwar schon einzelne Ascii-Werte einlesen und die als Echo an meinen PC zurücksenden, jedoch holt der Inkey() Befehl doch nur ein Zeichen nach dem anderen aus dem Buffer heraus und nicht eine ganze Zeichenfolge. Wie stelle ich das jetzt an, dass wenn ich dem AVR z.B. den Wert 255 sende, er mir nicht nacheiander 2 dann 5 und nochmal 5 zurückgibt, sondern er 255 in eine Variabel abspeichert. Hab dazu im Anhang mein bisheriges Programm angefügt.
Gruss commander7
Liste der Anhänge anzeigen (Anzahl: 1)
hallo zusammen
ich bin nun einen Schritt weiter gegangen, da das einlesen der Zeichenkette nun funktioniert. Bei meinem weiterentwickelten Programm will ich per RS232 einen Wert einlesen und anhand von diesem die Geschwindigkeit des Timer1 regeln. Wenn der Timer1 abgelaufen ist, soll ein Interrupt ausgelöst werden und in diesem soll der Motor einen Schritt machen.
Erfreulicherweise dreht sich der Motor auch ganz langsam, aber leider bewirkt das Senden einer neuen Geschwindigkeit beim Timer gar nichts. Das Zeichen empfängt er aber richtig, da ich es mit dem Echo konrollieren kann.
Kann mir jemand einen Tipp geben, was an meinem Programm falsch ist, das der Timer1 seine "Geschwindigkeit" nicht ändert?
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
Hab es nun hingekriegt, dass Tempo zu ändern *freu*. Aber eben erst mit einem Motor und ich will aber schon zwei ansteuern. Mit dem jetztigen Programm dreht sich der linke Stepper (Timer0) einwandfei. Ich habe nun für den rechten Motor den Timer2 eingesetzt, da Timer1 ja ein 16Bit Timer ist. Das Problem ist aber, dass sich betreffende Motor zwar vorwärts und rückwärts dreht, aber sein Tempo ist viel zu schnell und es kann nur geringfügig geändert werden. Das heisst im Klartext: Linker Motor läuft richtig, Rechter aber schon bei kleinem Tempo ( < 10) viel schneller und wenn ich mit dem Tempo hochfahre dann fängt er schon früh an zu stocken, da er wie ich vermute nicht so schnell drehen kann.
Ist es möglich, dass der Fehler eintritt, weil sich Timer0 und Timer2 irgendwie in die Quere kommen oder hab ich was falsch programmiert?
Erklärung zur Ansteuerung:
Über das CommControl sende ich via RS232 zuerst die Geschwindigkeit (-236 bis 236) und für den linken Motor als Code für den AVR eine 100 und für den Rechten ein 101.
gruss commander7