ChiefGlider
17.05.2009, 20:01
Hallo,
ich verwende den SRF05 und 2 Servos an einem ATMEGA8 (mit 8Mhz internem Quarz). Ausserdem ist ein 16*2 LCD-Display angeschlossen, plus 3 Schalter.
Im Prinzip läuft mein Programm, das ich verwenden möchte, jedoch habe ich das Problem, dass die Messwerte des US-Sensors halbiert werden, sobald ich die Servos initialisiere.
Die Servos werden so initialisiert (funktionieren auch!)
Config Servos = 2 , Servo1 = Portb.1 , Servo2 = Portb.0 , Reload = 10
Config Pinb.1 = Output
Config Pinb.0 = Output
Die US-Sensor-Steuerung läuft so:
Config Pinb.5 = Output
Portb.5 = 0 'Port Low
Pulseout Portb , 5 , 40 'Min. 10uS Impuls senden
Pulsein Zeitmessung , Pinb , 5 , 1
Zeitmessung = Zeitmessung * 10 'mal 10 da Pulsein in 10uS Einheiten Ergebnis ermittelt
Entfernung = Zeitmessung / 58 'Umrechnen in Zentimeter
Waitms 100
Unabhängig voneinander funktioniert beides bestens. Doch zusammen spuckt der US-Sensor immer nur die halbe Entfernung aus.
Ich schätze, es hängt mit den Timern und dem "Reload" des Servos zusammen. Leider kenne ich mich dafür noch nicht gut genug aus. Ich habe das jetzt so gelöst, dass ich für umrechnen in cm halt durch 29 teile. Das funktioniert zwar, ist ja aber eigentlich unschön. Außerdem würde ich gerne verstehen, warum dieser Fehler auftritt.
LG,
David
ich verwende den SRF05 und 2 Servos an einem ATMEGA8 (mit 8Mhz internem Quarz). Ausserdem ist ein 16*2 LCD-Display angeschlossen, plus 3 Schalter.
Im Prinzip läuft mein Programm, das ich verwenden möchte, jedoch habe ich das Problem, dass die Messwerte des US-Sensors halbiert werden, sobald ich die Servos initialisiere.
Die Servos werden so initialisiert (funktionieren auch!)
Config Servos = 2 , Servo1 = Portb.1 , Servo2 = Portb.0 , Reload = 10
Config Pinb.1 = Output
Config Pinb.0 = Output
Die US-Sensor-Steuerung läuft so:
Config Pinb.5 = Output
Portb.5 = 0 'Port Low
Pulseout Portb , 5 , 40 'Min. 10uS Impuls senden
Pulsein Zeitmessung , Pinb , 5 , 1
Zeitmessung = Zeitmessung * 10 'mal 10 da Pulsein in 10uS Einheiten Ergebnis ermittelt
Entfernung = Zeitmessung / 58 'Umrechnen in Zentimeter
Waitms 100
Unabhängig voneinander funktioniert beides bestens. Doch zusammen spuckt der US-Sensor immer nur die halbe Entfernung aus.
Ich schätze, es hängt mit den Timern und dem "Reload" des Servos zusammen. Leider kenne ich mich dafür noch nicht gut genug aus. Ich habe das jetzt so gelöst, dass ich für umrechnen in cm halt durch 29 teile. Das funktioniert zwar, ist ja aber eigentlich unschön. Außerdem würde ich gerne verstehen, warum dieser Fehler auftritt.
LG,
David