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