Gerko
19.02.2006, 16:08
Hallo Leute!
Ich hoffe ich schreibe hier im richtigen Forum, aber ich finde einfach keines für eine Assembler Programmierung. Ich habe seit ein paar Monaten ein Projekt laufen in dem es darum geht einen Roboter über den PC mit Hilfe einer Funkübertragung zu steuern. Das funktioniert auch so halbwegs, aber ich verstehe nicht warum ich wenn ich mehrere Zeichen übertragen will immer warten muss (20ms) bis ich das nächste Zeichen übertragen kann. Ich sende mit 9600 Baud.
Hier ist Mal ein kurzer Programmausschnitt, in dem ich meine Nachricht dann übertrage:
serout:
call delay_20ms
sbis UCSRA,UDRE
rjmp serout
out UDR, temp
ret
(PS.: vielleicht kennt das schon jemand aus dem Tuturial von www.mikrocontroller.net)
In temp befindet sich die Nachricht. Das call delay_20ms ruft ein Unterprogramm auf, das 20ms wartet. Ohne diesem Befehl bekomme ich dann im VB Programm nur den ersten Buchstaben richtig an. Ich würde es verstehen wenn es mit 5ms oder so auch funktionieren würde, aber das tut es nicht, kann mir das mal jemand erklären?
Ich freue mich auf eine baldige Antwort
Gerko
Ich hoffe ich schreibe hier im richtigen Forum, aber ich finde einfach keines für eine Assembler Programmierung. Ich habe seit ein paar Monaten ein Projekt laufen in dem es darum geht einen Roboter über den PC mit Hilfe einer Funkübertragung zu steuern. Das funktioniert auch so halbwegs, aber ich verstehe nicht warum ich wenn ich mehrere Zeichen übertragen will immer warten muss (20ms) bis ich das nächste Zeichen übertragen kann. Ich sende mit 9600 Baud.
Hier ist Mal ein kurzer Programmausschnitt, in dem ich meine Nachricht dann übertrage:
serout:
call delay_20ms
sbis UCSRA,UDRE
rjmp serout
out UDR, temp
ret
(PS.: vielleicht kennt das schon jemand aus dem Tuturial von www.mikrocontroller.net)
In temp befindet sich die Nachricht. Das call delay_20ms ruft ein Unterprogramm auf, das 20ms wartet. Ohne diesem Befehl bekomme ich dann im VB Programm nur den ersten Buchstaben richtig an. Ich würde es verstehen wenn es mit 5ms oder so auch funktionieren würde, aber das tut es nicht, kann mir das mal jemand erklären?
Ich freue mich auf eine baldige Antwort
Gerko