:html
:Revision=1
<<
128.149
McdPioCard-Objekt|McdPioCard
--
Das IP-Objekt <!RW>McdPioCard erlaubt den Zugriff auf PIO-Karten des Typs PC-IO24. 

Diese Karten bestehen aus einem 8255 PIO Baustein mit 24 frei verwendbaren Leitungen und einen 8253 Baustein mit 3 16 Bit Zhlern.

Die Karten werden ber ihre Basisadresse (im Bereich $300 bis $3F8, glatt durch 8 teilbar) angesprochen. Die Karten mssen im System nicht angemeldet werden. Bei der Adressierung ist Vorsicht geboten., da das Programm nicht berprfen kann, ob sich an der angegeben Adresse wirklich eine PC-24IO Karte befindet. Es knnte sich an der verwendeten Adresse (alle im frei verfgbaren IO-Bereich) eine andere Karte befinden.

Das der Zugriff auf die Karte durch direkten Zugriff auf den IO Bereich des PCs erfolgt, muss bei neueren Betriebsystemen (NT, 2000, XP ...) der GiveIO-Treiber installiert sein, der den Hardwareschutz abschaltet. 

>>
<<
128.149.2
Zugriffe auf die IO-Ports|Port
--
Zugriff auf die 3x8 Bit Ports des 8255 Bausteins. 

Vor der Verwendung der Ports muss die Datenrichtung mit dem Befehl <!RW>McdPioCard.Port.Init festgelegt werden.
>>
<<
128.149.2.1
McdPioCard.Port.Bits|Bits
--
<!DEF>
procedure <!TW>McdPioCard.Port.Bits (rCardAddr, rPortNr, rBits, rOperation : real);
<!TXT>
Der Befehl greift auf den Port <!PW>rPortNr (0 = Port A, 1 = Port B, 2 = Port C) der PC-24IO PIO Karte an der Basisadresse <!PW>rCardAddr zu.

Die aktuell gesetzen Bits des Ports werden wie in <!PW>rOperation angegeben mit den Bits in <!PW>rBits verknpft und ausgegeben.

 <!PW>rOperation kann sein : <!RW>CLR | <!RW>SET | <!RW>FLIP | <!RW>NOP oder 0..3
>>
<<
128.149.2.2
McdPioCard.Port.Word|Word
--
<!DEF>
procedure <!TW>McdPioCard.Port.Word (rCardAddr, rPortNr, rData: real);
<!TXT>
Der Befehl greift auf den Port <!PW>rPortNr (0 = Port A, 1 = Port B, 2 = Port C) der PC-24IO PIO Karte an der Basisadresse <!PW>rCardAddr zu.

Das Ausgaberegister des Ports wird auf das in <!PW>rData angegebene Bitmuster gesetzt.
>>

<<
128.149.2.3
McdPioCard.Port.BitsEx|BitsEx
--
<!DEF>
procedure <!TW>McdPioCard.Port.BitsEx (rCardAddr, rPortNr, rGroup : real; sCommand : string);
<!TXT>
Makrokommando : Setzt/lscht Bits auf McdPioCard-Karten und wartet

Der Befehl greift auf den Port <!PW>rPortNr (0 = Port A, 1 = Port B, 2 = Port C) der PC-24IO PIO Karte an der Basisadresse <!PW>rCardAddr zu.

 <!PW>rGroup whlt eine Aktionsgruppe aus (0..9)

 <!PW>sCommand hat folgende Form:

<!CODE>
<!SWBitmuster,<!SW>Aktion[,<!SW>Aktion...][;<!SW>Bitmuster,<!SW>Aktion[,<!SW>Aktion...]...]
<!TXT>

 <!SW>Bitmuster ist ein 8 Bit Datenwort

 <!SW>Aktion hat folgenden Aufbau (n ist jeweils die Gruppennummer 0..9 oder 'x') :
<!STBL>
<!>nS<!>Setzt die Bits<!>
<!>nR<!>Setzt die Bits zurck<!>
<!>nDz<!>Wartezeit von z Millisekunden<!>
<!ETBL>

 <!SW>n gibt die Gruppe an. Es werden nur solche Aktionen ausgefhrt, deren Gruppe durch den Parameter <!PW>rGroup ausgewhlt ist. 'x' passt immer!

<ul indent=12>
<li>Wird durch rGroup keine Aktion aktiviert, so wird nichts gemacht.</li>
<li>Sind keine Aktionen angegeben, so wird nichts gemacht.</li>
<li>Ist sCommand leer, so passiert nichts.</li>
</ul>

Beispiel
<!CODE>
McdPioCard.Port.BitsEx ($310, 0, 1, '5,1r,9s,1d100,9d50');

'$310, 0' whlt Port A auf der Karte an Adresse $310.
 
Die '1' aktiviert Gruppe 1.

Die Bestandteile von sCommand im einzelnen
'5' ist die Bitmaske der zu ndernden Bits
'1r' wenn Gruppe 1 aktiv, dann Bits rcksetzen
'9s' wenn Gruppe 9 aktiv, dann Bits setzen
'1d100' wenn Gruppe 1 aktiv, dann 100 ms Pause
'9d50' wenn Gruppe 9 aktiv, dann 50 ms Pause

Da Gruppe 1 aktiv ist, werden die Bits zurckgesetzt und 100 ms gewartet!
<!TXT>
>>
<<
128.149.2.4
McdPioCard.Port.Get|Get
---
<!DEF>
function <!TW>McdPioCard.Port.Get (rCardAddr, rPortNr : real) : real;
<!TXT>
Der Befehl greift auf den Port <!PW>rPortNr (0 = Port A, 1 = Port B, 2 = Port C) der PC-24IO PIO Karte an der Basisadresse <!PW>rCardAddr zu.

Der angegebene Port wird ausgelesen und der Wert zurckgegeben.
>>

<<
128.149.2.5
McdPioCard.Port.Init|Init
--
<!DEF>
procedure <!TW>McdPioCard.Port.Init (rCardAddr, rAIn, rBIn, rCLIn, rCHIn : real);
<!TXT>
Legt die Richtung der Ports auf der PC-24IO Karte an der Basisadresse <!PW>rCardAddr fest.

Wenn der jeweilige Parametzer <!RW>TRUE ist, ist der Port(teil) ein Eingang, sonst ein Ausgang.

 <!PW>rAIn legt Datenrichtung fr Port A (A0..A7) fest
 <!PW>rBIn legt Datenrichtung fr Port B (B0..B7) fest
 <!PW>rCLIn legt Datenrichtung fr die unteren 4 Bits von Port C (C0..C3) fest
 <!PW>rCHIn legt Datenrichtung fr die oberen 4 Bits von Port C (C4..C7) fest
>>

<<
128.149.3
Zugriff auf die Zhler|Counter
--
>>

<<
128.149.3.1
McdPioCard.Counter.Mode|Mode
--
<!DEF>
procedure <!TW>McdPioCard.Counter.Mode (rCardAddr, rCounterNr, rMode : real);
<!TXT>
Legt fr den Zhler <!PW>rCounterNr (0..2) der PC-24IO Karte an der Basisadresse <!PW>rCardAddr die Betriebsart <!PW>rMode fest.
<!STBL>
<!+>rMode<!>Betriebsart<!>
<!c>0<!>Interrupt, wenn 0 erreicht<!>
<!c>1<!>Monostabile Kippstufe<!>
<!c>2<!>Teiler durch n<!>
<!c>3<!>Rechteckgenerator<!>
<!c>4<!>Software-Strobe<!>
<!c>5<!>Hardware-Strobe<!>
<!ETBL>
Fr eine genaue Dokumentation der Betriebsmodi sei auf das Datenblatt zum 8253 Baustein verwiesen.
>>

<<
128.149.3.2
McdPioCard.Counter.Set|Set
--
<!DEF>
procedure <!TW>McdPioCard.Counter.Set (rCardAddr, rCounterNr, rValue : real);
<!TXT>
Setzt den Zhler <!PW>rCounterNr (0..2) der PC-24IO Karte an der Basisadresse <!PW>rCardAddr auf den Wert <!PW>rValue (0..65535) fest.
>>
<<
128.149.3.3
McdPioCard.Counter.Get|Get
--
<!DEF>
function <!TW>McdPioCard.Counter.Get (rCardAddr, rCounterNr : real) : real;
<!TXT>
Holt den Zhlerwert des Zhlers <!PW>rCounterNr (0..2) der PC-24IO Karte an der Basisadresse <!PW>rCardAddr.
>>
