Man kann einige Pins so programmieren das man bei jeder Änderung einen Interrupt bekommt (Pin CHANGE bei neueren AVRs). Man kann auch in der ISR umschalt auf welche Flanke der µC das nächste mal reagieren soll.
Viel mehr als 8 Bit Auflösung wird man für ein Servosignal kaum gebrauchen. Mehr macht so eine Poti und wohl auch die Übertragung nicht mit. Bei einer 1 ms Spanne für den Servo wären das etwa 4 µs als maximal sinnvolle Zeitauflösung, es kann aber natürlich auch etwas größer sein. Trotzdem ist das etwas schnell um da extra in einer ISR hoch zu zählen. Der bessere Weg ist es einen Timer direkt laufen zu lassen, am Ende Auszulesen und ggf. dann die Skalierung umzurechnen. Solange nicht noch langsame Interrupts laufen, ist das kein Problem den Timer in der ISR auszulesen. Beim 16 Bit Timer hat man auch noch die Input Capture Funktion als Hardware Unterstützung für eine besonders hochauflösende Messung.
Lesezeichen