Arne
26.07.2006, 17:03
Hallo,
meine serielle Kommunikation klappt nur eingeschränkt.
Hier ein kl. Beispielprogramm. Damit kann man über serielle Eingabe den Servo, der an Port B.0 angeschlossen ist, steuern.
Das funktioniert unter Hyper Terminal auch. Jetzt das Problem:
Benutze ich ein Programm, dass jede 0,5 sek den Wert sendet, springt der Servo alle ca. 30 sek für kurze Zeit auf die Nullposition und fährt dann wieder auf die gewünschte Position. Erhöhe ich die Sendefrequenz , z.B. 5 HZ - sollte bei 9600 Baud und nur 3 Ziffern doch nicht zu schnell sein - springt der Servo alle ca. 10 Sek auf die Nullposition.
Ich vermute ein Synchronisationsproblem. Vielleicht die Flusssteuerung/Handshake?! Wie kann ich die beim Controller einstellen?
Das Coumputer Programm sendet nur in eine Richtung.
'$sim
$regfile = "m16def.dat"
$baud = 9600
$crystal = 16000000
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Portb = Output
Enable Interrupts
Dim A As Integer
Do
Input "stellung für 1. servo - test?" , A
Print "a"
Servo(1) = A '1000 uS on
Loop
End
meine serielle Kommunikation klappt nur eingeschränkt.
Hier ein kl. Beispielprogramm. Damit kann man über serielle Eingabe den Servo, der an Port B.0 angeschlossen ist, steuern.
Das funktioniert unter Hyper Terminal auch. Jetzt das Problem:
Benutze ich ein Programm, dass jede 0,5 sek den Wert sendet, springt der Servo alle ca. 30 sek für kurze Zeit auf die Nullposition und fährt dann wieder auf die gewünschte Position. Erhöhe ich die Sendefrequenz , z.B. 5 HZ - sollte bei 9600 Baud und nur 3 Ziffern doch nicht zu schnell sein - springt der Servo alle ca. 10 Sek auf die Nullposition.
Ich vermute ein Synchronisationsproblem. Vielleicht die Flusssteuerung/Handshake?! Wie kann ich die beim Controller einstellen?
Das Coumputer Programm sendet nur in eine Richtung.
'$sim
$regfile = "m16def.dat"
$baud = 9600
$crystal = 16000000
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Portb = Output
Enable Interrupts
Dim A As Integer
Do
Input "stellung für 1. servo - test?" , A
Print "a"
Servo(1) = A '1000 uS on
Loop
End