Centronics-liittimen nastojen määritykset
|
DB-25 |
Centronics 50 napainen |
|
|
Centronics 36 napainen |
Kirjoitin (cenronics 36-nap) Tietokone (25-napainen D-liitin, IBM/yht.sop)
| Centronics Pinni | DB-25 Pinni | Nimi | Suunta | Toiminta |
|---|---|---|---|---|
| 1 | 1 | STROBE | PC ---> Printteri | Liipaisupulssi |
| 2 | 2 | D0 | PC ---> Printteri | Vähiten merkitsevä bitti 0 |
| 3 | 3 | D1 | PC ---> Printteri | Data Bit 1 |
| 4 | 4 | D2 | PC ---> Printteri | Data Bit 2 |
| 5 | 5 | D3 | PC ---> Printteri | Data Bit 3 |
| 6 | 6 | D4 | PC ---> Printteri | Data Bit 4 |
| 7 | 7 | D5 | PC ---> Printteri | Data Bit 5 |
| 8 | 8 | D6 | PC ---> Printteri | Data Bit 6 |
| 9 | 9 | D7 | PC ---> Printteri | Eniten merkitsevä bitti 7 |
| 10 | 10 | /ACK | Printteri ---> PC | Kättelysignaali |
| 11 | 11 | BUSY | Printteri ---> PC | Kättelysignaali Varattu ! |
| 12 | 12 | POUT | Printteri ---> PC | Paperi loppu |
| 13 | 13 | SEL | Printteri ---> PC | Kirjoitin päällä / valinta |
| 14 | 14 | /AUTOFEED | PC ---> Printteri | Automaattisyöttö |
| 15 | N/A | n/c | N/A | Ei käytössä |
| 16 | N/C | 0 V | N/A | Signaalimaa |
| 17 | N/C | CHASSIS GND | N/A | Kirjoittimen rungon maa |
| 18 | N/C | +5 V PULLUP | Printteri ---> PC | +5 V DC Anto (50 mA maximi) |
| 19-30 | 18-25 | GND | N/A | Maat |
| 31 | 16 | /RESET | PC ---> Printteri | Resetointi |
| 32 | 15 | /FAULT | Printteri ---> PC | Virhe ! |
| 33 | N/C | 0 V | N/A | Ylimääräinen Signaalimaa |
| 34 | N/C | N/C | N/A | Ei käytössä |
| 35 | N/C | +5 V | Printteri ---> PC | +5 V DC |
| 36 | 17 | /SLCT IN | PC ---> Printteri | Valinta sisälle |
DB-25 ssa:
18-25 Nämä kaikki on kytketty GND:hen
16,19-30 ja 33 ovat yleensä kytketyt D-liittimen nastoihin 18-25, joissakin kirjoitinkaapeleissa nasta 16 on jätetty kytkemättä.
Otot ja annot ovat TTL-tasoisia, eli 0V on looginen nolla ja +5V on looginen 1. Ottojen oletustila on 1,jos niitä ei ole kytketty
mihinkään. Otot ja annot käyttävät niinsanottua Wired-Or -kytkentää, joten kaksisuuntainen liikenne on mahdollista.
Centronics-kättely:
Standard
PARALLEL DATA ___XXXXXXXXXX____________________________
___________ ______ _______________________________
DATA STROBE |__|
___________ _____________________________ ______
ACKNOWLEDGE
|____|
|
a| b| c| e |
BUSY/ACK
PARALLEL DATA ___XXXXXXXXXX_____________________________
___________ ______ ________________________________
DATA STROBE |__|
____________
BUSY ___________XXXX
|______________
___________ ________________________________ __
ACKNOWLEDGE
|______|
| a| b| c|
| d |
| e |
Ajoitukset/nimi:
(ys tarkoittaa tässä mikrosekuntia eli 1/1000000 s)
a = 1.0 ys (min)
b = 1.0 ys (min) ... 500 ys (max)
c = 1.0 ys (min)
d = BUSY DELAY
e = ACK DELAY
IBM AT Technical Referenecessä mainitaan a:n, b:n ja c:n minimiajoiksi 0.5 us.
Maksimaaliseksi kirjoitinkaapelin etenemisviiveksi on mainittu 200 mikrosekuntia ohjeellisena arvona.
Centronics-liittimen piirien I/O osoitteita:
Tässä OSOITE tarkoittaa Centronics rinnakkaisliitiinkortin I/O osoitetta. (I/O alkuosoite)
OSOITE Datalinjojen ohjaus
Kirjoittimelle lähtevä merkki kirjoitetaan tänne. Bitit
ohjaavat suoraan vastaavia centronics-nastoja.
Luettaessa saadaan tietää datalinjojen todellinen tila
lähdöissä. Tätä käytetään kaksisuuntaisessa liikennöinnissä.
OSOITE + 1 Sisääntulojen luku
__
D7
= BUSY (D7 nolla kun otto 1)
___
D6
= ACK (sama tila kuin ottolla)
D5
= PAPER OUT (sama tila kuin ottolla)
D4
= SELECTED (sama tila kuin otolla)
_____
D3
= ERROR
OSOITE + 2 Kättelylähtöjen ohjaus
D4 =
Kirjoittimen keskeytyksen valinta (1=keskeytys aktivoitu)
eli ACK linja aiheuttaa keskeytyksen.
__
________ _________
D3
= SELECTED (printterin SELECT IN, centronics nasta 36)
_____
D2
= RESET
__
_________
_________
D1
= AUTO FEED (kun D1 on 0, niin AUTO FEED on 1)
__
______
______
D0
= STROBE (kun D0 on 0, niin STROBE on 1)
Tavallisessa merkin tulostamisessa kirjoittimelle kirjoitetaan ensin merkki datalinjoihin ja sitten aiheutetaan lyhyt pulssi STROBE
linjalla. Tämä tapahtuu kirjoittamalla kättelylinjoja ohjaavaan osoitteeseen ensin arvo 05h ja heti perään arvo 04h. Busy linjan tila on
syytä tarkistaa ennen merkin kirjoitusta.
Kättelylähtöjen ohjauksessa bitti D5 on otettu joissain koneissa (esim. IBM PS/2 sarja) käyttöön ohjaamaan centronics liitännän
datalinjojen kaksisuuntaista toimintaa. Jos kaksisuuntaisuus on sallittu (joko erityisellä järjestelmän rekisterillä PS/2 koneissa tai
jumpperilla joissain koneissa), bitillä D5 voidaan ohjata datalinjojen suuntaa siten, että kun D5=0 niin datalinjat ovat ulostuloja
(kuten tavallisesti) ja kun D5=1 niin datalinjat toimivat sisääntuloina (ulostulopuskurit kytketty pois päältä).
Centronics Keskeytys- Keskeytys- I/O
BIOS data
portti linja
numero osoite
osoite
-----------------------------------------------------------------------------------------
LPT1 IRQ7
INT 0Fh 378h tai 3BCh * 0040:0008
LPT2 IRQ5**
INT 0Dh
0040:000A
LPT3 -
-
0040:000C
LPT4 -
-
0040:000E ***
* Yleisesti käytössä I/O osoite 378h, mutta koneissa jossa Centronics liitin
on näyttökortilla (yleensä Hercules) I/O osoite on 3BCh.
** HUOM! IRQ5 on varattu IBM PC:ssä kovalevylle, joten se ei ole siinä
käytettävissä Centronicsille.
*** HUOM! LPT4 osoite ei ei toimi OS/2:ta käytettäessä.
Vaihtamalla keskenään muistapaikoissa olevat kahden portin arvot voidaan ohjata esim. vain porttia LPT1 tukeva ohjelma tulostus pakotta
esim. portiin LPT2 ohjelman sitä tietämättä. Tämä ei välttämänttä toimi ohjelmissa, jotka käyttävät keskeytyspohjaista Centronics-portin
käyttöä.
MS-DOS ei hyödynnä rinnakkaisporttien keskeytyksiä, joten pelkässä DOS käytössä keskeytysten puuttuminen ei ole ongelma. Muut
käyttöjärjestelmät (esim. OS/2) yleensä hyödyntävät rinnakkaisportin keskeytyksiä.
Keskeytysten ohjelmoinnista
Kirjoitinportti LPT saadaan käyttämään keskeytyslinjaa IRQ7, joka aiheuttaa keskeytyksen INT 0Fh. Tätä keskeytysvekstoria muuttamalla
voi tehdä keskeytysajettuja kirjoitinrutiineja, koska keskeytys aiheuttuu ACK- signaalista, eli kun kirjoitin on valmis ottamaan uuden
merkin. User Supported Programming Technical Reference tosin ilmoittaa, että portti on Reseved by IBM. Jos IRQ7-linja ei ole päällä,
niin sen saa päälle nollaamalla keskeytysohjaimen maskin bitin D7 (porttiosoite 0021h)
Kaksisuuntainen liikennöinti
Alkuperäinen cemtronics-standardi oli suunniteltu yksisuuntaiseksi liitännäksi datan siirtämiseksi toietokoneesta kirjoittimeen.
Kuitekin PC koneiden yhteydessä niiden centronics porttia on ruvettu hyödyntämään hiukan laajemmin- kin kuin alunperin oli suunniteltu.
Yleisiä soveullutuksia ovat mm. tiedoston siirto koneiden välillä (Laplink ja FastLynx) sekä erilaiset centronics porttiin liitettävät
lisälaitteet (levyasemat, kovalevyt, lähiverkkosovittimet).
Koska rinnakkaisportti oli alunperin suunniteltu yksisuuntaisuutta silmällä pitäen, kaksisuuntainen liikennöinti vaati normaalikäytöstä
poikkeavia menettelyjä. Yleisimmin dataa välitetään koneelle päin käyttäen centronics portin kättelysisääntuloja (5 kpl) siten että data
lähetetään 4 bitin ryhmissä 4 linjaa pitkin ja yhtä käytetään ajoitukseen. Tätä menetelmää käyttävät useat lisälaiteet sisääntulona.
Ulostulo hoidetaan normaalisti datalinjoja pitkin. Mm. Fastlynx ohjelma hyödyntää kättelysisääntuloja data lukemisessa ja datanastoja
ulostulossa siistäessään dataa tietokoneiden välillä centronics-portin kautta.
Joissain tapauksissa nämä sisääntulot eivät ole riittäneet, ja käyttään on otettu lisäksi kättelyulostulot sisääntuloina. Tämä onnistuu,
koska kättelyulostulot ovat periaatteessa ylösvedettyjä avokollektoriantoja /tai heikosti ylös vedettyjä TTL lähtöjä). Kun ulostulo
ohjataan ykköseksi, se on mahdollista vetää nollaksi ulkoisella kytkennällä. Ulostulonastojen tila on luettavissa, joten ne toimivat
hyvin sisääntuloinakin. Mm. Laplink käyttää sisääntuloina sekä kättelysisääntuloja että osaa kättelyulostuloista.
Dataulostulot ovat voimakkaampia ulostuloja kuin kättelyulostulot, joten niiden käyttö sisääntuloina ei onnistu aina yhtä helposti.
Eräät lisälaitteet (mm. Xircomin lähiverkkosovitin) testaa pystyykö se käyttämään datatalinjoja sisääntuloina koneeseen päin. Jos
sepystyy, se hoitaa kaiken dataliikennöintinsä datalinjojen välityksellä kumpaankin suuntaa. Jos se ei pysty käyttämään niitä
sisääntuloina, niin se käyttää datalinjoja datan siistämiseen koneesta sovittimeen ja kättelysisääntuloja toisen suunnan liikennöintiin
(jolloin se on puolet hitaampaa).
Todelliset kaksisuuntaiset centronics-liitännät
Vuosien varrella tarve kaksisuuntaiseen liikennöintiin kasvoi. IBM laittoi PS/2 sarjansa koneisiin todelliset kaksisuuntaiset centronics
portit. Niissä muut nastat toimivat kuten ennenkin (ks. yllä), mutta datalinjat pystyttiin tarvittaessa kytkemään sisääntuloksi.
Datalinjojen suunnan vaihtamien tapahtui ulostuloja ohjaavasta reisteristä käyttöön otetulla bitillä D5. Jotta yhteensopivuus olisi
saatu mahdollisimman hyväksi, tämä kaksisuuntainen toiminto oli ensiksi kytkettävä päälle. PS/2 koneissa se tapahtuu laitteisto-
kokoonpanoa ohjaavalla rekisterillä. Joissain muissa merkeissä saattaa toiminto olla asetettavissa jumpperin avulla.
Uusissa kannettavissa koneissa alkaa myös esiintyä kaksisuuntaista porttia Intelin otettua tämän ominaisuuden integroituun
piirisarjaansa, jonka se teki erityisesti kannettavia koneita varten. Näissä koneissa kaksisuuntaisuusominaisuus on yleensä
laitettavissa päälle muuttamalla piirisarjan asetuksia joko BIOSin setupilla tai erillisellä ohjelmalla.
Jos koneessa oleva centronics portti on kasattu erillisistä piireistä, niin se on muutettavissa todelliseksi kaksisuutaiseksi portiksi
pienellä muutoksella, jonka Mark B. Bower kuvaa tekstissään "Making your paralllel port bi-directional", joka on tietojeni mukaan
saatavana vain vapaasti levitettävänä tekstitiedostona.
Kaksisuuntainen liikennöinti perinteisessä PC:n centronics portissa
Omien kokemuksien mukaan kaikkia PC:n centronics-liitännän antoja voidaan käyttää ottoina. Kaupallisissa sovellutuksissa on otettu
joissain määrin käyttöön ohjausulostulojen kaksisuuntaisuus, mutta myös datalinjojen kaksisuuntaisuutta on hyödynnetetty. Ohjauslinjojen
kaksisuuntaisuuden pitäisi toimia ongelmitta aiva kaikissa koneissa, koska sitä käytetään melko yleisestikin. Datalijojen
kaksisuuntaisuudessa saattaa olla joillain erikoisilla koneilla pieniä ongelmia toimivuudessa, mutta omalle kohdalle ei ole vielä yhtään
tällaista konetta tullut. Omat kokemukset ovat 82C11 piiriin perustuvista porteista, sekä perinteisestä IBM AT:n centronics portista.
82C11 on nykypäivänä yleisin käytetty piiri, koska se sisältää koko cenronics portin toiminnot yhdellä piirillä. Yleensä integrointi on
vielä asekelen pidemmällä multi-IO korteissa, ja 82C11:ta sekä parin RS-232C liitännän toiminnat on yleensä integroitu yhdelle VLSI
piirille. Vanhoissa koneissa erilliskomponenteista kasattu IBM AT kortin tyyppinen kytkentä on hallitseva.
Kaksi PC:tä voidaan liittää yhteen yksinkertaisella johdolla, jossa kummassakin päässä on D-25 uros ja kummankin liittimen kaikki
datanastat on kytketty toisen liittimen saman mumeroisiin nastoihin, osa kättelynastoista on yhdistetty toisiinsa (esim. STROBE kytketty
toisen koneen ACK linjaan) sekä maat kytketty yhteen- Sopivalla ohjelmalla voidaan siirtää tietoa koneiden välillä nopeasti.
Jos antoja halutaan käyttää ottoina, niin kirjoitetaan lähdön bitit ykkösiksi. Toisen pään laite sitten maadoittaa kyseisen linjan, kun
se haluaa lähettää nollan koneelle. Vastaus luetaan samasta osoitteesta, johon oli kirjoitettu (ns. Wired-Or -kytkentä). Lähtöjen
maadoittamiseen tarvitaan voimakas linja- puskuri (esim. 74LS245), koska centronics-liittimen linjapuskuri pystyy syöttämää kohtuullisia
virtoja (joitain kymmeniä milliampeereja oikosulussa), varsinkin jos liitimessä ei ole rajoittavia vastuksia linjaohjaimen jäljessä.
Omassa koneessani oleva centronics-liittimen piiri (82C11) pystyi syöttämään 40 mA oikosuljettaessa (datakirjan mukaan syöttökyky 24
mA), ja kesti sen hyvin. Olen kuullut huhuja, että kaksisuuntainen liikennöinti ei olisi suositeltavaa, mutta usean vuoden kokemuksen
perustella olen sitä mieltä, että kaksisuuntainen liikennöinti on täysin turvallista.
Computer Craft lehdessä mainitaan testi, jolla voidaan varmistaa, onko tietokoneen centronics portti sovelias käytettäväksi
kaksisuuntaisena. Tarvitaan yleismittaria ja pari vastusta. Ohjaa dataulostulot ykköseksi ja mittaa ulostulojännite signaalimaata
vastaan. Jos sen on 5V käyttöjännitteen luokkaa, niin luultavasti porttikaksisuuntaiseen liikennöintiin sopiva, jatka kuitenkin
mittauksia etenpäin. Jos jännite jäi 3.5-4V tuntumaan, niin luultavasti kyseessä ns. totem-pole lähtö, joka ei sovellu
kaksisuuntaiseksi. Seuraavaksi kytke 2200 ohmin vastus maan ja datanastan väliin, ja mittaa jännite. Sen pitäisi olla pudonnut noin 5%
tai enemmän ensimmäisen mittauksen arvosta. Toista sama 1000 ohmin vastuksella. Pudotuksen tulisi olla 10% tai enemmän ensimmäisestä
mittauksesta. Jos mittaustulokset vastasivat vaatimuksia, niin portti toimii hyvin kaksisuuntaisena.
Centronics-liittimen käyttöä BIOS-rutiineilla (PC ja AT)
INT 17h: muuttaa vain rekisteriä AH
INT 17h funktio 00h: Merkin kirjoitus kirjoittimelle
vaatii:
AH=00h
AL=kirjoitettava merkki
DX=rinnakkaisportin numero (0=LPT1, 1=LPT2, jne.)
palauttaa:
AH=kirjoittimen tila: (merkitys jos kyseinen bitti ykkönen)
D7 kirjoitin ei
varattu (busy)
D6 kirjoittimen ACK
D5 paperi loppunut
(PO)
D4 kirjoittimen
SELECT
D3 I/O virhe (ERROR)
D2 ei käytössä
D1 ei käytössä
D0 aika loppunut
(timed-out)
INT 17h funktio 01h: rinnakkaisportin initialisointi
vaatii:
AH=01h
DX=rinnkkaisportin numero (0=LPT1, 1=LPT2, jne.)
palauttaa:
AH=kirjoittimen tila (katso INT 17h funktio 00h)
INT 17h funktio 02h: kirjoittimen tilan luku
vaatii:
AH=02h
DX=rinnakkaisportin numero (0=LPT1, 1=LPT2, jne.)
palauttaa:
AH=kirjoittimen tila (katso INT 17h funktio 00h)
PC/MS-DOS sisältää myös oman kutsun Centronics-liitännän käyttöön.
INT 21h fuktio 05h: merkin lähetys tavalliseen tulostuslaitteeseen (tavallisesti LPT1)
vaatii:
AH=05h
DL=kirjoitettava merkki
palauttaa:
ei mitään