Titelbild Mikrocontroller

12.9. Output Compare Einheit

Der 16-bit Vergleicher vergleicht kontinuierlich den Wert des TCNT1 Registers mit den Output Compare Register OCR1A und OCR1B. Wenn die Werte von TCNT1 und OCR1x gleich sind, signalisiert der Vergleicher die Übereinstimmung. Durch die Übereinstimmung wird das Output Compare Flag (OPCF1x) mit dem nächsten Timer Takt gesetzt. Wenn freigegeben (OCIE1x = 1), erzeugt das Output Compare Flag einen Interrupt . Das Flag wird automatisch gelöscht, wenn die Interruptroutine ausgeführt wird. Es kann aber auch per Software gelöscht werden, indem eine logische 1 in das Bit geschrieben wird. Der Waveform Generator verwendet das Überinstimmungssginal, um ein Ausgangssignal entsprechend der Einstellungen der Waveform Generation Mode Bits (WGM13 bis WGM10) und der Compate Output Mode Bits (COM1x1 bis COM 1x0) zu erzeugen. Das TOP und BOTTOM Signal wird vom Waveform Generator verwendet um die besonderen Fälle von extremen Werten in einigen Betriebsmodi zu handhaben.

Die besonderen Eigenschaften der Output Compare Einheit A erlaubt es, den TOP Wert (das heißt die Auflösung) des Timer/Counter zu bestimmen. In Zusammenhang mit der Auflösung des Zählers bestimmt der TOP Wert die Periodendauer des Ausgangssignals, das der Waveform Generator erzeugt.

Das nachfolgende Bild zeigt das Blockschaltbild der Output Compare Einheit. Das „n“ steht für die Nummer des Timer/Counters (also 1), das „x“ steht für die beiden Output Compare Einheiten A und B. Die Teile, die nicht unmittelbar zur Output Compare Einheit gehören, sind grau schattiert.
Blockschaltbild Output Compare Einheit

Blockschaltbild Output Compare Einheit


Die OCR1x Register sind zweifach gebuffert, wenn einer der zwölf PWM Modi verwendet wird. Im normalen Clear Timer on Compare (CTC) Modus ist die zweifache Bufferung ausgeschaltet. Die zweifache Bufferung dient zur Synchronisation der laufenden Zählung mit sich verändernden TOP und BOTTOM Werten in den Registern ORC1x. Die Synchronisation verhindert das Auftreten von unsymmetrischen PWM Pulsen und macht den Ausgang glitch frei.

Der Zugriff auf die OCR1x Register sieht kompliziert aus, ist es aber nicht. Wenn die Bufferung freigegeben ist, dann greift die CPU auf die ORC1x-Buffer Register zu, wenn die Bufferung ausgeschaltet ist, dann greift die CPU direkt auf die OCR1x Register zu. Der Inhalt der OCR1x Register kann nur durch einen Schreibbefehl geändert werden, er wird nicht wie das TCNT1 oder das ICR1 Register automatisch durch den Zähler aktualisiert. Daher muss das High-Byte auch nicht über ein temporäres Register gelesen werden. Allerdings ist es gute Praxis, beim Zugriff auf 16-bit Register stets das Low-Byte zuerst zu lesen. Das Schreiben der OCR1x Register erfolgt aber über das temporäre Register, da der Vergleich aller 16 Bit kontinuierlich läuft. Das High-Byte (OCR1xH) muss als erstes geschrieben werden und wird dabei im temporären Register (TEMP) abgelegt. Wenn anschließend das Low-Byte in das OCR1xL Register geschrieben wird, wird gleichzeitig auch der Wert aus dem TEMP Register in das OCR1xH Register kopiert.
Impressum