Z80 CTC (in der DDR U857) - Programmierung history menue Letztmalig dran rumgefummelt: 04.02.05 18:09:43
Zur Programmierung eines CTC sind maximal drei Steuerbytes notwendig - in Extremfall ein Interrptsteuerwort, ein Betriebsartensteuerwort sowie eine Zeitkonstante, welche als Rückwärtszähler dient. Natürlich entscheiden auch beim Z80-CTC einzelne Bits des Betriebsartensteuerworts über die Funktionalität.

  1. Interrptsteuerwort
  2. Kanalsteuerwort
  3. Beschreibung der Betriebsarten
  4. Interruptverhalten

Abhängig von der Betriebsart ist der CTC in der Lage, folgende Funktionen jeweils mit bzw. ohne Interruptanforderung eines Kanals auszuführen:
  • Zeitgeber des internen CPU-Taktsignales mit Vorteiler 16 bzw. 256 mit und ohne Zeitkonstante 
    • der Nulldurchlauf kann extern am ZC/TO dreier Kanäle sowie durch Kanalabfrage auch intern ausgewertet werden - extern macht natürlich nur Sinn bei Kanalkaskadierung oder wirklich externer Signalverarbeitung - z. B. als Zählersteuerung
    • effektives Arbeiten erlaubt natürlich nur der Interruptbetrieb, wenn nicht extern ausgewertet werden soll - hierbei wird die CPU selbst nicht belastet
  • Zähler externer Signalquellen 
    • der Nulldurchlauf kann extern am ZC/TO dreier Kanäle sowie durch Kanalabfrage auch intern ausgewertet werden - extern macht natürlich wiederum nur Sinn bei Kanalkaskadierung oder wirklich externer Signalverarbeitung - z. B. als Zählersteuerung
    • effektives Arbeiten erlaubt natürlich nur der Interruptbetrieb, wenn nicht extern ausgewertet werden soll - hierbei wird die CPU selbst nicht belastet
Spätestens hier beweist sich der Spruch: "Es gibt zehn Arten von Menschen: die einen verstehen das Binärsystem, die anderen nicht!"  - deshalb hier noch mal zu den entsprechenden Zahlensystemen ;-)
alle folgenden Bitmuster müssen via OUT-Befehlen auf die Steuerdresse des jeweiligen Bausteins mit Kanaladresse gesendet werden
Detaillierte Funktionsbeschreibung und Programmierbeispiele findet man auch hier
Beispielprogramme zur CTC-Programmierung

für den Profi - Kurzreferenz zur CTC-Programmierung

Die zwei Adressbits des CTC-Bausteins CS0 und CS1 ermöglichen bei der Datenausgabe und bei der Dateneingabe zwischen U880 und U857 die Auswahl eines der vier CTC-Kanäle. Bei der Dateneingabe vom U857 in den CPU-Schaltkreis gelangen die aktuellen Zählerstände der einzelnen Kanäle in den Mikroprozessor. Der Zählvorgang wird dadurch nicht beeinflusst. Bei der Datenausgabe muss zwischen dem Interruptvektor (Low-Teil), dem eigentlichen U857-Steuerwort und der abzuzählenden Zeitkonstante unterschieden werden.
Der Interruptvektor wird vom Steuerwort durch ein rückgesetztes Bit in der Position D0 unterschieden, während zwischen Steuerwort und Zeitkonstante eine feste Ausgabesequenz festgelegt ist. Der Interruptvektor wird nur an die Kanaladresse CSO,CS1=00 ausgegeben und enthält in den Bitpositionen 07 ... D3 einen für alle vier CTC-Kanäle gemeinsamen Teil. In die Bitpositionen D2 und Dl wird im Interruptfall automatisch die entsprechende Kanaladresse (00,01,10,11) eingeblendet. Zur Unterscheidung zwischen Interruptvektor und Steuerwort wird im Bit D0 des Steuerwortes generell eine 1 eingetragen. Die Steuerwortausgabe ist nicht an einen bestimmten Zeitpunkt gebunden. Sie kann sowohl auf einen rückgesetzten (RESET) als auch, auf einen bereits arbeitenden Kanal erfolgen, ausgenommen der Kanal erwartet nach einer bereits erfolgten Steuerwortausgabe eine Zeitkonstante. Bei der Festlegung des CTC-Steuerwortes sind in den Bitpositionen D1. D2, D3 und D4 folgende Besonderheiten zu beachten:

  • D1 = 0 - Keine Veränderung (NOP) in der Arbeitsweise des CTC-Kanals.
  • D1 = 1 - Rücksetzen (Stop) des CTC-Kanals. Der Kanal bricht den laufenden Zählvorgang ab. Ist gleichzeitig das Bit D2=1, wartet der Kanal, bis eine Zeitkonstante eingegeben wird, und zählt dann weiter. Anderenfalls muss ein neues Steuerwort geladen werden, um den Kanal wieder zu aktivieren.
  • D2 = 0 - Auf das Kanalsteuerwort folgt keine Zeitkonstante. Durch ein Steuerwort mit D2=0 kann Interrupt disable (D7=0) gegeben werden, ohne eine Zeitkonstante mit ausgeben zu müssen.
  • D2 = 1 - Das nächste an die CTC-Kanaladresse ausgegebene Datenwort ist die Zeitkonstante. Sollte in dem adressierten Kanal zum Zeitpunkt der Zeitkonstantenausgabe ein Zählvorgang laufen, so wird der Abschluss (Nulldurchgang) dieses Zählvorganges abgewartet, bis die neue Zeitkonstante wirksam wird.
  • D3 = 0 - Die Abarbeitung des Rückwärtszählers beginnt mit der fallenden Flanke des zweiten Taktes in dem auf die Ausgabe der Zeitkonstante folgenden Maschinenzyklus (nur im Zeitgebermode von Bedeutung).
  • D3 = 1 - Die eigentliche Startfreigabe des Rückwärtszählers erfolgt, wenn eine Flanke (siehe D4) am externen Takteingang einläuft. Ist die Startfreigabe erfolgt, gilt das bei D3=0 Gesagte (nur im Zeitgebermode von Bedeutung).
  • D4 = 1 / Zeitgebermode - Eine positive Flanke am externen Takteingang erteilt die Startfreigabe bei D3=1.
  • D4 = 1 / Zählermode - Die positiven Flanken des am externen Takteingang anliegenden Signals arbeiten den Rückwärtszähler ab.
  • D4 = 0 - Wie D4=1, nur dass nicht die positiven, sondern die negativen Flanken des externen Takteingangs die Startfreigabe bzw. die Zählsignale darstellen.

1. Interruptsteuerwort history menue scroll up
Betriebsart D7 D6 D5 D4 D3 D2 D1 D0
Interrptvektor X X X X X X X 0
Kanalsteuerwort (siehe 2.) X X X X X X X 1

Tabelle 1 - CTC-Interrptvektor-Programmierung

Interruptvektor muss auf einer geraden Hexadezimalzahl enden Bit0  = 0
Das Bit D0 = 0 identifiziert das Steuerwort als Interruptvektor
beim Einschreiben dieses Vektors werden die beiden Bits D2 und D1 nicht berücksichtigt und können deshalb einen beliebigen Wert haben
Empfohlenes Steuerwort für Interruptvektor: 00H (nicht zu berücksichtigende Bits sind auf 1 gesetzt worden!) - Konsequenz: auch die Tabelle der Vektoren muss dann auf einer Adresse beginnen, welche auf 00H endet
somit können mit dem CTC folgende Adressen für die Kanäle 0 bis 3 ausgesendet werden:
D7 D6 D5 D4 D3 D2 D1 D0
V7 V6 V5 V4 D3 0 0 0
Kanal 0 wird bearbeitet
D7 D6 D5 D4 D3 D2 D1 D0
V7 V6 V5 V4 D3 0 1 0
Kanal 1 wird bearbeitet
D7 D6 D5 D4 D3 D2 D1 D0
V7 V6 V5 V4 D3 1 0 0
Kanal 2 wird bearbeitet
D7 D6 D5 D4 D3 D2 D1 D0
V7 V6 V5 V4 D3 1 1 0
Kanal 3 wird bearbeitet
  • das ergibt für den Kanal 0 den Interrptvektor: 00H (gilt aber nur, wenn die Datenbit V7 bis V3 auf "0" gesetzt wurden!)
  • ... und  für den Kanal 1 den Interrptvektor: 02H (gilt aber nur, wenn die Datenbit V7 bis V3 auf "0" gesetzt wurden!)
  • ... und  für den Kanal 2 den Interrptvektor: 04H (gilt aber nur, wenn die Datenbit V7 bis V3 auf "0" gesetzt wurden!)
  • ... und  letztendlich für den Kanal 3 den Interrptvektor: 06H (gilt ebenfalls nur, wenn die Datenbit V7 bis V3 auf "0" gesetzt wurden!)
bei Freigabe aller Interruptfreigabeflipflops können somit im Zusammenhang mit dem I-Register der CPU vier verschiedene Pointer gebildet werden, die in der Startadressentabelle auf vier unterschiedliche ISR-Startadressen hinweisen. Damit kann jeder Zähler/Zeitgeber-Kanal mit einer eigenen ISR bedient werden.

2. Kanalsteuerwort history menue scroll up
Funktion D7 D6 D5 D4 D3 D2 D1 D0
Kanalsteuerwart X X X X X X X 1
Interrptfreigabe-FlipFlop frei (nur möglich, wenn zuvor erfolgreich ein Interrptvektor eingeschrieben wurde) 1 X X X X X X 1
Interrptfreigabe-FlipFlop gesperrt 0 X X X X X X 1
Zählerbetriebsart X 1 X X X X X 1
Zeitgeberbetriebsart X 0 X X X X X 1
Vorteiler für Zählerbetriebsart = 256 X X 1 X X X X 1
Vorteiler für Zählerbetriebsart = 16 X X 0 X X X X 1
Taktflanke für den Start der Zählerbetriebsart = H X X X 1 X X X 1
Taktflanke für den Start der Zählerbetriebsart = L X X X 0 X X X 1
Trigger extern X X X X 1 X X 1
Zeitkonstantenstart X X X X 0 X X 1
Zeitkonstante folgt X X X X X 1 X 1
Zeitkonstante folgt nicht X X X X X 0 X 1
RESET Kanal X X X X X X 1 1
NOP - No Operation X X X X X X 0 1

Tabelle 2 - CTC-Kanalsteuerwort - alle rot gekennzeichneten Bits sind für die jeweilige Programmierung relevant

Empfohlenes Steuerwort: Interrupt gesperrt; Zeitgeberbetriebsart; Vorteiler 16; Trigger-Flanke=L; Trigger intern; Zeitkonstantenstart; keine Zeitkonstante; NOP: 01H
Empfohlenes Steuerwort: Interrupt gesperrt; Zeitgeberbetriebsart; Vorteiler 16; Trigger-Flanke=L; Zeitkonstantenstart; kein externer Trigger ; Zeitkonstante folgt nicht; RESET Kanal: 03H
Empfohlenes Steuerwort: Interrupt gesperrt; Zeitgeberbetriebsart; Vorteiler 16; Trigger-Flanke=L; Zeitkonstantenstart; kein externer Trigger; Zeitkonstante folgt; NOP: 05H
Empfohlenes Steuerwort: Interrupt gesperrt; Zeitgeberbetriebsart; Vorteiler 16; Trigger-Flanke=L; Zeitkonstantenstart; kein externer Trigger; Zeitkonstante folgt; RESET Kanal: 07H
Empfohlenes Steuerwort: Interrupt gesperrt; Zeitgeberbetriebsart; Vorteiler 16; Trigger-Flanke=L; Trigger extern; Zeitkonstantenstart; Zeitkonstante folgt nicht; NOP: 09H
Empfohlenes Steuerwort: Interrupt gesperrt; Zeitgeberbetriebsart; Vorteiler 16; Trigger-Flanke=H; Trigger extern; Zeitkonstante folgt nicht; NOP: 19H
Empfohlenes Steuerwort: Interrupt gesperrt; Zeitgeberbetriebsart; Vorteiler 256; Trigger-Flanke=L; Trigger extern; Zeitkonstante folgt nicht; NOP: 29H
Empfohlenes Steuerwort: Interrupt gesperrt; Zeitgeberbetriebsart; Vorteiler 256; Trigger-Flanke=H; Trigger extern; Zeitkonstante folgt nicht; NOP: 39H
Empfohlenes Steuerwort: Interrupt gesperrt; Zählerbetriebsart; Vorteiler 256; Trigger-Flanke=H; Trigger extern; Zeitkonstante folgt nicht; NOP: 69H
Empfohlenes Steuerwort: Interrupt gesperrt; Zählerbetriebsart; Vorteiler 256; Trigger-Flanke=L; Trigger extern; Zeitkonstante folgt nicht; NOP: 49H
Empfohlenes Steuerwort: Interrupt gesperrt; Zählerbetriebsart; Vorteiler 16; Trigger-Flanke=L; Trigger extern; Zeitkonstante folgt nicht; NOP: 59H

Achtung: alle Angaben ohne Gewähr - laufende Überarbeitung ;-)

Jeder der vier Kanäle der IS U857 kann entweder als Zähler oder als Zeitgeber arbeiten. Die Auswahl hierzu wird im Kanalsteuerregister vorgenommen. Ebenso werden in diesem Register die Vorteilerauswahl, die Definition der Auslösebedingungen (Trigger), das Laden des Zeitkonstantenregisters, das Rücksetzen des Kanals und die Interruptfreigabe festgelegt. Das Steuerregister des entsprechenden Kanals (ausgewählt durch die Selectsignale CS0 und CS1) wird durch eine OUT-Operation der CPU mit dem Kanalsteuerwort geladen. Dieses Steuerwort hat folgendes Format:
Die Belegung des Bits D0 = 1 identifiziert das Steuerwort als Kanalsteuerwort. Es wird somit vom Interruptvektor des Kanals 0 unterschieden.
Das Bit D0 beeinflusst das Interruptfreigabeflipflop des ausgewählten Kanals. Bei Setzen des Bits D7 (D7 = 1) erfolgt die Weitergabe von Interruptanforderungen, die durch einen Nulldurchgang des Rückwärtszählers ausgelöst wurden, an den Steuereingang INT der CPU. Voraussetzung für das Einschreiben von D7 = 1 in das Kanalsteuerregister ist, dass zuvor der Interruptvektor in den Kanal 0 eingeschrieben wurde. Bei rückgesetztem Bit (D7 = 0) wird vom ausgewählten Kanal beim Nulldurchgang des Rückwärtszählers kein Interrupt ausgesendet. Eine noch nicht bearbeitete anhängige Interruptanmeldung des Kanals wird zurückgenommen. Bei erneutem Setzen des Bits D7 durch ein neues Kanalsteuerwort erfolgt keine Interruptaussendung durch die vor dem Einschreiben dieses Steuerworts vorangegangenen Nulldurchgänge des Zählers.
Mit dem Bit D6 wird die Betriebsartenauswahl des CTC-Kanals vorgenommen. Bit D6 = 1 setzt den Kanal in die Zählerbetriebsart. Der Rückwärtszähler wird mit jeder Triggerflanke des am CLK/TRG-Eingang anliegenden externen Taktsignals dekrementiert. Mit Bit D6 = 0 wird die Zeitgebermode des CTC-Kanals ausgewählt. Der Rückwärtszähler wird durch den um den Vorteilerwert geteilten Systemtakt dekrementiert und erzeugt durch seine Nulldurchgänge Zeitintervalle mit einer Periode tp:

Das Bit D5 wird nur in der Betriebsart Zeitgeber ausgewertet. Es dient zur Auswahl des Vorteilerfaktors. Mit Bit D5 = 1 wird der Wert des Vorteilers auf VT = 256 gesetzt; anderenfalls (D5 = 0) wird der Wert VT = 16 eingestellt.
Mit Bit D4 wird in beiden Betriebsarten die aktive Flanke des am Kanaleingang CLK/TRG anliegenden Takt- bzw. Triggersignals definiert. In der Zählerbetriebsart erfolgt mit D4 = 1 das Dekrementieren des Rückwärtszählers bei jeder positiven Flanke bzw. bei D4 = 0 mit jeder negativen Flanke des externen Taktsignals. In der Betriebsart Zeitgebererfolgt unter der Voraussetzung, dass der Zeitgebervorgang durch ein externes Triggersignal gestartet wird (D3 = 1), die Auslösung bei D4. = 1 mit der positiven bzw. bei D4 = 0 mit der negativen Flanke dieses Signals.
Das Datenbit D3 wird ebenfalls nur bei Auswahl der Betriebsart Zeitgeber ausgewertet. Es dient zur Definition des Auslösezeitpunkts des Zeitgebervorgangs. Bei gesetztem Bit D3 (D3 = 1) erfolgt der Start des Zeitgebervorgangs nach Eintreffen der mittels Bit D4 ausgewählten gültigen Flanke des am Eingang CLK/TRG anliegenden Triggersignals. 
Dieses Triggersignal wird erst nach dem Einschreiben der Zeitkonstante gültig. Der Vorteiler wird hierbei bei Einhalten der Voreinstellzeit (setup time) nach zwei Taktzyklen des Systemtakts erstmalig dekrementiert (anderenfalls nach drei Zyklen). Bei rückgesetztem Bit D3 (D3 = 0) beginnt die Zeitgeberoperation mit der steigenden Flanke des T2-Maschinenzustands (M1-Cycle, instruction fetch), der dem Laden der Zeitkonstante (port write cycle) folgt.
Mit Bit D2 erfolgt an die Steuerlogik des Zähler/Zeitgeber-Kanals eine Voranmeldung, ob mit der nächsten Portoperation (OUT-Befehl der CPU) zum betreffenden Kanal eine Zeitkonstante in das entsprechende Register geladen wird. Hierbei wird bei gesetztem Bit D2 (D2 = 1) das nächste Datenwort, das in den Kanal eingeschrieben wird, in das Zeitkonstantenregister geladen. Diese Aktion ist bei jeder Neuinitialisierung des CTC-Ports erforderlich. Wird in einen bereits initialisierten und sich in Betrieb befindenden Kanal ein Steuerwort mit Bit D2 = 1 und ein nachfolgendes Zeitkonstantendatenwort eingeschrieben, so beendet der CTC-Kanal den laufenden Zyklus mit der alten Zeitkonstante. 
Nach dem Nulldurchgang des Rückwärtszählers wird dann die neue Zeitkonstante rückgeladen und im folgenden auch weiter benutzt. Auf diese Art und Weise kann im laufenden Zähler- oder Zeitgeberbetrieb die Zeitkonstante geändert werden. Wenn das Bit D2 nicht gesetzt ist (D2 = 0), erfolgt kein Einschreiben eines nachfolgenden Datenworts in das Zeitkonstantenregister des Kanals. Diese Bedingung ist nur dann sinnvoll, wenn das betreffende Port bereits initialisiert ist und mit dem neuen Datenwort andere Bedingungen (z. B. Interruptfreigabe, Betriebsart oder Triggerflanke) neu festgelegt werden sollen. 
Der CTC-Kanal arbeitet dann immer mit der alten Zeitkonstante weiter.
Das Datenbit D1 des Kanalsteuerworts dient zum softwaremäßigen Rücksetzen oder zum Unterbrechen des ablaufenden Zähler- oder Zeitgebervorgangs. Bei gesetztem Bit D1 (D1 = 1) unterbricht der betreffende Kanal das Dekrementieren des Rückwärtszählers. Es werden hierbei aber keine Bits des Kanalsteuerregisters und somit keine aktuellen CTC-Bedingungen verändert. Wenn außerdem das Bit D2 gesetzt ist (D2 = 1), führt der CTC-Kanal nach Einschreiben einer Zeitkonstante die Operation in der vorgewählten Betriebsart fort. Ist Bit D2 rückgesetzt (D2 = 0), besteht in der Neuinitialisierung des Ports durch Einschreiben eines neuen Kanalsteuerworts die einzige Möglichkeit, den Kanal wieder in Betrieb zu nehmen. Bei rückgesetztem Steuerwortbit D1 (D1 = 0) wird der Zähler- bzw. Zeitgeberbetrieb nicht unterbrochen. Diese Möglichkeit wird angewendet, wenn Bedingungen im Kanal verändert werden sollen (Verändern des Interruptfreigabeflipflops, Laden einer neuen Zeitkonstante u. dgl.), ohne dabei den bearbeiteten Vorgang zu unterbrechen.

Zeitkonstante

Nach der Initialisierung eines Zähler/Zeitgeber-Kanals mit Hilfe eines entsprechenden Kanalsteuerworts kann das CTC-Port erst nach Laden eines Datenworts in das Zeitkonstantenregister des ausgewählten Kanals mit der programmierten Operation beginnen. Das Laden des Zeitkonstantenregisters erfolgt durch eine OUT-Operation der CPU, wenn zuvor in den Kanal ein Kanalsteuerwort mit gesetztem Bit D2 (D2 = 1) eingeschrieben wurde. Das hiermit gesetzte Bit D2 des Kanalsteuerregisters bewirkt, dass die Kanalsteuerlogik dieses nachfolgende Datenwort von der CPU als Zeitkonstante interpretiert. 
Deshalb werden keine besonderen Bitbelegungen des Zeitkonstantenworts zur Kennzeichnung benötigt, somit sind alle 8 bit für die Informationsübertragung gültig. Das Zeitkonstantenwort hat folgendes Format:
Das Bit D7, dieser Zeitkonstante ist das höchstwertige Bit (MSB). Aufgrund des Umfangs von 8 Bit kann der Wert der Zeitkonstante zwischen 1 und 256 liegen. Hierbei ist dem hexadezimalen Wert TC = 00H die Zeitkonstante TC = 256D zugeordnet.


3. Beschreibung der Betriebsarten history menue scroll up

Zählermode

Der Zähler/Zeitgeber U857 hat vier Kanäle, die unabhängig voneinander betrieben werden können. Ein Kanal des CTC nimmt die Betriebsart Zähler ein, wenn in sein Kanalsteuerregister ein Datenwort mit gesetztem Bit D6 geladen wird. Bei einer Initialisierung, also bei zuvor rückgesetztem Port, muss zur Inbetriebnahme außerdem eine Zeitkonstante in das entsprechende Register dieses Kanals eingeschrieben werden. Der Rückwärtszähler wird dann bei jedem Aktivwerden bzw. sinngemäß mit jeder aktiven Flanke am Kanaleingang CLK/TRG dekrementiert. Hierbei wird durch Bit D4 im Steuerregister des Kanals festgelegt, welcher Pegel an diesem Eingang aktiv ist (H oder L).
Wird einer der Kanäle (unabhängig von der gewählten Betriebsart) zur Erzeugung von Interrupts benutzt, muss vor der Inbetriebnahme dieses Kanals (mit gesetztem Interruptfreigabeflipflop) das Vektorregister des Kanals 0 geladen werden. Das Einschreiben dieser Datenwörter in die Kanalsteuerregister und die Zeitkonstantenregister der CTC-Kanäle sowie in das Vektorregister erfolgt über Ausgabebefehle des Prozessors (OUT-Operation der CPU). Das hierbei auftretende Zeitverhalten am Zähler/Zeitgeber U857 ist im Bild 3.4.4 dargestellt. Aus diesen Zeitbedingungen ist zu entnehmen, dass die IS U857 direkt mit dem Prozessor U880 zusammengeschaltet werden kann.
Der aktuelle Stand des Rückwärtszählers kann jederzeit durch einen Eingabebefehl (IN-Operation) der IS U880 abgefragt werden. Das zugehörige Zeitverhalten vom Zähler/Zeitgeber ist im Bild 3.4.5 verdeutlicht. Der mit der steigenden Flanke des CPU-Systemtaktzyklus T2 in diesem Lesevorgang gültige Inhalt des Rückwärtszählers des durch die binären Auswahlsignale CSO und CSl angesprochenen Kanals wird auf den Datenbus ausgegeben.
Beim Nulldurchgang des Rückwärtszählers wird automatisch die Zeitkonstante aus dem entsprechenden Kanalregister in den Zähler rückgeladen. Dabei erfolgt keine Unterbrechung des Zählvorgangs. Wurde zuvor ein neues Datenwort in das Zeitkonstantenregister durch entsprechende Vorankündigung mit einem Kanalsteuerwort (D6 = 1, D2 = 1, D1 = 0, D0 = 1) geschrieben, so erfolgt nach dem Nulldurchgang das Rückladen dieser neuen Zeitkonstante.
Gleichzeitig wird bei jedem Nulldurchgang des Rückwärtszählers am Kanalausgang ZC/TO ein positiver Impuls mit der Länge von etwa anderthalb Systemtaktperioden ausgesendet. Dieses Signal kann beispielsweise zur Kaskadierung von CTC-Kanälen verwendet werden. Bei Verwendung dieses Übertragsimpulses zur Taktung eines nachfolgenden Zählerkanals können leistungsfähige Zähler mit großem Zählumfang (z. B. 16-bit-Zähler bei Verwendung von zwei Ports) realisiert werden. Aufgrund der Pinbeschränkung des 28poligen DIL-Gehäuses besitzt jedoch der Kanal 3 keinen ZC/TO-Ausgang. Dieser Kanal kann also nur dann eingesetzt werden, wenn keine hardwaremäßige Kaskadierung bzw. Auswertung des Übertrags notwendig ist.
Vom Übertrag der Rückwärtszähler wird außerdem in allen vier CTC-Kanälen bei entsprechend gesetzten Freigabeflipflops in den Kanalsteuerlogiken eine Interruptanforderung ausgelöst. Die Anwendung der leistungsfähigen Interruptbearbeitung des Systems (Interruptmode IM2 der CPU U880) kann aber nur erfolgen, wenn das Vektorregister des CTC geladen wurde.
Im Bild 3.4.6 ist zusammenfassend das Zeitverhalten eines CTC-Kanals dargestellt.
Während des Betriebs können Zählbedingungen für den Kanal verändert werden, indem ein neues Steuerwort in das Kanalsteuerregister eingeschrieben wird. In diesem Datenwort muss Bit D1 rückgesetzt sein, damit der Dekrementiervorgang des Rückwärtszählers nicht unterbrochen wird. Es ist somit möglich, eine neue Zeitkonstante anzukündigen, die Zählflanke zu ändern, das Interruptfreigabeflipflop zu beeinflussen oder in die Betriebsart Zeitgeber überzuwechseln. Ein Rücksetzen des Kanals kann softwaremäßig durch Setzen des Bits D1 des Kanalsteuerregisters oder hardwaremäßig durch Anlegen eines RESET-Impulses erfolgen.

Zeitgebermode

Das Einstellen dieser CTC-Betriebsart erfolgt ebenfalls durch Laden eines Steuerworts in das entsprechende Kanalsteuerregister. Das Bit D6 dieses Datenworts ist hierbei rückgesetzt. Der Zeitgebervorgang beginnt in Abhängigkeit vom Wert des Bits D3 dieses Steuerworts entweder direkt nach dem Laden der Zeitkonstante in das betreffende Kanalregister oder nachdem bei bereits geladenem Zeitkonstantenregister am Eingang CLK/TRG eine vorgewählte Triggerbedingung eintrifft. Das Laden der Kanalsteuerregister und Zeitkonstantenregister erfolgt wie in der Zählermode mit dem im Bild 3.4.4. dargestellten Zeitverhalten. Auch das Auslesen des Inhalts der Rückwärtszähler erfolgt wie im Abschn. 3.4.5.1. bereits beschrieben (Bild 3.4.5).

Der Rückwärtszähler des Zähler/Zeitgeber-Kanals wird durch den Vorteiler getaktet.