Hallo Alle,

nochmal danke für eure Hilfen. Das Servoprogramm läuft bei der Erprobung einwandfrei mit den zehn Servos (Anm.: teils getestet mit realen Servos, teils mit Oszilloskop - es fehlt seit Tagen eine Hardwarelieferung). Die aktuell erzielbare Auflösung ist hoch und ...
Zitat Zitat von Klebwax Beitrag anzeigen
... Bei einem Servo ist, in Grenzen natürlich, das Puls/Pause Verhältnis unerheblich ...
... im aktuell geschalteten Fall sieht es so aus, dass eine Periodenzeit von 22 ms im Vergleich mit einer Periode von 20 ms bei gleicher Rampenzeit die gleiche Servostellung bewirkt. Geprüft einfach durch Augenschein mit Peilung über den Servohebel gegen markierten Untergrund.

Mal ein paar Eckpunkte:
Timer1 auf 312,5 kHz (20 MHz mit Prescaler 64)
ISR (TIMER1_COMPA_vect) durch OCR1A = 800 alle 2,56 ms. Ein umlaufender Servopointer {1 bis 10} setzt den entsprechenden Servopin.
ISR (TIMER1_COMPB_vect) wird in TC1_CMPA mit OCR1B gestartet und erzeugt die Rampe, der Servopointer dient zum Löschen der Rampe.
Die zuständigen Rampenwerte liegen in einem Feld Srv_tm [12] (*ggg* ich weiß, das sind zu viele Elemente, aber ich nehme der Übersichtlichkeit halber nur die Elemente ~[1] bis ~[10] für Servo1 bis Servo10 und habe das zwölfte für "sonstige" Zwecke" frei).
Der Schwenkbereich liegt bei (m)einem Billigservo bei fast 180° - mit OCR1B-Werten zwischen 120 und 780. Für die "allgemeine" Anwendung wirds auf 200 bis 700 beschränkt. Das entspricht einer theoretischen Auflösung von weniger als einem Drittel Grad (rund 17 Gradminuten).

Zitat Zitat von Klebwax Beitrag anzeigen
... Ich würde sogar versuchen, die Periodendauer soweit als möglich zu reduzieren ...
Nun habe ich ja ein reproduzierbar getaktetes/taktbares Modul, da kann ich mich demnächst damit spielen. Die ersten Ergebnisse mit 8 oder zehn Servos und entsprechend acht oder zehn TC1_CMPA-Schleifen sehen schon gut aus. Das "... demnächst damit spielen ..." wird etwas dauern, weil ich ziemlich hinter meinem Zeitplan herhinke.