Hallo!
Ich steh momentan vor einem Problem, dass ich mir selbst nicht erklären kann:
Servo-Ansteuerung unter Bascom ist ja recht leicht und wurde hier ja auch schon mehrfach besprochen...
Mein Anliegen ist jedoch, dass der Controller (AtMegasolange Befehle ausführen soll, bis er über die serielle Schnittstelle eine "1" empfängt... Soweit auch kein Problem...
Nachdem er diese Zahl empfangen hat, soll er einen Servo in Einzelschritten drehen. Auch das hat bereits in einem anderen Projekt bestens funktioniert!
Nur wenn ich alles zusammen pack, also die Schnittstellen- mit der Servogeschichte, versagt die Drehung jämmerlich...
Ich habe versucht, dem ganzen auf den Grund zu gehen und am Programmanfang und nach dem Schleifendurchlauf eine vollständige Drehung nach links, sowie am Programmende eine Drehung nach rechts eingeleitet... Das funktioniert auch bestens!
Nur in der FOR-Schleife tut sich mit dem Servo rein gar nichts...
Hier der Code:
Hat jemand eine Idee, woran das liegen könnte und was ich tun muss, damit es funktioniert?Code:$regfile = "m8def.dat" $crystal = 4000000 $baud = 9600 Dim Servopos As Integer Dim L As Integer Dim R As Integer Dim S As Integer Dim Inpt As String * 1 Config Servos = 1 , Servo1 = Portb.0 , Reload = 10 Config Portb = Output On Urxc Onrxd Enable Urxc Enable Interrupts L = 100 R = 30 S = -1 Print "Servo wird ausgerichtet..." Servo(1) = L Print "Servo linksseitig ausgerichtet!" Do Main: Print "Main" Wait 1 Goto Main Command: Print "Command" If Inpt = "1" Then Gosub Rotation Inpt = "" Return Rotation: Print "Starte Drehung..." For Servopos = L To R Step S Servo(1) = Servopos Waitms 3 Next Print "Drehung beendet!" Servo(1) = L Print "Servo zurückgesetzt!" Return Onrxd: Print "Empfange Signal..." Inpt = Inpt + Chr(udr) Gosub Command Print "Signalempfang beendet!" Servo(1) = R Print "Servo rechtsseitig ausgerichtet!" Return Loop
Ich hab schon alles versucht... Controller ausgetauscht, den Servo an einen anderen Port angeschlossen... Es tut sich jedoch rein gar nichts...
Könnte es daran liegen, dass der Servo innerhalb eines Interrupts irgendwie deaktiviert ist?
Wenn ich die FOR-Schleife in den Main-Bereich verlege, funktioniert die Servo-Drehung...
Ich hoffe, ihr könnt mir helfen!
Mit freundlichen Grüßen
Philipp







Zitieren

Lesezeichen