Jetzt würde ich es gern so weit wie möglich Interrupt gesteuert machen so das der Controller möglichst nicht in irgendwelchen Warteschleifen hängt sondern noch andere Dinge tun kann.
Wenn du nur ein Servo pro Timer nimmst, kannst du den Timer immer so einstellen, dass er überläuft(und den entsprechenden Interrupt triggert), wenn das nächste mal eine Änderung am Servo-Pin nötig ist. Du schaltest also z.B. den Pin auf High und stellst den Prescaler so ein, dass ein Überlauf mindestens 2ms dauert. Dann stellst du über den Wert, den du in den Timer lädst, ein, dass er überläuft, wenn der Port auf low soll(also ja nach Stellung nach 1-2ms). Das machst du beim nächsten Überlauf und stellst dann den Timer so ein, dass er nach 18-19ms überläuft. Wenn du den 16-Bit-Timer dafür über hast, brauchst du nur immer einen anderen Wert in den Timer zu laden und kannst immer den gleichen Prescaler(meist wohl 1) nehmen. Mit 8 bit musst du den Prescaler nach jedem Schalten verändern(wenn 256 Schritte mindestens 20 ms dauern sollen, hast du bei 1 ms nurnoch 12 Stufen.).
Wieviele Abstufungen sind eigentlich sinnvoll mit so einem Servo, dachte mal daran ihm seriell ein Byte zu senden meinetwegen 0x00 linksanschlag und 0xFF rechts aber warscheinlich kann der eh nicht so feinabstufen oder?
Die Fernsteuerungen, mit denen Modellservos normalerweise angesteuert werden, können höchstens 64 Stufen. Also werden die Servos wohl in der Praxis auch nicht viel genauer gehen. Die Servoelektronik an sich ist(zumindest bei dem Servo, das ich auseinandergenommen hab' und den Plänen, die ich kenne) völlig analog(ein Poti misst die Stellung und stellt darüber ein Tastverhältnis ein, das über die Stellung des Servos an das PWM-Signal angeglichen wird.).