Hallo

Ich hab's jetzt auch mal versucht die Impulslängen der Servosignale mit Bascom zu messen. Mit dem Pulsein-Befehl habe ich es nicht geschafft, aber mit einer einfachen Zählschleife funktioniert es recht gut:

Code:
$regfile = "m32def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 24
$baud = 38400

Dim A As Byte
Dim Counter As Integer

Config Servos = 1 , Servo1 = Portc.0 , Reload = 10

Config Portc.0 = Output

'Servo(1) = 100

Enable Interrupts

Do
   Print
   Print "----------------"
   For Servo(1) = 30 To 150 Step 10
      Waitms 500
      Counter = 0

      Do                                                    ' Warten bis aktiver Impuls zu Ende
         A = Pinc.0
      Loop Until A = 0

      Do                                                    ' Warten bis Pause fertig
         A = Pinc.0
      Loop Until A = 1

      Do
         A = Pinc.0
         Incr Counter                                      ' Zähler erhöhen
         'Waitus 2
      Loop Until A = 0                                      ' Solange impuls ansteht

      Counter = Counter - 149                              ' Wert für Mittelstellung abziehen

      Print "Winkel:" ; Servo(1)
      Print "Zähler: " ; Counter
      Print
   Next
Loop
Das Programm erzeugt mit Config Servos seine eigenen Impulse und misst dann deren Länge mit einer Zählschleife. Der Drehbereich meines angeschlossenen Servos ist 30 bis 150. Die Zählwerte sind ohne Verzögerung durch waitus in der Zählschleife und ohne Korrektur von 49 bis 249:
Code:
Winkel:30
Zãhler: 49

Winkel:40
Zãhler: 66

Winkel:50
Zãhler: 82

Winkel:60
Zãhler: 99

Winkel:70
Zãhler: 116

Winkel:80
Zãhler: 133

Winkel:90
Zãhler: 149

Winkel:100
Zãhler: 166

Winkel:110
Zãhler: 183

Winkel:120
Zãhler: 199

Winkel:130
Zãhler: 216

Winkel:140
Zãhler: 233

Winkel:150
Zãhler: 249
Mit Korrektur -149 erhalte ich folgende Werte:
Code:
Winkel:30
Zãhler: -100

Winkel:40
Zãhler: -83

Winkel:50
Zãhler: -66

Winkel:60
Zãhler: -50

Winkel:70
Zãhler: -33

Winkel:80
Zãhler: -16

Winkel:90
Zãhler: 0

Winkel:100
Zãhler: 17

Winkel:110
Zãhler: 34

Winkel:120
Zãhler: 50

Winkel:130
Zãhler: 67

Winkel:140
Zãhler: 84

Winkel:150
Zãhler: 100
Bin ich jetzt selbst etwas überrascht wie gut das passt ;) Für schneller getaktete Kontroller kann man in der Zählschleife noch etwas mit waitus spielen. Bei 16MHz muss man vermutlich nur den Zählwert halbieren.

Gruß

mic