Hallo Jake,
im Prinzip alles korrekt. Um das Servo auch in zwischenpositionen zu
steuern, musst Du auf ca. 2µs genau den Impuls erzeugen. Schau Dir mal
die PWM von Timer1 an (16 Bit).
Links und rechts angesteuert könnte dann so aussehen:
1 | for (;;) {
|
2 | if (links) {
|
3 | 1ms Impuls ausgeben
|
4 | } else {
|
5 | 2 ms Impuls ausgeben
|
6 | }
|
7 | 15-20ms Warten
|
8 | }
|
Wenn Du den Timer verwendest, lässt Du ihn mit 1µs Takt bis 20000 zählen
und schaltest den Pin mit output compare bei der gewünschten Länge um.
Da der ATmega8 bei Timer1 zwei OC-Werte zulässt, kann man zwei Servos
ansteuern.
Grüße, Kurt