Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
cpm:programmierung [2011/12/08 12:18] – angelegt volkerpcpm:programmierung [2026/08/30 09:00] (aktuell) – [PIO] volkerp
Zeile 1: Zeile 1:
-====== Programmierung ======+====== PIO, CTC, SIO ======
  
 ===== PIO ===== ===== PIO =====
  
-{{:cpm:pio.jpg?|}}+{{:cpm:pio.jpg?400|}} 
 + 
 +Achtung: Die Interrupt-Vektoren für eine PIO müssen auf einer ''align 2''-Adresse liegen!
  
 ===== CTC ===== ===== CTC =====
  
-{{:cpm:ctc.jpg?|}}+{{:cpm:ctc.jpg?400|}} 
 + 
 +Achtung: Die Interrupt-Vektoren für eine CTC müssen auf einer ''align 8''-Adresse liegen! 
 + 
 +===== SIO ===== 
 + 
 +{{:cpm:sio-register.png?600|}} 
 + 
 +Int-Vektor-Register WR2 in Kanal B beschreiben.\\ 
 +Register WR4 sollte zuerst beschrieben werden. 
 + 
 +<code> 
 +Beschreibung der Bit-Stellen der Steuerregister WR0 bis WR7,  
 +und der Statusregister RR0 bis RR2 
 + 
 +WR0: 
 +D0..D2 Nr. des nächsten zu ladenden oder zu lesenden Registers. 
 +D3..D5 RESET-Kommandos 
 + SEND ABORT (nur SDLC) . Es wird eine Folge von 8 bis 13 "1" gesendet. 
 + RESET EXT STATUS INT löscht die im RR0 bei Statusinterrupt eingetragenen Bit. 
 + CHANNEL RESET führt zum Rücksetzen eines Kanals. Alle Steuer- und Statusregister sind gelöscht. 
 + RESET R x INT ON FIRST CHAR. Nach Erscheinen eines Interrupt im Interruptmodus 1 
 + muß durch RESET R x INT ON FIRST CHAR der Kanal für weitere Interrupt freigegeben werden. 
 + RESET T x INT PENDING. Im Interruptmodus 2 erscheint bei leerem Sendepuffer ein Interrupt. Dieses 
 + Kommando verhindert, daß dieser Interrupt mehrmals kommt. Nach dem Kommando tritt so 
 + lange kein Interrupt auf, bis wieder ein Zeichen in den Sendepuffer gekommen ist. 
 + ERROR RESET veranlaßt das Rücksetzen der Fehler-Bit (Parität und Empfängerüberlauf) in RR1 
 + RETURN FROM INT erzeugt einen RETI-Befehl auf dem Datenbus. 
 +D6..D7 setzt die CRC-Logik zurück. 
 + 
 +WR1: 
 +D0 EXT INTERRUPT ENABLE. Gestattet Interrupt bei Wechsel von /DCD, /CTS, /SYNC, -bei BREAK, 
 + bei Sendebeginn von CRC oder SYNC-Zeichen. 
 +D1 TRANS INTERRUPT ENABLE. Erlaubt INT, wenn der Sendepuffer leer ist. 
 +D2 STATUS AFFECTS VECTOR (nur Kanal B). Ist dieser Modus ausgewählt, so wird der Interruptvektor 
 + in WR2 wie folgt modifiziert: 
 + v3 v2 v1 
 + 0 0 0 Kanal B Sendepuffer Leer 
 + 0 0 1 Kanal B externer Statuswechsel 
 + 0 1 0 Kanal B empfangenes Zeichen verfügbar 
 + 0 1 1 Kanal B spezielle Empfangsbedingung* 
 + 1 0 0 Kanal A Sendepuffer Leer 
 + 1 0 1   Kanal A externer Statuswechsel 
 + 1 1 0   Kanal A empfangenes Zeichen verfügbar 
 + 1 1 1   Kanal A spezielle Empfangsbedingung* 
 + *) spezielle Empfangsbedingung: Paritätsfehler, Empfängerüberlauf, CRC-/Format-Fehler,  
 + Blockende (SDLC) 
 +D3..D4 Durch D3 und D4 werden spezielle Interruptbildungsmöglichkeiten für Empfänger eingestellt. 
 +D5 D5 = 1 Der /WAIT-/READY-Ausgang wird aktiv, wenn der Empfänger leer ist. 
 + D5 = 0 Der /WAIT-/READY-Ausgang wird aktiv, wenn der Sendepuffer voll ist. 
 +D6 D6 = 0 /WAIT-/READY-Ausgang arbeitet als WAIT (Ausgang). 
 + D6 = 1 /WAIT-/READY-Ausgang arbeitet als READY (Ausgang). 
 + WAIT-Funktion: Das SIO kann keine Daten aufnehmen oder abgeben. 
 + READY-Funktion: Das SIO ist zur Arbeit bereit. 
 +D7 Freigabe des WAIT-/READY-Ausgangs. 
 + 
 +WR2: 
 +Dieses Register enthält den lnterruptvektor. Er existiert nur im Kanal B. Bei STATUS AFFECTS 
 +VECTOR werden die Bit-Stellen V1 bis V3 entsprechend der Interrupterzeugung eingetragen. 
 + 
 + 
 +WR3: 
 +D0 Erlaubt Empfangsfunktion. 
 +D1 Bei D1 = 1 werden die SYNC-Zeichen nicht in die Empfangspufferregister geladen. CRC erfolgt normal. 
 +D2 D2 = 1 verhindert im SDLC-Modus Interrupt, wenn keine Übereinstimmung zwischen empfangener und 
 + programmierter Adresse oder wenn keine Globaladresse (11111111) vorliegt. 
 +D3 Mit D3 = 1 beginnt die CRC-Konrolle beim Start des letzten Zeichens vom Empfangsregister zum Puffer. 
 +D4 HUNTMODE. Die Übertragung wird abgebrochen, bis ein neues SYNC-Zeichen kommt. 
 +D5 AUTOENABLE. Bei D5 = 1 arbeiten die DCD und CTS-Eingänge als Empfangs- und Sendesteuerung. 
 + Bei D5 = 0 wirken DCD und CTS nur auf ihre Bit im Statusregister. 
 +D6..D7 Bestimmt empfangene Bit/Zeichen. 
 + 
 +WR4: 
 +D0 D0 = 1, SIO arbeitet mit Paritäts-Bit, 
 +D1 D1 = 0, Parität gerade. 
 + D1 = 1, Parität ungerade. 
 +D2..D3 Bestimmt die Anzahl der Stop-Bit bei Senden. 
 +D4..D5 Bestimmt die Art des Synchronmodus. 
 +D6..D7 Bestimmung des Multiplikationsfaktors zwischen Takt und Übertragungsrate. 
 + 
 +WR5: 
 +D0 TRANSMIT CRC-ENABLE. CRC-Freigabe bei Senden. 
 +D1 D1 = 1, /RTS geht auf 0. 
 + D1 = 0, /RTS geht auf 1, wenn der Sender leer ist. 
 +D2 CRC/SDLC 
 + D2 = 0, CRC-Kontrolle mit SDLC-Polynom X^16 + X^12 + X^5 + 1 . 
 + D2 = 1, CRC-Kontrolle mit Polynom X^16 + X^15 + X^2 + 1 . 
 +D3 TRANSMIT ENABLE. 
 + Sendeerlaubnis. Bei Rücksetzen wird das letzte Zeichen noch voll ausgegeben. 
 +D4 BREAK. Bewirkt Aussenden von "0" auf TxD. 
 +D5..D6 Bestimmt auszugebende Bit/Zeichen. Bei weniger als 5 Bit/Zeichen gilt: 
 + 1 1 1 1 0 0 0 D sendet 1 Bit 
 + 1 1 1 0 0 0 D D sendet 2 Bit 
 + 1 1 0 0 0 D D D sendet 3 Bit 
 + 1 0 0 0 D D D D sendet 4 Bit 
 + 0 0 0 D D D D D sendet 5 Bit 
 +D7 DTR 
 + D7 = 1 bewirkt /DTR = 0 (aktiv). 
 +  
 +WR6:  
 +SYNC-Zeichen bei Monosynchronisation, die ersten 8 Bit bei Bisynchronisation. 
 + 
 +WR7: 
 +2. Zeichen bei Bisynchronisation oder das Synchronzeichen bei Monosynchronisation.  
 +Bei SDLC muß WR7 = 01111110 sein. 
 + 
 +RR0: 
 +D0 RECEIVE CHARACTER AVAILABLE; gesetzt, wenn mindestens 1 Zeichen im Puffer. 
 +D1 INTERRUPT PENDING; wird bei jeder INT-Anmeldung gesetzt (nur Kanal A). 
 +D2 TRANSMIT BUFFER EMPTY; gesetzt, wenn der Sendepuffer leer ist (außer bei CRC). 
 +D3 DCD; zeigt Zustand /DCD. 
 +D4 SYNC/HUNT 
 + D4 = 0, Zeichensynchronisation erreicht, 
 + D4 = 1, keine Synchronisation. 
 +D5 CTS; zeigt Zustand /CTS. 
 +D6 BREAK/ABORT; wird gesetzt, wenn mit dem Senden von CRC-Worten begonnen wird,  
 + nachdem der Sendepuffer leer geworden ist. 
 +D7 CRC/SYNC 
 + D7 = 1 bei Erkennen von BREAK (bei ASYNC) . 
 + Im SDLC-Format bei Erkennen einer Abbruchfolge (7 oder mehr Einsen). 
 + 
 +RR1: 
 +D0 ALL SENT wird gesetzt, wenn alle Zeichen im Asynchronmode gesendet sind. 
 +D1..D3 Falls bei Empfang im SDLC-Modus die Anzahl der Bit/Zeichen nicht aufgehen,  
 + zeigt D1/D2/D3 die restlichen Bit an. 
 +D4 Paritätsfehler, 
 +D5 Empfängerüberlauf, 
 +D6 Formatfehler im Asynchronmode, 
 + CRC-Fehler im Synchronmode. 
 +D7 Blockende bei SDLC mit gültigem CRC erkannt.
  
 +RR2: 
 +Enthält Interruptvektor. Die Bit sind entsprechend STATUS AFFECTS VECTOR verändert.
 +</code>
  • cpm/programmierung.1323346691.txt.gz
  • Zuletzt geändert: 2011/12/08 12:18
  • von volkerp