Du musst ein Signal erzeugen, das eine Impulslänge von 1ms ( voller Linksausschlag ) bis 2ms ( voller Rechtsausschlag ) erzeugt.
Zwischen den Impulsen muss dann eine nullage von 18...20ms kommen.

Ich mach das gerne mit dem Timer 1 des Controllers und den dazugehörigen Comparematch Interrupts.

Der Timer 1 läuft dabei frei und kann deshalb auch noch für andere Aufgaben verwendet werden.
Ein Comparematch Interrupt tritt auf -> Dae gewünschte Pin wird auf "H" geschaltet. Das Comparematchregister wird mit dem Wert für den nächsten Interrupt vorgeladen ( TCNT1 + gewünschte Impulslänge ).
Tritt dieser Interrupt dann wieder auf wird der Ausgang "L" geschaltet und das Comparematchregister für den nächsten Interrupt ( Impuls ) vorgeladen ( TCNT1+gewünschte Pausezeit ).
Die Ansteuerung der einzelnen Sequenzen im Interrupt kann man über eine Zählvariable machen.
Das System ist auch sehr einfach auf zusätzliche Servokanäle erweiterbar, indem man einfach zusätzliche Sequenzen hinzufügt, die dann den Vorherigen Servokanal löschen und den aktuellen aktivieren.

Das funktioniert so bis ca. 8 Servos, dann wird die Pause zwischen den Pulsen zu lang.

Das Hauptprogramm muß dann nur noch eine Variable mit den gewünschten Servoimpulslängen füttern, der Rest läuft im Interrupt.