Polling-Schleife
Dies ist die Option mit der größtmöglichen CPU-Belastung. 100 % der CPU-Zyklen entfallen hier auf Schleifen zur Messung bzw. zum Zählen der entsprechenden Längen der Ton- und Toff-Perioden des Eingangssignals. Die Geschwindigkeit des CPU-Core korreliert umittelbar mit der erzielbaren Auflösung der Tastverhältnis-Messung. Erschwerend kommt hinzu, dass während der Messung die gesamte Anwendung blockiert ist und alle anderen Aktivitäten angehalten werden. Außerdem lässt sich nur jede zweite Periode messen, da der Mikrocontroller nach jeder Messung die Ergebniswerte an den Ausgang weiterleiten muss. Damit ergibt sich für fcy (also die MCU-Taktfrequenz) die folgende Bedingung:
fcy ≥ 2 · N · 2R / Tmin,
wobei N die Zahl der CPU-Zyklen beschreibt, die für die Ausführung einer einzigen Polling-Schleife nötig sind.
Folglich ergibt sich für Tmin = 100 µs (10 kHz), N = 4 und R = 4 ein fcy-Wert von ≥ 1,2 MHz.
Interrupt-gesteuerte Messung
Diese Methode setzt voraus, dass der Mikrocontroller über zwei Arten von Ressourcen verfügt: einen Timer mit genügend Auflösung (wahrscheinlich 16 bit) sowie einen Mechanismus zur Meldung von Signaländerungen am Eingang, der Interrupts erzeugen kann. Anscheinend kann dieses Konzept die Anzahl der CPU-Zyklen verringern und der Anwendung womöglich sogar erlauben, weitere Hintergrund-Aktivitäten aufrecht zu erhalten. In der Praxis allerdings erfordert diese Methode strenge Anforderungen an die Geschwindigkeit des Mikrocontrollers und an den Mechanismus zur Reaktion auf Interrupt-Signale. Das ist so, weil die Genauigkeit der Messung und damit auch die minimalen und maximalen Tastverhältnis-Werte direkt von der Latenz der Interrupt-Reaktion abhängen. Unter der Annahme DCmin = 1 LSB oder 1/2R Tmin ergibt sich die MCU-Taktfrequenz als
fcy ≥ M · 2R / Tmin
Dabei ist M die Interrupt-Latenz der CPU (in Taktzyklen) einschließlich Kontext-Abspeicherung und nötiger Instruktionen zur Erfassung des Timer-Werts sowie für die Rückkehr zur Anwendung.
Für M = 40 (eine ziemlich optimistische Annahme), Tmin = 100 µs (10 kHz) und R = 4 ergibt sich fcy ≥ 24 MHz. Das bedeutet, dass die Anwendung jetzt zwar Hintergrund-Aktivitäten unterstützen kann (keine Blockierung durch Schleifen), die MCU-Taktgeschwindigkeit aber auf das Zehnfache erhöht werden muss. Dazu kommt eine höhere Software-Komplexität, da der Interrupt-Mechanismus jetzt für eine korrekte Erfassung der ansteigenden und abfallenden Flanken sowie für die Erkennung des Abschlusses jeder Signalperiode die Einrichtung einer richtigen Zustandsmaschine benötigt.
Signalerfassungs-Modul
Die Nutzung dieser Methode setzt voraus, dass es neben einem 16-bit-Timer auch einen entsprechenden Signalerfassungs-Mechanismus gibt. Dieser Mechanismus liest den Timer-Zählerstand bei jedem Flankenwechsel des Eingangssignals von steigend auf fallend und umgekehrt in ein entsprechendes Register aus und erzeugt einen Interrupt zur Aktivierung des Mikrocontrollers. Diese Peripheriefunktion wird zwar selbst bei preisgünstigen Mikrocontrollern immer beliebter, doch die positiven Effekte auf die Anwendung sind eher marginal. Der einzige praktische Vorteil ist eine Verringerung des Messfehlers, wenn sich die Interrupt-Latenz nicht als fester Wert garantieren lässt, sondern von der CPU-Belastung zum Zeitpunkt des Ereignisses abhängt.
Solange der minimale Tastverhältnis-Wert auf 1 LSB eingestellt ist, gilt die gleiche Formel für die Berechnung der minimal zulässigen MCU-Taktfrequenz. Ähnlich wie beim Konzept weiter oben verringert sich die Software-Komplexität nur marginal, wenn überhaupt. Sogar die Zustandsmaschine zur Verfolgung des Tastverhältnisses jeder Signalperiode ist fast identisch; das Gleiche gilt für die 16-bit-Rechenoperationen zur Ermittlung der Periode und des Tastverhältnisses.