← ST-Computer 12 / 1988

Profiport: Das Tor zur Welt

Projekt

Im dritten Teil wollen wir versuchen, Ihnen die Programmierung des Profiports nĂ€her zu bringen. Port bedeutet eigentlich nur ‘Tor’, und genau darum dreht es sich hier - ein Tor zur (elektronischen) Außenwelt des Rechners.

In Abbildung 1 sehen Sie das Anschlußbild des Profiports. An dieser 64-poligen Messerleiste sind genau 32 individuell programmierbare digitale Leitungen (1PA0-1PA7,1PB0-1PB7,2PA0-2PA7,2PB0-2PB7), 2 digitale Sonderleitungen (1CB2,2CB2) und 2 flankenempfindliche, digitale EingĂ€nge (1CB1, 2CB1) verfĂŒgbar. ZusĂ€tzlich ist die Versorgungsspannung der Profibank auf verschiedenen Stiften herausgefĂŒhrt, verbunden mit zwei sogenannten PIAs (Peripheral Interface Adapter oder Schnittstellenbaustein) des Typs 68B21, die aus der Familie des 6800, eines VorlĂ€ufers des 68000, stammen. Der preisgĂŒnstige 68B21 ist außerdem in einer stromsparenden CMOS-Version, genannt 63B21, erhĂ€ltlich und lĂ€ĂŸt sich ebenfalls in der Profibank einsetzen.

Hardwarevoraussetzungen des Profiports

Jede der Leitungen xPAy und xPBy ist individuell zu einem Eingang oder Ausgang programmierbar. Jedoch unterscheiden sich die Leitungen ‘PA’ hardwareseitig von ‘PB’. ‘PA’, falls zum Eingang programmiert, liegt definitiv aufgrund des internen Pull-up-Widerstands an +5V. ‘PB’ , falls zum Eingang programmiert, ist hochohmig und sollte deshalb nicht offengelassen werden. Bei der CMOS-AusfĂŒhrung (63B21) sind die Pull-up-WiderstĂ€nde des ‘PA’ konsequenterweise nicht vorhanden. Um ein sicheres Lesen der EingĂ€nge zu garantieren, muß die Spannung an solchen fĂŒr ein ‘LOW’ (gelesenes Bit=0) unter 0.8V und fĂŒr ein ‘HIGH’ ĂŒber 2.4V liegen.

‘PA’ des 68B21, falls zum Ausgang programmiert, erreicht von sich aus CMOS-Pegel, ‘PB’ jedoch nur mit Hilfe eines Pull-up-Widerstands (Richtwert: 10K nach +5 V). Der 63B21 braucht logischerweise keine Pull-up-WiderstĂ€nde. Das Treiben von bis zu 2 TTL-Lasten ist in allen FĂ€llen problemlos. Aufgrund ihrer Konstruktion sind die Leitungen ‘PA’ zum direkten Treiben der Basen von NPN-Transistoren ohne Vorwiderstand geeignet. Die AusgĂ€nge sind begrenzt kurzschlußfest - zu langer Kurzschlußstreß fĂŒhrt aufgrund exzessiver Verlustleistung eines Bausteins zu dessen sicherem thermischen Ableben.

Äußerste Vorsicht ist geboten, daß die Eingangsspannungen an den Portleitungen die Betriebsspannungsgrenzen keinesfalls ĂŒberschreiten. Falls dies trotzdem geschieht, können sehr große Eingangsströme fließen, die Fehlfunktion und schließlich Zerstörung des Bausteins zur Folge haben können.

Detailliertere Informationen kann Ihnen das Datenblatt eines Herstellers liefern.

Die Programmierung des 68B21...

...gestaltet sich recht einfach, da nur 6 Register alle Funktionen abdecken. Eigentlich hat jeder Baustein nur 4 direkt erreichbare Register - denn zwei Register haben je nach Programmierung eine Doppelfunktion. Zwei HĂ€lften, A und B, ergeben einen 68B21. Die Register im einzelnen (beachten Sie auch Abbildung 2):

  1. PRA

Peripheral Data Register oder Datenregister

Ein Doppelregister, dessen Funktion durch das Bit 2 im Register CRA bestimmt wird.

Ist CRA-Bit 2=0. so erreicht man unter dieser Adresse das Datenrichtungsregister A. welches ĂŒber EingĂ€nge und AusgĂ€nge der korrespondierenden Portleitungen bestimmt. Bit 7 bestimmt die Betriebsart von PA7 etc. Ist ein Bit dieses Registers Eins, so ist die entsprechende Portleitung ein Ausgang.

Falls CRA-Bit2 = 1, so ist es das Datenregister. Wird es gelesen, erhĂ€lt man in jedem Bit den Zustand der EingĂ€nge und/oder der AusgĂ€nge (je nach Programmierung des Datenrichtungsregisters). Das Lesen ergibt bei ‘PA’ immer den Zustand der Portleitungen, der selbstverstĂ€ndlich durch Ă€ußere Beschaltung, auch bei programmierten AusgĂ€ngen, manipuliert werden kann. Ganz anders bei ‘PB’, der den Zustand eines Ausganges dem Ausgangsdatenregister entnimmt, damit auch nicht Ă€ußerlich manipulierbar ist.

Dieser Fakt erlangt spÀtenstens dann Bedeutung, wenn Port A direkt Transistoren treibt und der Zustand eines Ausganges invertiert werden soll.

Wird das Datenregister beschrieben, gelangen die ZustÀnde der einzelnen Bits, falls auf Ausgang geschaltet, direkt an die entsprechenden Leitungen.

  1. CRA

Control Register Side A oder Kontrollregister A

Wie schon erwĂ€hnt, bestimmt dieses Register ĂŒber den Zugriff auf das Daten- oder Datenrichtungsregister. Außerdem enthĂ€lt es verschiedene Kontrollbits bezĂŒglich der Leitungen CA1 und CA2, die jedoch im Profiport unbenutzt bleiben.

  1. PRB

Wie unter 1. beschrieben, jedoch fĂŒr die 2. HĂ€lfte (Seite B) des 68B21.

  1. CRB

Wie unter 2. beschrieben, jedoch fĂŒr die 2. HĂ€lfte des 68B21. Außerdem sind die Leitungen CBI und CB2, deren Funktion dieses Register bestimmt, am Profiport verfĂŒgbar.

Abbildung 2 zeigt eine genaue Aufgliederung der Kontrollregister und die Bedeutung einzelner Steuerbits.

In Listing 1 sehen Sie das GrundgerĂŒst mit Unterprogrammen zum Ansprechen der Profiport-Register in GFA-BASIC.

Wenn Sie eigene Hardware entwickeln...

...zum Anschluß an die Profibank, sollten Sie folgende Richtlinien im Auge behalten, um Probleme von vornherein auszuschalten:

  1. Leistungsverbraucher erhalten ein eigenes Netzteil - Steuerleitungen z.B. mit Opto-Koppler galvanisch trennen.
  2. Steuern von netzspannungsfĂŒhrenden Stromkreisen nur mit Ă€ußerster Sorgfalt unter Einhaltung gewisser Sicherheitsrichtlinien.
  3. Analoge Schaltungsteile durch ein separates Netzteil speisen, um Störeinkoppelungen zu minimieren.
  4. Die Spannungsversorgung am Profiport nur zur Hilfsversorgung benutzen.

SoftwareunterstĂŒtzung zum Profiport

Listing 1 zeigt ein GFA-BASIC-Pro-gramm, in dem 2 Unterprogramme den Zugriff auf die Portbausteine ermöglichen: das eine Unterprogramm zum Lesen, das andere zum Schreiben eines Registers.

1 Aufruf:
@Pias (Adresse%,Datenwort%)

Dient zum Beschreiben eines Registers an der spezifizierten Adresse mit dem 8 Bit-Datenwort.

2 Aufruf:
@Pial (Adresse%, *Datenwort/6)

RĂŒckgabe des Datenwortes in A%

Liest das Register an der spezifizierten Adresse in die globale Variable A%.

Im vierten und vorerst letzten Teil unserer Profiline-Serie geben wir Ihnen eine ganze Reihe von Beispielschaltungen mit dem Profiport wie z.B. Merkkanal-Datenwandlung, Schalten und Steuern verschiedener Lasten sowie die Ansteuerung von Schrittmotoren.

RH

' PIA.BAS - Beispielroutinen zur Ansteuerung des Profiports ' R.Hofmann ' 88 Sdr%=&HFB0000 ! Basisadresse des Schreibdatenregisters P1%=&HFAA000 ! Basisadresse der 1. PIA P2%=&HFAB000 ! Basisadresse der 2. PIA Crb%=0 ! Offset in das Kontrollregister B Cra%=2 ! Offset in das Kontrollregister A Prb%=4 ! Offset in das Daten- oder Datenrichtungsregister B Pra%=6 ! Offset in das Daten- oder Datenrichtungsregister A Lo%=&H800 ! Offset in den 'Lesen' - Bereich der PIA ' ' ---------------------- ' ' ' Pias(Adresse%,Datenbyte%) ' Beschreibt das bestimmte Register mit dem Datenbyte ' Procedure Pias(Adr%,Dat%) Void Peek(Sdr%+Dat%*256)! Datenbyte in die oberen 8 Bit's des SDR Void Dpeek(Adr%) ! In gewĂ€hltes Register Schreiben Return ' ' Pial(Adresse%,*Ergebnis%) ' RĂŒckgabewert : in Ergebnis% ' Liest das bestimmte Register und ĂŒbergibt es in *Ergebnis% ' Procedure Pial(Adr%,A%) *A%=Dpeek(Adr%+Lo%)/256 Return

Listing 1: Beispielroutinen zur Ansteuerung des Profiports

' PIA.BAS - Beispielroutinen zur Ansteuerung des Profiports ' Außerdem kann der Profiport damit getestet werden ' R.Hofmann '88 Sdr%=&HFB0000! Basisadresse des Schreibdatenregisters P1%=&HFAA000 ! Basisadresse der 1. PIA P2%=&HFAB000 ! Basisadresse der 2. PIA Crb%=0 ! Offset in das Kontrollregister B Cra%=2 ! Offset in das Kontrollregister A Prb%=4 ! Offset in das Daten- oder Datenrichtungsregister B Pra%=6 ! Offset in das Daten- oder Datenrichtungsregister A Lo%=&H800 ! Offset in den 'Lesen' - Bereich der PIA ' ' ---------------------- ' Do @Pias(P1%+Cra%,0) @Pias(P1%+Crb%,0) @Pias(P2%+Cra%,0) @Pias(P2%+Crb%,0) @Pias(P1%+Pra%,255) @Pias(P1%+Prb%,255) @Pias(P2%+Pra%,255) @Pias(P2%+Prb%,255) @Pias(P1%+Cra%,4) @Pias(P1%+Crb%,4) @Pias(P2%+Cra%,4) @Pias(P2%+Crb%,4) @Pias(P1%+Pra%,255) @Pias(P2%+Pra%,255) @Pias(P1%+Prb%,255) @Pias(P2%+Prb%,255) Loop ' ' Pias(Adresse%,Datenbyte%) ' Beschreibt das bestimmte Register mit dem Datenbyte ' Procedure Pias(Adr%,Dat%) Void Peek(Sdr%+Dat%*256)! Datenbyte in die oberen 8 Bit's des SDR Void Dpeek(Adr%) ! In gewĂ€hltes Register Schreiben Return ' ' Pial(Adresse%) ' RĂŒckgabewert : A% ' Liest das bestimmte Register und ĂŒbergibt es in A% ' Procedure Pial(Adr%) *A%=Dpeek(Adr%+Lo%)/256 Return

Listing 2:Mit diesem Programm ist es zusÀtzlich möglich, den Profiport auszutesten.