Hallo

Streng genommen ist es schon eine Pulsweitenmodulation, allerdings nicht so wie man es von Antriebsmotoren kennt:

https://www.roboternetz.de/wissen/index.php/Servo

Entscheidend für die Position ist die Länge des High-Impulses (0,5-1,5ms). Mit der Low-Pause kann man beeinflußen, wie "aggressiv" das Servo die gewünschte Position ansteuert. Zum Austesten der Werte finde ich solche Zählschleifen prima, weil man genau weiß, was man da tut. Die Servos brauchen diese Puls/Pause-Folge übrigens bis sie die Position erreicht haben.

Viel eleganter und für mehr Servos geeignet ist der Beispielcode mit dem 100kHz-Timer in dem RNWissen-Beitrag oben. So erledigt der Prozessor die Servoaufgabe locker nebenher.

Übrigens hat die dummy-Zuweisung in den Schleifen keine pwm-Funktion. Sie dient nur dazu den Kompiler zu zwingen, den Code nicht wegzuoptimieren und die Schleife etwas zu verzögern.

Gruß

mic