Conectarea unui port lpt. Programarea portului LPT în Visual Basic. Utilizarea portului imprimantei pentru a controla dispozitivele externe

În ciuda faptului că astăzi portul de interfață USB a devenit ferm la modă, portul LPT rămâne destul de solicitat pentru scopuri de radio amatori. La urma urmei, de fapt, nu este atât de important cum și prin ce port vor fi controlate dispozitivele externe de pe computer, rezultatul este important. De ce am decis să studiez portul LPT? Răspunsul este simplu, acesta este un port destul de accesibil și ușor de învățat în ceea ce privește programarea pentru începători, acesta nu este probabil un ghid practic rău pentru stăpânirea LPT, iar în viitor alte porturi - interfețe. În acest articol, voi încerca să îi familiarizez în detaliu pe programatorii radioamatori începători cu principiile programării portului LPT. Programarea practică va fi prezentată folosind limbajele de programare Pascal și Delphi. Vi se cere să aveți cunoștințe de bază despre Pascal și Delphi, și bineînțeles despre electronică radio, în cadrul celor 10 lecții prezentate pe site.

Ce este un port LPT?

Portul LPT este locul de pe computer unde este conectată imprimanta. Dar poți pune mult mai multe lucruri interesante acolo. Inclusiv schemele cu care ai venit. De exemplu, prin portul LPT, am aprins lumina din cameră, am implementat controlul dispozitivului de rotire a antenei și am efectuat multe alte experimente (măsurarea unor parametri ai circuitelor radio folosind portul etc.).

Așa arată conectorii și conectorii computerului.

Direcţie

Semnal

Pentru circuite de control simple avem nevoie de concluzii:

2 - 9 sunt ieșirile Data0-7. 18 - 25 este pământ (minus). De obicei (nu întotdeauna) sunt conectate la carcasa computerului. Acesta este setul de bază de pini necesari pentru a vă face propriile circuite. De asemenea, vreau să vă atrag atenția asupra rezultatului - acesta este „Data Strobe”. După cum am înțeles, un semnal pozitiv la această ieșire îi spune dispozitivului că trebuie să citească următoarea comandă. Dacă nu alimentam această ieșire în mod programatic, imprimanta pur și simplu nu va acorda atenție celorlalte ieșiri. Pentru a introduce informații în port, sunt utilizați pinii 10-13, 15. Mai multe detalii mai târziu. Ieșirile portului pot accepta doar 2 stări - log0 și log1. Când porniți computerul, stările de ieșire se schimbă rapid, apoi mergeți la log0. În funcție de tipul plăcii de bază, una sau două ieșiri pot merge la log1. În plus, la încărcarea sistemului de operare Windows, stările intrărilor se pot schimba din nou. După ce încărcarea este completă, sistemul nu atinge ieșirile până când începe tipărirea sau „căutarea echipamentelor” Exemple de circuite pentru programe de depanare când lucrez cu un port LPT și nu numai circuite controlate folosind un port LPT Cred că aceste circuite sunt destul de suficiente pentru a studia principiile portului exemplu evident pentru studiu, vă sfătuiesc să lipiți același circuit fără întârziere. Ne va fi util pe tot parcursul lecțiilor:

Toate rezistențele din circuit sunt de 270 - 470 ohmi, în funcție de LED-urile selectate. Rezistoarele limitează aici consumul de curent. Conform standardului, tensiunea dintre pinul de semnal și masă nu trebuie să fie mai mare de 2,4 V - 2,6 mA. Acestea. foarte puțin, dar de fapt plăcile de bază moderne sunt proiectate pentru sarcini grele și de foarte multe ori au protecție la scurtcircuit. În orice caz, portul trebuie manevrat cu mare grijă, pentru că... Fără el, placa de bază a computerului poate refuza deloc să funcționeze. Iată cea mai simplă diagramă de conectare a releului:

Cred că nu este nevoie să explic nimic aici. Datele sunt una dintre ieșirile portului LPT, de exemplu, pinul 2 (Data-0). Dacă pe el apare log1, tranzistorul se va deschide, releul K1 va funcționa și va conecta o sarcină mai puternică.. În acest circuit, portul LPT este conectat direct la tranzistor și dacă se defectează, ieșirea de date poate conține o tensiune care este periculos pentru port. Pentru a proteja portul, trebuie utilizată izolație galvanică. Circuit folosind un optocupler.

În această schemă, portul este separat de partea de înaltă tensiune și aproape că nu este în pericol. În acest circuit am instalat un optoizolator 4N25 - cel mai ieftin și mai mic. Bobina din diagramă este un releu de 12 volți. În timpul experimentelor, am conectat releul RES22 la acest circuit și o lampă de masă la acesta. Pentru testare, am scris un program care controla lampa după ceas...
Apropo, iată un exemplu de control al unui triac:

Pur și simplu am conectat acest circuit în locul comutatorului pentru iluminatul principal din camera mea. Așadar, ne-am uitat la câteva circuite simple care pot fi utilizate în siguranță în experimentele noastre cu un port LPT și ulterior luate ca bază la dezvoltarea dispozitivelor controlate. Și așa, din acest articol ați învățat ce este un port LPT și cum poate fi folosit în scopuri de radio amator. Am dat, de asemenea, exemple ale celor mai simple circuite radio pe care le vom folosi pentru experimente ulterioare. Să trecem la teoria și practica programării portului LPT.

|

Descărcați pinoutul portului imprimantei:

IEEE 1284 (port de imprimantă, port paralel, terminal de imprimare linie engleză, LPT) - standard internațional de interfață paralelă

Acest standard se bazează pe interfața Centronics și pe versiunile sale extinse (ECP, EPP).

Numele „LPT” este derivat din numele dispozitivului de imprimantă standard „LPT1” (Line Printer Terminal sau Line Printer) în sistemele de operare din familia MS-DOS. Interfață Centronics și standardul IEEE 1284

Port paralel Centronics - un port folosit din 1981 în calculatoarele personale IBM pentru conectarea dispozitivelor de imprimare, dezvoltat de Centronics Data Computer Corporation; a devenit de mult un standard de facto, deși în realitate nu este standardizat oficial momentan.

Acest port a fost proiectat inițial doar pentru transferul de date simplex (unidirecțional), deoarece portul Centronics a fost conceput pentru a fi utilizat numai pentru operarea imprimantei. Ulterior, diferite companii au dezvoltat extensii de interfață duplex (mod byte, EPP, ECP). Apoi a fost adoptat standardul internațional IEEE 1284, care descrie atât interfața de bază Centronics, cât și toate extensiile acesteia.

Tipuri de conectori porturi paralele

Conector de cablu Centronics cu 36 de pini pentru conectarea dispozitivului extern (IEEE 1284-B)

Conector DB-25 cu 25 de pini folosit ca port LPT pe computerele personale (IEEE 1284-A)

Portul de pe partea dispozitivului de control (computer) are un conector DB-25-femă cu 25 de pini și 2 rânduri (IEEE 1284-A). Nu trebuie confundat cu un conector masculin similar („mascul”), care a fost instalat pe computere mai vechi și este un port COM cu 25 de pini.

Perifericele folosesc de obicei un conector Micro-ribbon Centronics (IEEE 1284-B) cu 36 de pini, astfel încât cablurile paralele pentru conectarea perifericelor la un computer sunt de obicei realizate cu un conector tată DB-25 cu 25 de pini pe o parte și un IEEE cu 36 de pini. 1284-B la altul (cablu AB). Ocazional, se folosește un cablu AC cu un conector MiniCentronics cu 36 de pini (IEEE 1284-C).

Există și cabluri CC cu conectori MiniCentronics la ambele capete pentru conectarea dispozitivelor folosind standardul IEEE 1284-II, care este rar folosit.

Lungimea cablului de conectare nu trebuie să depășească 3 metri. Design cablu: perechi răsucite într-un ecran comun sau perechi răsucite în scuturi individuale. Cablurile panglică sunt rar folosite.

Pentru a conecta un scaner și alte dispozitive, se folosește un cablu care are instalat un conector DB-25 tată în locul unui conector (IEEE 1284-B). De obicei, scanerul este echipat cu o a doua interfață cu un conector DB-25-femă (IEEE 1284-A) pentru conectarea unei imprimante (deoarece un computer este de obicei echipat cu o singură interfață IEEE 1284).

Circuitul scanerului este proiectat astfel încât atunci când lucrați cu o imprimantă, scanerul transferă în mod transparent datele de la o interfață la alta. Interfață fizică

Interfață conector

Interfața de bază Centronics este o interfață paralelă unidirecțională și conține linii de semnal caracteristice unei astfel de interfețe (8 pentru transmisia de date, strobe, linii de stare a dispozitivului).

Datele sunt transferate într-o singură direcție: de la computer la un dispozitiv extern. Dar nu poate fi numit complet unidirecțional. Astfel, sunt folosite 4 linii de retur pentru a monitoriza starea dispozitivului. Centronics vă permite să conectați un dispozitiv, așa că pentru a utiliza mai multe dispozitive împreună, trebuie să utilizați suplimentar un selector.

Viteza de transfer de date poate varia și poate ajunge la 1,2 Mbit/s.

Cabluri de cablu lpt pentru imprimantă standard Centronics IEEE 1284:

Tabel simplificat - Diagrama semnalului interfeței Centronics LPT - conector

Contacte
DB-25 IEEE 1284-A
Contacte
Centronics IEEE 1284-B
Desemnare Notă Funcţie
1 1 Strobe Marcator ciclului de transfer (ieșire) Managementul computerelor
2 2 Bit de date 1 Semnal 1 (ieșire) Calculator de date
3 3 Bitul de date 2 Semnal 2 (ieșire) Calculator de date
4 4 Bit de date 3 Semnal 3 (ieșire) Calculator de date
5 5 Bit de date 4 Semnal 4 (ieșire) Calculator de date
6 6 Bitul de date 5 Semnal 5 (ieșire) Calculator de date
7 7 Bitul de date 6 Semnal 6 (ieșire) Calculator de date
8 8 Bitul de date 7 Semnal 7 (ieșire) Calculator de date
9 9 Bitul de date 8 Semnal 8 (ieșire) Calculator de date
10 10 Confirmare Disponibilitatea de a accepta (input) Starea imprimantei
11 11 Ocupat ocupat (intrare) Starea imprimantei
12 12 Capătul hârtiei Fără hârtie (intrare) Starea imprimantei
13 13 Selectați Selectați (intrare) Starea imprimantei
14 14 Auto Line Feed Alimentare automată (ieșire) Managementul computerelor
15 32 Eroare Eroare (intrare) Starea imprimantei
16 31 Init Inițializare (ieșire) Inițializare imprimantă (prime-low) Managementul computerelor
17 36 Selectați În Control imprimare (Ieșire) Selectați Intrare Managementul computerelor
18-25 16-17, 19-30 GND General Pământ

Cablajul cablului de imprimantă Centronics IEEE 1284 lpt - portul com9 poate fi afișat și sub forma unei imagini imagine

Interfețele paralele se caracterizează prin faptul că folosesc linii de semnal separate pentru a transmite biții într-un cuvânt, iar biții sunt transmiși simultan. Interfețele paralele folosesc niveluri logice TTL (logica tranzistor-tranzistor), care limitează lungimea cablului datorită imunității scăzute la zgomot a interfeței TTL. Nu există izolare galvanică. Interfețele paralele sunt folosite pentru a conecta imprimante. Transferul de date poate fi fie unidirecțional (Centronics)și bidirecțională (Bitronics). Uneori, o interfață paralelă este utilizată pentru comunicarea între două computere - rezultatul este o rețea „făcută pe genunchi” (LapLink). Protocoalele de interfață vor fi discutate mai jos Centronici, Standardul IEEE 1284, precum și porturile PC care le implementează.

1.1. Interfață Centronics și port LPT

Pentru a conecta o imprimantă prin interfață Centronics a fost introdus în PC port de interfață paralelă - Așa a apărut denumirea de port LPT (Line Printer - line printer). Deși acum nu numai imprimantele de linie sunt conectate prin acest port, numele „LPT” rămâne.

1.1.1. Interfața Centronics

Concept Centronics se referă atât la setul de semnal și la protocolul de comunicare, cât și la conectorul cu 36 de pini de pe imprimante. Scopul semnalelor este prezentat în tabel. 1.1, iar diagramele de timp ale schimbului cu imprimanta sunt în Fig. 1.1.

Interfață Centronics suportat de imprimante paralele. Analogul său intern este interfața IRPR-M.

Port LPT tradițional, cunoscut și ca standard SPP(Standard Parallel Port) este un port unidirecțional prin care protocolul de schimb este implementat în software Centronics. Portul generează o întrerupere hardware bazată pe un impuls la intrarea Ack#. Semnalele portului sunt transmise către Conector DB-25S(priză) instalată direct pe placa adaptorului (sau placa de sistem) sau conectată la aceasta cu un cablu plat. Numele și scopul semnalelor conectorului de port (Tabelul 1.2) corespund interfeței Centronics.

Semnal I/O* a lua legatura Scop
Strobe# eu 1 Strobe de date. Datele sunt captate de un nivel scăzut al semnalului
Date eu 2-9 Liniile de date. Date 0 (pin 2) - bitul cel mai puțin semnificativ
Ack# O 10 Confirmare - un impuls de confirmare de octet (o solicitare de a primi următorul). Poate fi folosit pentru a genera o cerere de întrerupere
Ocupat O 11 Ocupat. Recepția datelor este posibilă numai când nivelul semnalului este scăzut
Sfârșit hârtie O 12 Un nivel înalt semnalează sfârșitul hârtiei
Selectați O 13 Semnează că imprimanta este pornită (de obicei conectată printr-un rezistor la circuitul de +5 V din imprimantă)
AutoLF# eu 14 Traducerea automată a liniilor. Când nivelul imprimantei este scăzut, se primește caracterul CR(Întoarcere cărucior), îndeplinește automat funcția Lf(Line Feed - Line feed)
Eroare# O 32 Eroare: fără hârtie, stare OFF-Line sau eroare internă a imprimantei
Init# eu 31 Inițializare (resetați la setările implicite, reveniți la începutul liniei)
Selectați ln# eu 36 Selectarea imprimantei (nivel scăzut). Când nivelul este ridicat, imprimanta nu percepe alte semnale de interfață
GND - 19-30, 33 Sârmă de interfață comună

Orez. 1.1. Transfer de date prin protocolul Centronics

Contactați DB-25S Numărul firului din cablu Scop
I/O* Reg. Pic** Semnal
1 1 O/I CR.0\ Strobe#
2 3 O(I) DR.0 Date 0
3 5 O(I) DR.1 Date 1
4 7 O(I) DR.2 Date 2
5 9 O(I) DR.3 Date 3
6 11 O(I) DR.4 Date 4
7 13 O(I) DR.5 Date 5
8 15 O(I) DR.6 Date 6
9 17 O(I) DR.7 Date 7
10 19 eu*** SR.6 Ack#
11 21 eu SR.7 Ocupat
12 23 eu SR.5 PaperEnd (PE)
13 25 eu SR.4 Selectați
14 2 O/I CR.1\ Auto LF#
15 4 eu SR.3 Eroare*
16 6 O/I CR.2 Init#
17 8 O/I CR.3\ Selectați ln#
18-25 10, 12, 14, 16, 18, 20, 22, 24, 26 - - -
* I/O specifică direcția de transmisie (intrare/ieșire) a semnalului portului. O/I desemnează liniile de ieșire a căror stare este citită prin citirea din porturile de ieșire; (I) - linii de ieșire, a căror stare poate fi citită numai în condiții speciale (vezi mai jos).
** Simbolul „\” marchează semnalele inversate (1 din registru corespunde unui nivel scăzut al liniei).
*** Intrarea Ack# este conectată printr-un rezistor (10 kOhm) la sursa de +5 V.

1.1.2. Port LPT tradițional

Adaptorul de interfață paralelă este un set de registre situate în spațiul de intrare/ieșire. Registrele de porturi sunt adresate în raport cu adresa de bază a portului, ale căror valori standard sunt 3BCh, 378h și 278h. Portul poate folosi, de obicei, o linie de solicitare de întrerupere hardware IRQ7 sau IRQ5. Portul are extern 8 biți magistrala de date 5 biți bus de stareși 4 biți magistrala de semnal de control,

BIOS acceptă până la patru (uneori până la trei) porturi LPT (LPT1-LPT4) cu serviciul său de întrerupere INT 17h, asigurand prin intermediul acestora comunicarea cu imprimanta prin interfata Centronics. Cu acest serviciu, BIOS-ul afișează un caracter (prin pregătirea pentru interogare, fără a utiliza întreruperi hardware), inițializează interfața și imprimanta și, de asemenea, interogează starea imprimantei.

Portul standard are trei registre de 8 biți, situate la adrese adiacente în spațiul I/O, începând de la adresa de bază a portului BAZĂ (3BCh, 378h sau 278h).

Registrul de date (DR) - registrul de date, adresa=BAZA. Datele scrise pe acest port sunt sunt afișate la liniile de ieșire ale interfeței DATA. Datele citite din acest registru, în funcție de circuitul adaptorului, corespund fie datelor înregistrate anterior, fie semnalelor pe aceleași linii, ceea ce nu este întotdeauna același lucru. Dacă scrieți un octet cu unii din toți biții în port și aplicați un cod la liniile de ieșire ale interfeței prin microcircuite cu o ieșire de tip „colector deschis” (sau conectați unele fire la masa circuitului cu chei), atunci aceasta codul poate fi citit din același registru de date. Astfel, pe multe modele de adaptoare mai vechi este posibil să se implementeze un port de intrare a semnalului discret, dar circuitele de ieșire ale transmițătorului de informații vor trebui să „lupteze” cu curentul de ieșire al unității logice a bufferelor de ieșire ale adaptorului. Circuitele TTL nu interzic astfel de soluții, dar dacă dispozitivul extern este realizat la , curentul lor de ieșire poate să nu fie suficient pentru a forma un 0 logic. Cu toate acestea, adaptoarele moderne au adesea o rezistență de potrivire cu o rezistență de până la 50 ohmi la ieșire. circuit. Curentul de scurtcircuit de ieșire la masă este de obicei mai mic de 30 mA. Un calcul simplu arată că, în cazul unui scurtcircuit al contactului conectorului la masă la ieșirea „unu”, scade o tensiune de 1,5 V, care va fi percepută de circuitul de intrare al receptorului ca „unu”. Deci această metodă de introducere nu va funcționa pe toate computerele.

La unele adaptoare de porturi, tamponul de ieșire este dezactivat de un jumper de pe placă. Apoi portul se transformă într-un port de intrare obișnuit.

Status Register (SR) - registru de stare; reprezintă Port de intrare pe 5 biți semnale de stare a imprimantei (biți SR.4-SR.7), adresa==BASE+1. Pic S.R. 7 inversat - un nivel scăzut al semnalului corespunde unei singure valori de bit din registru și invers.

Scopul biților registrului de stare (numerele pinului conectorului sunt date în paranteze):

  • SR.7 - Ocupat - afișări inverse ale stării liniei de ocupat (11): când linia este scăzută, valoarea biților este setată la unu - permisiunea de a scoate următorul octet.
  • SR.6 - Ack(Confirmare) - afișează starea liniei Ack# (10).
  • SR.5 - RE(Sfârşit hârtie) - afişează starea liniei de sfârşit hârtie (12). O singură valoare corespunde unui nivel de linie ridicat - un semnal despre sfârșitul hârtiei în imprimantă.
  • SR.4 - Selectare - afișează starea liniei Selectare (13). O singură valoare corespunde unui nivel ridicat de linie - un semnal pentru a porni imprimanta.
  • SR.3 - Eroare - afișând starea liniei de eroare (15). O valoare zero corespunde unui nivel de linie scăzut - un semnal al oricărei erori de imprimantă.
  • SR.2 - PIRQ - flag de întrerupere pentru semnalul Ack# (numai pentru portul PS/2). Bitul este șters dacă semnalul Ack# a provocat o întrerupere hardware. Valoarea unică este setată prin resetarea hardware și după citirea registrului de stare.
  • SR- rezervat.

Control Register (CR) - registru de control, adresa=BASE+2. Ca și registrul de date, acesta Port de ieșire pe 4 biți poate fi scris și citit (biții 0-3), dar tamponul său de ieșire este de obicei de tip open collector. Acest lucru vă permite să utilizați corect liniile acestui registru ca intrare atunci când le programați la un nivel înalt. Biții 0, 1, 3 sunt inversați.

Scopul biților registrului de control:

  • CR- rezervat.
  • CR.5 - Direcție - Bit de control al direcției de transmisie (numai porturi PS/2). Scrierea unuia pune portul de date în modul de intrare. La citire, starea biților este nedefinită.
  • CR.4 - AcklntEn(Ack Interrupt Enable) - o singură valoare permite întreruperea atunci când semnalul cade pe linia Ack# - semnalul pentru solicitarea următorului octet.
  • CR.3 - Selectați ln - o valoare de un singur bit corespunde unui nivel scăzut la ieșirea Select ln# (17) - un semnal care permite imprimantei să funcționeze prin interfață Centronics.
  • CR.2 - Init - o valoare de bit zero corespunde unui nivel scăzut de ieșire Init#(16) - semnal de resetare hardware a imprimantei.
  • CR.1 - Auto LF - o valoare de un singur bit corespunde unui nivel scăzut la ieșire Auto LF# (14) - un semnal pentru avans automat de linie (LF - Line Feed) la primirea unui octet de retur car (CR). Uneori semnalul și bitul sunt apelați AutoFD sau AutoFDXT.
  • CR.0 - Strobe - o valoare de un singur bit corespunde unui nivel scăzut la ieșirea Strobe# (1) - semnalul de ieșire a datelor stroboscopice.

Solicitare de întrerupere hardware(de obicei IRQ7 sau IRQ5) este generată de căderea semnalului negativ la pinul 10 al conectorului de interfață (Ack#) în timpul instalării CR.4=1. Pentru a evita întreruperile false, pinul 10 este conectat printr-un rezistor la șina de +5 V O întrerupere este generată atunci când imprimanta confirmă primirea octetului anterior. După cum sa menționat deja, BIOS-ul nu utilizează și nu deservește această întrerupere.

Procedura de ieșire a unui octet prin interfață Centronics include următorii pași (numărul necesar de operațiuni cu magistrala procesorului este dat în paranteze):

  1. Octet de ieșire în registrul de date (1 ciclu IOWR#).
  2. Intrare din registrul de stare și verificarea pregătirii dispozitivului (bit SR.7 - Semnal ocupat). Acest pas se realizează în bucle până când este gata sau până când apare un timeout software (minim 1 ciclu IORD#).
  3. După primirea pregătirii, ieșirea setează stroboscopul de date în registrul de control, iar următoarea ieșire elimină stroboscopul (2 cicluri IOWR#). De obicei, pentru a comuta doar un bit (stroboscop), registrul de control este mai întâi citit, ceea ce adaugă un alt ciclu IORD#.

Se poate observa că, pentru a scoate un octet, sunt necesare 4-5 operațiuni I/O cu registre de port (în cel mai bun caz, atunci când disponibilitatea este detectată de prima citire a registrului de stare). Acest lucru duce la principalul dezavantaj al ieșirii printr-un port standard - viteză scăzută de schimb cu încărcare semnificativă a procesorului. Portul poate fi overclockat la viteze de 100-150 KB/s când procesorul este complet încărcat, ceea ce nu este suficient pentru imprimarea pe o imprimantă laser. Un alt dezavantaj este funcțional - este dificil de utilizat ca port de intrare.

Portul standard este asimetric - în timp ce există 12 linii (și biți) care funcționează în mod normal ca ieșire, doar 5 linii de stare funcționează ca intrare. Dacă este necesară o comunicare bidirecțională simetrică, modul este funcțional pe toate porturile standard schimb nibble - Modul Nibble.În acest mod, numit și Hewlett Packard Bitronics, 4 biți de date sunt transmise simultan, a cincea linie este folosită pentru strângere de mână. Astfel, fiecare octet este transferat în două cicluri, iar fiecare ciclu necesită cel puțin 5 operațiuni I/O.

1.1.3. Extensii de porturi paralele

Neajunsurile portului standard au fost parțial eliminate de noi tipuri de porturi care au apărut pe computerele PS/2.

Port paralel tip 1-interfata introdusa in PS/2. Pe lângă modul standard, un astfel de port poate funcționa în modul de intrare sau în modul bidirecțional. Protocolul de schimb este generat de software, iar un bit special este introdus în registrul de control al portului pentru a indica direcția de transmisie CR.5:0 - Bufferul de date funcționează pentru ieșire, 1 - pentru intrare. Nu confundați acest port, numit și bidirecțional îmbunătățit, cu ERR. Acest tip de port a prins rădăcini în computerele obișnuite.

Port de acces direct la memorie (port paralel DMA tip 3) utilizat la modelele PS/2 57, 90, 95. A fost introdus pentru a crește debitul și a descărca procesorul la ieșirea către o imprimantă. Programul care lucrează cu portul trebuia doar să specifice în memorie blocul de date care urmează să fie scos și apoi să iasă în conformitate cu protocolul Centronics a fost produs fără participarea unui procesor.

Ulterior, au apărut și alte adaptoare de port LPT care au implementat protocolul de schimb Centronics hardware - Centronic rapid. Unii dintre ei au folosit tampon de date FIFO - Modul FIFO de port paralel. Nefiind standardizate, astfel de porturi de la diferiți producători necesitau utilizarea propriilor drivere speciale. Programele care foloseau controlul direct al registrelor de porturi standard nu au putut să le folosească mai eficient. Astfel de porturi au fost adesea incluse în multicard-urile VLB. Există variante cu magistrala ISA, inclusiv încorporate.

1.2. Standardul IEEE 1284

Interfață paralelă standard IEEE 1284 adoptată în 1994, definește porturile SPP, PPEȘi ESR. Standardul definește 5 moduri de schimb de date, metoda de negociere a modului, interfețe fizice și electrice. Conform IEEE 1284, sunt posibile următoarele moduri de schimb de date prin portul paralel:

  • Mod de compatibilitate - unidirecțional (ieșire) pe protocol Centronics. Acest mod corespunde portului SPP standard.
  • Modul ronțăit - introduceți un octet în două cicluri (4 biți fiecare), folosind linia de stare pentru a primi. Acest mod de schimb poate fi utilizat pe orice adaptoare.
  • Modul octet - introducerea unui octet întreg folosind linii de date pentru a primi. Acest mod funcționează numai pe porturile care pot citi datele de ieșire (Bi-Directional sau PS/2 Tip 1).
  • modul EPP(Port paralel îmbunătățit) (Modul EPP) - schimb bidirecţional de date. Semnalele de control al interfeței sunt generate de hardware în timpul ciclului de acces la port. Eficient atunci când lucrați cu dispozitive de memorie externe și adaptoare de rețea locale.
  • modul ECP(Port de capacitate extinsă) (Mod ECP) ​​- schimb de date bidirecțional cu posibilitatea comprimării datelor hardware folosind RLE(Run Length Encoding) și utilizarea de buffer-uri FIFO și DMA. Semnalele de control al interfeței sunt generate în hardware. Eficient pentru imprimante și scanere.

În computerele cu un port LPT pe placa de bază, modul - SPP, EPP, ECP sau o combinație a acestora - este setat în BIOS Setup. Modul de compatibilitate este pe deplin în concordanță cu portul SPP standard. Modurile rămase sunt discutate în detaliu mai jos.

1.2.1. Interfețe fizice și electrice

Standardul IEEE 1284 definește caracteristicile fizice ale receptoarelor și transmițătorilor de semnal. Specificațiile standard ale portului nu au specificat tipurile de circuite de ieșire, limitele rezistenței de sarcină sau capacitatea introdusă de circuite și conductori. La cursuri de schimb relativ scăzute, răspândirea acestor parametri nu a cauzat probleme de compatibilitate. Cu toate acestea, moduri avansate (funcțional și în ceea ce privește viteza de transmisie).

necesită specificații clare. IEEE 1284 definește două niveluri de compatibilitate a interfeței. Primul nivel(Nivelul I) este definit pentru dispozitivele care sunt lente, dar care folosesc o schimbare a direcției de transmitere a datelor. Al doilea nivel(Nivelul II) este definit pentru dispozitivele care funcționează în moduri avansate, cu viteze mari și cabluri lungi. LA emițătoare se aplică următoarele cerințe:

  • Nivelurile semnalului fără sarcină nu trebuie să depășească -0,5... +5,5 V.
  • Nivelurile semnalului la curent de sarcină de 14 mA trebuie să fie de cel puțin +2,4 V pentru un nivel ridicat (Von)și nu mai mare de +0,4 V pentru nivel scăzut (Vol) la curent continuu.
  • Impedanța de ieșire Ro măsurată la conector ar trebui să fie de 50±5 ohmi la Voh~Vol. Pentru a asigura o anumită impedanță, în circuitele de ieșire ale transmițătorului sunt utilizate rezistențe în serie. Potrivirea impedanței dintre transmițător și cablu reduce zgomotul tranzitoriu.
  • Rata de creștere (scădere) a pulsului ar trebui să fie în intervalul 0,05-0,4 V/ns.

Cerințe pentru receptori:

  • Valorile maxime admise ale semnalului sunt -2,0...+7,0 V.
  • Pragurile de răspuns nu trebuie să fie mai mari de 2,0 V (Vh) pentru un nivel ridicat și nu mai mici de 0,8 V (Vl) pentru un nivel scăzut.
  • Receptorul trebuie să aibă o histerezis între 0,2...1,2 V (microcircuite speciale au histerezis -).
  • Curentul de intrare al microcircuitului (aflux și ieșire) nu trebuie să depășească 20 μA, liniile de intrare sunt conectate la magistrala de alimentare +5 V cu o rezistență de 1,2 kOhm.
  • Capacitatea de intrare nu trebuie să depășească 50 pF.

Când a apărut specificația ECP, Microsoft a recomandat utilizarea de terminatoare dinamice pe fiecare linie de interfață. Cu toate acestea, în prezent se respectă specificația IEEE 1284, care nu folosește terminatori dinamici. Diagramele recomandate ale circuitelor de intrare, ieșire și bidirecționale sunt prezentate în Fig. 1.2.

Standardul IEEE 1284 definește trei tipuri de conectori. Tipuri A (DB-25)Și B (Centronics-36) utilizat în cablurile tradiționale de conectare la imprimante, tip CU - conector nou cu 36 de pini de dimensiuni mici.

Orez. 1.2. Circuite de terminare a liniei de interfață IEEE 1284:

a - unidirecțional, b - bidirectional

Cablurile de interfață tradiționale au între 18 și 25 de fire, în funcție de numărul de fire GND. Acești conductori pot fi sau nu împletite. Nu existau cerințe stricte pentru ecranarea cablurilor. Este puțin probabil ca astfel de cabluri să funcționeze în mod fiabil la o viteză de transfer de 2 MB/s și cu o lungime care depășește 2 m Standardul IEEE 1284 proprietățile cablurilor. Toate liniile de semnal trebuie să fie împletite cu fire separate de retur (comune).

  • Fiecare pereche trebuie să aibă o impedanță de 62±6 ohmi în intervalul de frecvență 4-16 MHz.
  • Diafonia între perechi nu trebuie să depășească 10%.
  • Cablul trebuie să aibă un ecran (folie) care să acopere cel puțin 85% din suprafața exterioară. La capetele cablului, ecranul trebuie să fie inel și conectat la contactul conectorului.

Cablurile care îndeplinesc aceste cerințe sunt marcate cu inscripția „LEEEStd 1284-1994 Compliant”. Acestea pot avea o lungime de până la 10 metri; denumirile de tip sunt date în tabel. 1.3.

1.2.2. Moduri de transfer de date

IEEE 1284 definește cinci moduri de schimb, dintre care unul corespunde pe deplin ieșirii standard a protocolului Centronics. Standardul definește o modalitate prin care software-ul poate determina modul disponibil atât pentru gazdă (PC), cât și pentru PU (sau al doilea computer atașat). Moduri de porturi non-standard care implementează protocolul de schimb Centronics hardware (Centronics rapid, modul FIFO cu port paralel), este posibil să nu fie moduri IEEE 1284, în ciuda prezenței caracteristicilor ERRȘi ESR.

Când descriem modurile de schimb, apar următoarele concepte:

  • Gazdă - un computer cu port paralel.
  • PU - dispozitiv periferic conectat la acest port.
  • Ptr - în denumirile semnalului, denotă unitatea de control de transmisie.
  • Canal direct - canal de ieșire a datelor de la gazdă la panoul de control.
  • Canal de întoarcere - canal de intrare a datelor către gazdă de la panoul de control.

Intrare în modul Nibble

Proiectat pentru schimb bidirecțional. Poate funcționa pe toate porturile standard. Porturile au 5 linii de intrare stări, folosind care PU poate trimite octeți gazdei în tetrade (nibble - nibble, 4 biți) în doi pași. Semnalul Ack#, care provoacă o întrerupere care poate fi utilizată în acest mod, corespunde bitului 6 al registrului de stare, ceea ce face dificilă manipularea biților de către software la asamblarea unui octet. Semnalele portului sunt date în tabel. 1.4, diagrame de timp - în Fig. 1.3.

Orez. 1.3. Primirea datelor în modul nibble

Recepția unui octet de date în modul nibble constă din următoarele faze:

  1. PU răspunde plasând o tetradă pe liniile de stare de intrare.
  2. PU semnalează disponibilitatea tetradei prin setarea liniei PtrClk la un nivel scăzut.
  3. Gazda setează linia HostBusy la un nivel ridicat, indicând faptul că este ocupată cu primirea și procesarea notebook-urilor.
  4. Pașii 1-5 se repetă pentru a doua tetradă, după care PU poate semnala prezența datelor pentru gazdă (Selekt) și canalul de înainte ocupat (Ocupat); declanșează o întrerupere (ACK).
a lua legatura semnal SPP I/O Pic Descriere
14 AutoFeed# O CR.1\ HostBusy - semnal de strângere de mână. Un nivel scăzut înseamnă disponibilitatea de a primi o tetradă, un nivel ridicat confirmă recepția unei tetrade
17 Selectln# O CR.3\
10 Ack# eu SR.6 PtrClk. Un nivel scăzut înseamnă că tetrada este pregătită, un nivel ridicat înseamnă un răspuns la semnalul HostBusy
11 Ocupat eu SR.7 Primește bitul de date 3, apoi bitul 7
12 RE eu SR.5 Primește bitul de date 2, apoi bitul 6
13 Sdect eu SR.4 Primește bitul de date 1, apoi bitul 5
15 Eroare# eu SR.3 Primește bitul de date 0, apoi bitul 4

Modul nibble încarcă puternic procesorul, deoarece semnalele CR și SR sunt generate de software și, prin urmare, nu este posibilă creșterea cursului de schimb peste 50 KB/s. Avantajul său neîndoielnic este că funcționează pe toate porturile. Este utilizat în cazurile în care fluxul de date este mic (de exemplu, pentru comunicarea cu imprimante). Cu toate acestea, atunci când comunicați cu adaptoare LAN, unități de disc externe și CD-ROM-uri, primirea unor cantități mari de date necesită o cantitate suficientă de răbdare din partea utilizatorului.

Modul octet bidirecțional - Modul octet

În acest mod, datele sunt primite folosind un port bidirecțional, al cărui buffer de date de ieșire poate fi dezactivat prin setarea C/?.5=1 bit. La fel ca și cele precedente, modul este controlat de software - toate semnalele de confirmare sunt analizate și setate de șofer. Semnalele portului sunt descrise în tabel. 1.5, diagrame de timp - în Fig. 1.4.

a lua legatura semnal SPP Nume în modul octet I/O Pic Descriere
1 Strobe# HostClk O CR.0\ Un impuls (scăzut) confirmă primirea unui octet la sfârșitul fiecărui ciclu
14 AutoFeed# HostBusy O CR.1\ Semnal de confirmare. Nivel scăzut înseamnă că gazda este pregătită să primească octetul; nivelul înalt este setat când se primește un octet
17 Selectln# 1284Activ O CR.3\ Nivelul înalt indică comunicarea în modul IEEE 1284 (nivel scăzut în modul SPP)
16 Init# Init# O CR.2 Nefolosit; pus sus
10 Ack# PtrClk eu SR.6 Setați la un nivel scăzut pentru a indica date valide pe liniile de date. Nivelul este setat la un nivel scăzut ca răspuns la semnalul HostBusy
11 Ocupat PtrBusy eu SR.7\ Redirecționați starea canalului ocupat
12 P.E. AckDataReq* 1 SR.5
13 Selectați Xflag* eu SR.4 Steagul de extensibilitate
15 Eroare# DataAvail#* eu SR.2 PU este instalat pentru a indica prezența unui canal de transmisie inversă
2-9 Date Date I/O D.R. Canal de date bidirecțional (înainte și invers).

Orez. 1.4. Primirea datelor în modul byte

Fazele recepției octeților de date:

  1. Gazda își semnalează disponibilitatea de a primi date setând linia HostBusy la un nivel scăzut.
  2. PU răspunde plasând un octet de date pe linia de date.
  3. PU semnalează validitatea octetului setând linia PtrClk la un nivel scăzut.
  4. Gazda merge sus pe linia HostBusy, indicând că este ocupată cu primirea și procesarea unui octet.
  5. Panoul de control răspunde setând linia PtrClk la mare.
  6. Gazda confirmă primirea octetului cu un impuls HostClk.
  7. Pașii 1-6 se repetă pentru fiecare octet următor.

Modul octet cu octet vă permite să creșteți viteza canalului invers la viteza canalului înainte în modul standard. Oricum ar putea funcționa numai pe porturile bidirecționale.

modul EPP

Protocol ERR(Enhanced Parallel Port) a fost dezvoltat de Intel, Xircom și Zenith Data Systems cu mult înainte de adoptarea IEEE 1284. Este conceput pentru a îmbunătăți performanța comunicațiilor cu port paralel. ERR a fost implementat în chipset-ul Intel 386SL (cip 82360) și a fost ulterior adoptat de multe companii ca protocol opțional de port paralel. Versiunile protocolului implementat înainte de adoptarea IEEE 1284 diferă de standardul actual (vezi mai jos).

Protocol ERR oferă patru tipuri de cicluri de schimb:

  • înregistrarea datelor;
  • citirea datelor;
  • înregistrarea adresei;
  • citind adresa.

Scopul ciclurilor de scriere și citire a datelor este evident. Ciclurile de adresă sunt folosite pentru a transmite informații despre adresă, canal și control. Ciclurile de schimb de date diferă de ciclurile de adrese prin semnalele stroboscopice utilizate. Atribuire semnal port ERRși legătura lor cu semnalele SPP sunt explicate în tabel. 1.6.

a lua legatura semnal SPP Nume în URR I/O Descriere
1 stroboscopic" Scrie# O Nivel scăzut - ciclu de scriere, ciclu ridicat - citire
14 AutoLF# DataStb# O Strobe de date. Nivelul scăzut este setat în ciclurile de date
17 Selectarea AdrStbft O Adresă stroboscopică. Nivelul scăzut este setat în ciclurile de adrese
16 Init# Resetare# O Resetare (PU de nivel scăzut trece în modul de compatibilitate)
10 Ack# INTR# eu Întreruperea de la PU
11 Ocupat Aștepta# eu Semnal de confirmare. Un nivel scăzut permite începerea ciclului (setarea stroboscopului la un nivel scăzut), trecerea la un nivel înalt permite finalizarea ciclului (eliminarea stroboscopului)
2-9 Date ANUNȚ I/O Adresă bidirecțională/bus de date
12 Sfârșit hârtie AckDataReq* eu
13 Selectați Xflag* eu Folosit la discreția dezvoltatorului periferic
15 Eroare# DataAvail#* eu Folosit la discreția dezvoltatorului periferic
* Semnalele funcționează într-o secvență de potrivire (vezi mai jos).

Port EPP Are set de registre extinse(Tabelul 1.7), care ocupă 5-8 octeți adiacenți în spațiul de intrare/ieșire.

Înregistrați numele Părtinire Modul R/V Descriere
Port de date SPP +0 SPP/PPE W Registrul de date SPP
Port de stare SPP +1 SPP/PPE R Registrul de stare SPP
Port de control SPP +2 SPP/PPE W Registrul de control SPP
Port Adresă EPP +3 EPP R/V Registrul adresei EPP. Citirea sau scrierea pe acesta generează un ciclu asociat de citire sau scriere a adresei EPP
Port de date EPP +4 EPP R/V Registrul de date al PPE. Citire (scriere) generează un ciclu de citire (scriere) de date asociat EPP
Nedefinit +5...+7 EPP N / A Poate fi folosit pentru I/O pe 16/32 biți pe unele controlere

Spre deosebire de modurile controlate de software descrise mai devreme, semnalele externe de port EPP pentru fiecare ciclu de schimb sunt generate în hardware printr-o operație de scriere sau citire în registrul de porturi. În fig. 1.5 prezintă o diagramă ciclu de înregistrare date care ilustrează ciclul de schimb extern, cuibăritîn ciclul de scriere a magistralei sistemului procesorului (uneori aceste cicluri sunt numite legate de). Ciclul de scriere a adresei diferă de ciclul de date numai prin stroboscopul interfeței externe.

Ciclul de înregistrare a datelor constă din următoarele faze:

  1. Programul efectuează o buclă de ieșire (IOWR#) la portul 4 (EPP Port de date).
  2. Adaptorul setează semnalul Write* (scăzut) și datele sunt plasate pe magistrala de ieșire a portului LPT.
  3. Când Wait# este scăzut, stroboscopul de date este setat.
  4. Portul așteaptă confirmarea de la PU (traducerea Wait# la nivel înalt).
  5. Strobecul de date este eliminat - ciclul extern EPP se încheie.
  6. Ciclul procesorului de ieșire se încheie.
  7. PU setează Wait# low, indicând posibilitatea de a începe următorul ciclu.

Orez. 1.5. Ciclul de înregistrare a datelor EPP

Exemplu de adresa ciclu de citire prezentată în fig. 1.6. Ciclul de citire a datelor diferă numai prin utilizarea unui semnal stroboscopic diferit.


Orez. 1.6. Ciclul de citire a adresei EPP

Desigur, unitatea de control nu ar trebui să „atârne” procesorul pe ciclul de schimb al magistralei. Acest lucru este asigurat de un mecanism de timeout al PC-ului care forțează să se termine orice ciclu de comunicare care durează mai mult de 15 µs. Într-o serie de implementări ERR timeout-ul interfeței este monitorizat de adaptorul însuși - dacă PU nu răspunde într-un anumit timp (5 μs), ciclul se oprește și o eroare este înregistrată în registrul suplimentar de stare a adaptorului (nestandardizat).

Dispozitive cu interfață ERR, dezvoltat înainte de adoptarea IEEE 1284, diferă la începutul ciclului: stroboscopul DataStb# sau AddrStb# este setat indiferent de starea WAIT#. Aceasta înseamnă că PU nu poate întârzia începerea următorului ciclu (deși îl poate prelungi pentru timpul necesar). Această specificație se numește EPP 1.7(propus de Xircom). Acesta este ceea ce a fost folosit în controlerul 82360 cu periferice compatibile ERR 17, va funcționa bine și cu un controler EPP 1284, dar periferia este standard EPP 1284 poate refuza să lucreze cu controlorul ERR 1.7.

CU software Dintr-un punct de vedere, controlerul de port EPP pare simplu (vezi Tabelul 1.7). Două registre au fost adăugate la cele trei registre ale portului standard, care au offset-uri 0, 1 și 2 în raport cu adresa de bază a portului (Port Adresă EPPȘi Port de date EPP), citirea și scrierea la care provoacă generarea buclelor exterioare asociate.

Scopul registrelor portului standard este păstrat pentru compatibilitatea portului fPP cu unitățile de control și software-ul conceput pentru utilizarea schimbului controlat de software. Deoarece semnalele de strângere de mână ale adaptorului sunt generate în hardware, atunci când scrieți în registrul de control JV biții 0, 1 și 3 corespunzători semnalelor Strobeft, AutoFeed# și Selecting trebuie setați la zero. Intervenția software ar putea perturba secvența de confirmare. Unele adaptoare au caracteristici speciale de protecție (Protecție ERP), când este activată, modificarea software-ului acestor biți este blocată.

Utilizarea registrului de date ERR vă permite să transferați un bloc de date folosind o singură instrucțiune REP INSB sau REP OUTSB. Unele adaptoare permit Acces pe 16/32 biți la registrul de date ERR.În acest caz, adaptorul pur și simplu decriptează adresa cu un offset în intervalul 4-7 ca adresa registrului de date ERR, dar raportează procesorului că lățimea este de 8 biți. Apoi un acces pe 16 sau 32 de biți la adresa registrului de date ERR va genera automat două sau patru bucle de magistrală la adrese în creștere, începând cu offset 4. Aceste bucle se vor executa mai rapid decât același număr de bucle simple. Aceasta oferă performanță de până la 2 MB/s, suficientă pentru adaptoare LAN, unități externe, streamere și unități CD-ROM. Cicluri de adrese ERR sunt întotdeauna executate numai în modul pe un singur octet.

O caracteristică importantă ERR este că procesorul accesează unitatea de control în timp real - nu există tamponare. Driverul este capabil să monitorizeze starea și să emită comenzi la momente cunoscute cu precizie. Ciclurile de citire și scriere pot alterna în ordine aleatorie sau pot apărea în blocuri. Acest tip de schimb este convenabil pentru unități de control sensibile la majuscule sau PU care operează în în timp real - adaptoare de rețea, dispozitive de colectare și control a informațiilor etc.

modul ECP

Protocol ESR(Extended Capability Port - un port cu capabilități extinse) a fost propus de Hewlett Packard și Microsoft pentru comunicarea cu dispozitive de control precum imprimante sau scanere. Ca ERR, Acest protocol oferă un schimb de date bidirecțional de înaltă performanță între gazdă și unitatea de control.

Protocol ESRîn ambele direcții oferă două tipuri de cicluri:

  • cicluri de scriere și citire a datelor;
  • scrie și citește cicluri de comandă.

Ciclurile de comandă sunt împărțite în două tipuri: transferul adresei canalului și transferul contorului RLC(Numărarea lungimii cursei).

Spre deosebire de ERR,împreună cu protocolul ESR Imediat a apărut un standard pentru modelul de software (registru) al adaptorului său, prezentat în documentul „Protocolul de port IEEE 1284 Extended Capabilities and ISA Interface Standard” de la Microsoft. Acest document definește proprietățile protocolului nespecificate de standardul IEEE 1284:

  • compresia datelor de către adaptorul gazdă folosind metoda RLE;
  • Buffering FIFO pentru canalele înainte și înapoi;
  • aplicarea DMA și I/O software.

Metoda de compresie în timp real RLE(Run-Length Encoding) vă permite să obțineți un raport de compresie de 64:1 atunci când transmiteți imagini raster care au șiruri lungi de octeți care se repetă. Comprimarea poate fi utilizată numai dacă atât gazda, cât și PU o acceptă.

Adresarea canalului ECP utilizat pentru a adresa mai multe dispozitive logice incluse într-un singur dispozitiv fizic. De exemplu, un dispozitiv combinat fax/imprimantă/modem care este conectat la un singur port paralel poate primi simultan un fax și imprima la imprimantă. În modul SPP, Dacă imprimanta setează un semnal de ocupat, canalul va fi ocupat cu date până când imprimanta le acceptă. În modul ESR driverul software este pur și simplu adresat altuia canal logic acelasi port.

Protocol ESR anulează semnalele SPP(Tabelul 1.8).

a lua legatura semnal SPP Numele în ESR I/O Descriere
1 Strobe# HostClk O Folosit împreună cu PeriphAck pentru transmisie directă (ieșire)
14 AutoLF# HostAck O Indică tipul ciclului (comandă/date) la transmiterea în direcția înainte. Folosit împreună cu PeriphClk pentru transmisia inversă
17 Selectarea 1284Activ O Un nivel ridicat indică comunicarea în modul IEEE 1284 (în SPP nivel scăzut)
16 Init# ReverseRequest* O Nivelul scăzut comută canalul la transmisia inversă
10 Ack# PeriphQk eu Folosit împreună cu HostAck pentru transfer în sens invers
11 Ocupat PeriphAck eu Folosit împreună cu HostClk pentru transfer în sens invers. Indică tipul de comandă/date atunci când sunt transmise în sens invers
12 Sfârșit hârtie AckReverse# eu Condus scăzut ca confirmare a semnalului ReverseRequest#
13 Selectați Xflag* eu Steagul de extensibilitate
15 Eroare# PeriphRequest#* eu PU este instalat pentru a indica disponibilitatea (prezența) canalului de transmisie inversă*
2-9 Date Date I/O Canal de date bidirecțional
* Semnalele funcționează într-o secvență de potrivire (vezi mai jos).

Adaptor ESR generează, de asemenea, semnale de protocol extern de strângere de mână în hardware, dar funcționarea acestuia diferă semnificativ de modul ERR.

În fig. Figura 1.7a prezintă o diagramă a două cicluri înainte: un ciclu de date urmat de un ciclu de comandă. Tipul circuitului este setat de nivelul de pe linia HostAck: în ciclul de date - ridicat, în ciclul de comandă - scăzut. Într-un ciclu de instrucțiuni, un octet poate conține adresa canalului sau contor RLE. O caracteristică distinctivă este bitul 7 (cel mai semnificativ): dacă este zero, atunci biții 0-6 conțin un contor RLE(0-127), dacă este singur, atunci adresa canalului. În fig. Figura 1.76 prezintă o pereche de bucle postback.

Orez. 1.7. Transmisie în modul ECP: A- direct, b - invers

Spre deosebire de diagramele de schimb ERR,în fig. 1.7 nu afișează semnalele ciclului magistralei sistemului procesorului. În acest mod, schimbul de program cu unitatea de control este împărțit în două procese relativ independente, care sunt conectate printr-un buffer FIFO. Comunicarea driverului cu bufferul FIFO poate fi realizată folosind fie DMA, fie I/O software. Adaptorul schimbă PU cu tamponul din hardware ESR.Șofer în modul ESR nu are informații despre starea exactă a procesului de schimb, dar ceea ce este de obicei important aici este dacă acesta este finalizat sau nu.

Transmitere directă datele de pe interfața externă constau din următorii pași:

  1. Gazda plasează datele pe magistrala canalului și setează indicatorul ciclului de date (nivel înalt) sau steag de comandă (nivel scăzut) pe linia HostAck.
  2. Gazda setează linia HostClk la un nivel scăzut pentru a indica date valide.
  3. Panoul de control răspunde setând linia PeriphAck la un nivel ridicat.
  4. Gazda trage linia HostClk sus, iar această margine poate fi folosită pentru a bloca datele în PU.
  5. PU setează linia PeriphAck la un nivel scăzut pentru a indica faptul că este gata să primească următorul octet.

De la transferul la ESR are loc prin intermediul bufferelor FIFO, care pot fi prezente pe ambele părți ale interfeței, este important să înțelegem în ce stadiu datele pot fi considerate transferate. Datele sunt luate în considerare transmiseîn pasul 4 când linia HostClk devine ridicată. În acest moment se modifică contoarele de octeți transmisi și recepționați. În protocol ESR există condiții care fac ca comunicarea să se oprească între pașii 3 și 4. Atunci aceste date nu trebuie considerate ca fiind transferate.

Din fig. 1.7 este vizibilă o altă diferență ESR din ERR. Protocol ERR Permite șoferului să alterneze ciclurile înainte și înapoi fără a cere confirmarea pentru schimbarea direcției. ÎN schimbarea direcției VSH trebuie negociat: gazda solicită inversarea setând ReverseRequest#, după care trebuie să aștepte confirmarea cu semnalul AckReverse#. Deoarece bucla anterioară ar fi putut fi executată prin acces direct, șoferul trebuie să aștepte ca accesul direct să îl completeze sau să îl întrerupă, să descarce bufferul FIFO, determinând valoarea exactă a contorului de transfer de octeți și abia apoi să solicite o inversare.

Postback datele constau din următorii pași:

  1. Gazda solicită o inversare a canalului trăgând la jos linia ReverseRequest#.
  2. Panoul de control permite schimbări de direcție prin setarea liniei AckReverse# la un nivel scăzut.
  3. PU plasează date pe magistrala canalului și setează indicatorul ciclului de date (nivel înalt) sau indicatorul de comandă (nivel scăzut) pe linia PeriphAck.
  4. PU reduce linia PeriphClk, indicând că datele sunt valide.
  5. Gazda răspunde setând linia HostAck la mare.
  6. PU setează linia PeriphClk ridicată; această margine poate fi folosită pentru a trimite date către gazdă.
  7. Gazda reduce linia HostAck pentru a indica faptul că este gata să primească următorul octet.

Moduri și registre ale portului ECP *

* Acest mod nu este inclus în specificația Microsoft, dar este interpretat ca EPP de controlerul SMC FDC37C665/666 și de multe altele.

Interfata de programare si registre ESR Adaptoarele IEEE 1284 sunt definite de specificația Microsoft. Modurile în care poate funcționa adaptorul sunt definite (Tabelul 1.9). Ele sunt specificate de câmp Modul Inregistreaza-te ECR(biți ).

Înregistrați modelul adaptorului ESR(Tabelul 1.10) folosește proprietățile arhitecturii magistralei standard și adaptoarelor ISA - doar cele 10 linii de ordin inferioară ale magistralei de adrese sunt folosite pentru a decripta adresele porturilor I/O. Prin urmare, de exemplu, apelurile la adrese Port, Port+400h, Port+800h... vor fi percepute ca adrese către adresa port, situată în intervalul 0-3FFh. PC-urile și adaptoarele moderne decodifică mai mulți biți de adresă, astfel încât apelurile la adresele 0378h și 0778h vor fi adresate la două registre diferite. Plasarea registrelor suplimentare ESR„în spatele” registrelor portului standard (offset 400-402h) servește două scopuri. În primul rând, aceste adrese nu au fost niciodată folosite de adaptoarele tradiționale și driverele acestora și utilizarea lor în ESR nu va reduce spațiul de adrese I/O disponibil. În al doilea rând, acest lucru asigură compatibilitatea cu adaptoarele mai vechi la nivelul modurilor 000-001 și capacitatea de a determina prezența unui adaptor ECP încercând să acceseze registrele sale extinse.

Modul Nume Descriere
000 SPPmode Modul standard (tradițional).
001 Mod bidirecțional Port bidirecțional (Tip 1 pentru PS/2)
010 Centronic rapid Unidirecțional folosind FIFO și DMA
011 Modul ECP Parallel Port ECP
100 Modul EPP Parallel Port* Trecerea la modul EPP
101 Rezervat -
110 Modul de testare Testarea funcționării FIFO și întreruperi
111 Modul de configurare Accesarea registrelor de configurare

Fiecare mod ECP registrele lor de funcții corespund (și sunt accesibile). Comutarea modurilor se realizează prin scrierea în registru ECR. Modurile „standby” activate în mod implicit sunt 000 sau 001. În oricare dintre ele, modul de introducere a ciugulilor funcționează. Din aceste moduri puteți comuta oricând la oricare altul, dar din modurile superioare (010-111) comutarea este posibilă doar la 000 sau 001. Pentru ca interfața să funcționeze corect, înainte de a ieși din modurile superioare, trebuie să așteptați până la accesul direct. schimbul este finalizat și tamponul FIFO este șters.

ÎN modul 000 (SPP) portul funcționează ca un standard unidirecțional controlat de software SPP.

ÎN modul 001 (Bi-Di PS/2) portul funcționează ca un port PS/2 bidirecțional de tip 1. Diferă de modul 000 prin capacitatea de a inversa canalul de date cu bit CR.5.

Modul 010 (Centronic rapid) Proiectat pentru ieșire FIFO de înaltă performanță folosind numai DMA. Semnale de protocol de strângere de mână Ceritromcs sunt generate de hardware. Semnalul de solicitare de întrerupere este generat pe baza stării buffer-ului FIFO, dar nu pe semnalul Ask# (driverul de ieșire bloc rapid „nu este interesat de o cerere de un singur octet”).

Modul 011 este regimul propriu-zis ESR, descris mai devreme. Fluxul de date și comenzi transmise unității de control este plasat într-un buffer FIFO prin registre ECPDFIFOȘi ECPAFIFO respectiv. Din FIFO, acestea sunt scoase cu semnul ciclului corespunzător (starea liniei HostAck). Fluxul de date primit de la PU este extras din bufferul FIFO printr-un registru ECPDFIFO. Nu este prevăzută primirea adresei în ciclul de comandă de la unitatea de control. Schimb cu registru ECPDFIFO se poate face și printr-un canal DMA.

Compresie folosind metoda RLEîn timpul transmisiei se execută programatic. Pentru a transfera mai mult de doi octeți identici de date la rând într-un registru ECPAFIFO este scris un octet ai cărui 7 biți inferiori conțin un numărător RLC(RLC=127 corespunde la 128 de repetări), iar cel mai semnificativ bit este zero. După aceea în ECPDFIFO octetul în sine este scris. Prin urmare, este evident că eliberarea datelor folosind compresia și DMA simultan este imposibilă. Primind această pereche de octeți (octet de comandă și octet de date), PU efectuează decompresie. La primirea fluxului de la adaptorul PU ESR decompresia este efectuată în hardware și plasează datele deja decomprimate în bufferul FIFO.

Modul 100 (ERP) - una dintre modalitățile de a activa modul ERR.

Modul 110 (modul de testare) conceput pentru testarea interacțiunilor FIFO și întrerupere. Datele pot fi transferate către/din registru TFIFO cu folosind DMA sau programatic. Schimbul nu afectează interfața externă. Adaptorul efectuează operațiuni inactiv la viteza maximă a interfeței (ca și cum semnalele de strângere de mână sosesc fără întârziere). Adaptorul monitorizează starea tamponului și generează semnale de solicitare de întrerupere, după cum este necesar. În acest fel, programul poate determina capacitatea maximă a canalului.

Modul 111 (modul de configurare) concepute pentru a accesa registrele de configurare. Selectarea modului protejează adaptorul și protocolul de modificările incorecte ale configurației în timpul procesului de schimb.

Părtinire Nume R/V moduri ECP* Nume
000 D.R. R/V 000-001 Registrul de date
000 ECPAF1FO R/V 011 ECP Adresa FIFO
001 S.R. R/V Toate Registrul de stare
002 CR R/V Toate Registrul de control
400 SDFIFO R/V 010 Paralel Pwt Data FIFO
400 ECPDFIFO R/V 011 ECP Data FIFO
400 TFIFO R/V 110 Testează FIFO
400 CNFGA R 111 Registrul de configurare A
401 CNFGB R/V 111 Registrul de configurare B
402 ECR R/V Toate Registrul de control extins
* Registrele sunt disponibile numai în modurile specificate (modul este setat de biții 7-5 ai registrului ECR).

Registrul de date DR utilizat pentru transmiterea datelor numai în moduri controlate de software (000 și 001).

Registrul de stare SR transmite semnificația semnalelor pe liniile corespunzătoare (ca în SPP).

Registrul de control CR are aceeași atribuire de biți ca SPP.În modurile 010, 011, scrierea la biții 0, 1 (semnale AutoLF# și Strobe#) este ignorată.

Registrul ECPAFIFO servește la stocarea informațiilor ciclului de comandă (adresa canalului sau contor RLE,în funcție de bitul 7) în bufferul FIFO. Informațiile din buffer vor fi scoase în bucla de comandă de ieșire.

Registrul SDFIFO utilizat pentru transferul de date în modul 010. Datele scrise în registru (sau trimise prin canalul DMA) sunt transferate prin bufferul FIFO folosind un protocol hardware Centronics.În acest caz, trebuie specificată direcția de transmisie înainte (bit CR.5=0).

Registrul DFIFO utilizat pentru schimbul de date în modul 011 (ESR). Datele scrise sau citite dintr-un registru (sau transferate pe un canal DMA) sunt transferate prin intermediul tamponului FIFO de către protocol ESR.

registrul TFIFO oferă un mecanism pentru testarea bufferelor FIFO în modul 110.

Registrul ECPCFGA vă permite să citiți informații despre adaptor (cod de identificare în biți).

Registrul ECPCFGB stochează informațiile necesare șoferului. Scrierea în registru nu afectează funcționarea portului.

registru ECR - registrul principal ESR.

Scopul biților registrului ECR este:

  • ECR -MOD ECR - setează modul ESR.
  • ECR.4 - ERRIINTREN^t(Error Interrupt Disable) - dezactivează întreruperile semnalului Error# (când valoarea bitului este zero, este generată o solicitare de întrerupere pe marginea negativă pe această linie).
  • ECR.3 - DMAEN(DMA Enable) - permite schimbul prin canalul DMA.
  • ECR.2 - SERVICEINTR(Service Interrupt) - dezactivează întreruperile de serviciu care sunt generate la sfârșitul ciclului DMA (dacă este activată), la pragul de umplere/golire a tamponului FIFO (dacă nu este utilizat DMA) și la o eroare de depășire a tamponului deasupra sau mai jos.
  • ECR.1 - FIFOFS(FIFO Full Status) - semnalează când tamponul este plin; când FIFOFS=1 nu există un singur octet liber în buffer.
  • ECR.0 - FIFOES(FIFO Empty Status) - indică golirea completă a bufferului; combinaţie FIFOFS=FIFOES=iînseamnă o eroare în lucrul cu FIFO (depășire în partea de sus sau de jos).

Când portul este în modul standard sau bidirecțional (000 sau 001), primele trei registre sunt exact aceleași cu registrele portului standard. Acest lucru asigură că driverul este compatibil cu adaptoarele vechi și driverele vechi cu adaptoare noi.

În ceea ce privește interfața cu programul, portul ECP seamănă cu EPP: după setarea modului (scrierea codului în registru ECR) Schimbul de date cu dispozitivul se reduce la citirea sau scrierea în registrele corespunzătoare. Starea tamponului FIFO este monitorizată fie prin registru ECR, sau pentru întreruperile de service din port. Întregul protocol de strângere de mână este generat de adaptor în hardware. Schimb de date cu ESR - portul (cu excepția software-ului explicit) este posibil și prin acces direct la memorie (canal DMA), care este eficient atunci când se transferă blocuri mari de date.

1.2.3. IEEE 1284 Mode de negociere

Controlerele din standardul IEEE 1284 nu necesită de obicei controlerului să implementeze toate modurile prevăzute de standard. Pentru a determina modurile și metodele de control al unui anumit dispozitiv, standardul prevede secvența de negociere. Secvența este concepută astfel încât dispozitivele mai vechi care nu sunt proiectate să utilizeze IEEE 1284 să nu răspundă la aceasta, iar controlerul va rămâne în modul standard. Perifericele IEEE 1284 își pot raporta capacitățile, iar controlerul va seta un mod care satisface atât gazda, cât și PU.

În timpul fazei de negociere, controlorul pune linia de date octet de extensibilitate, solicitând confirmarea trecerii interfeței în modul dorit sau primirea identificatorului CP (Tabelul 1.11). Identificatorul este transmis controlerului în modul solicitat (orice mod de canal invers, cu excepția ERR). PU folosește semnalul Xflag (Selectați în termeni SPP) pentru a confirma modul de canal invers solicitat, altul decât nibble. Modul Nibble este acceptat de toate dispozitivele IEEE 1284 Bit Solicitare link de extensibilitate va servi la definirea unor moduri suplimentare în viitoarele extensii ale standardului.

Pic Descriere Combinații de biți valide
7 Solicitare link de extensibilitate - rezervat 10000000
6 Solicitare mod ERR 01000000
5 Solicitare mod ESR cu RLE 00110000
4 Solicitare mod ESR fără RLE 00010000
3 Rezervat 00001000
2 Solicitarea unui ID de dispozitiv cu un răspuns în modul:
ciuguli 00000100
octet 00000101
ESR fără RLE 00010100
ECP cu RLE 0011 0100
1 Rezervat 00000010
0 Solicitare mod ronțăit 00000001
nici unul Solicitare modul byte 00000000

Secvența de negociere(Fig. 1.8) constă din următorii pași:

  1. Gazda emite octetul de extensibilitate pe liniile de date.
  2. Gazda setează semnalul Selecting la un nivel ridicat și semnalul AutoFeed# la un nivel scăzut, indicând începutul secvenței de negociere.
  3. Panoul de control răspunde setând semnalul Ack# scăzut și ridicat - Errorft, PaperEnd și Select. Un dispozitiv care nu „înțelege” standardul 1284 nu va răspunde și pașii suplimentari nu vor fi finalizați.
  4. Gazda setează semnalul Strobe# la un nivel scăzut pentru a scrie octetul de extensibilitate în PU.
  5. Gazda setează semnalele Strobeft și AutoLF# la un nivel ridicat.
  6. PU răspunde setând semnalele PaperEnd și Eggrog^ la un nivel scăzut dacă PU are un canal de transmisie inversă a datelor. Dacă modul solicitat este acceptat de dispozitiv, linia Selectare este setată la un nivel înalt, dacă nu este acceptată, este setată la un nivel scăzut.
  7. PU setează linia Ack# la mare pentru a indica finalizarea secvenței de strângere de mână, după care controlerul setează modul de operare necesar.


Orez. 1.8. Secvența de negociere a modului IEEE 1284

1.2.4. Dezvoltarea standardului IEEE 1284

Pe lângă standardul principal IEEE 1284, care a fost deja adoptat, noi standarde sunt în curs de dezvoltare pentru a-l completa. Acestea includ:

  • IEEE P1284.1„Standard pentru Tehnologia Informației pentru Interfața Imprimantă/Scaner Independent de Transport (TIP/SI)”. Acest standard este dezvoltat pentru gestionarea și întreținerea scanerelor și imprimantelor pe baza protocolului NPAP (Network Printing Alliance Protocol).
  • IEEE P1284.2„Standard pentru testare, măsurare și conformitate cu IEEE Std. 1284” - un standard pentru testarea porturilor, cablurilor și dispozitivelor pentru conformitatea cu IEEE 1284.
  • IEEE P12843„Standard pentru extensii de interfață și protocol la IEEE Std. 1284 Compliant Peripheral and Host Adapter Ports” - un standard pentru drivere și utilizarea dispozitivelor prin aplicații software (software). Specificațiile BIOS sunt deja acceptate pentru utilizare ERR Drivere DOS. Se dezvoltă un standard pentru utilizarea în comun a unui port de către un lanț de dispozitive sau un grup de dispozitive conectate printr-un multiplexor.
  • IEEE P1284.4„Standard for Data Delivery and Logical Channels for IEEE Std. 1284 Interfaces” își propune să implementeze un protocol de pachete pentru transmisia fiabilă a datelor pe un port paralel. Baza este protocolul MLC (Multiple Logical Channels) de la Hewlett-Packard, dar compatibilitatea cu acesta în versiunea finală a standardului nu este garantată.

1.3. Aplicarea de interfețe paralele și porturi LPT

Interfețele paralele sunt utilizate în calculatoare din diferite familii și clase, aici ne vom limita la calculatoarele compatibile cu PC-uri IBM.

1.3.1. Utilizarea interfețelor paralele

O aplicație comună a unui port LPT este conectarea unei imprimante și a unui plotter. Să ne oprim asupra aspectelor hardware - modul port și cablul de conectare. Aproape toate imprimantele pot funcționa cu portul în modul SPP, dar utilizarea modurilor avansate are avantajele sale:

  • Mod bidirecțional (Bi-Di) Nu îmbunătățește performanța, dar oferă informații despre starea și setările imprimantei.
  • Moduri de viteză (Centronic rapid)îmbunătăți performanța imprimantei, dar poate necesita un cablu de calitate (vezi mai jos). Imprimanta nu necesită capacități suplimentare „inteligente”.
  • Modul ESR - potențial cel mai eficient, are suport de sistem în toate versiunile de Windows. Pe unele imprimante nu este implementat complet (s-ar putea să nu existe compresie hardware). ESR acceptă imprimantele HP DeskJet bxx, LaserJet 4 și modelele moderne Lexmark ulterioare. Necesită utilizarea unui cablu ale cărui proprietăți de frecvență corespund cu IEEE 1284.

Cea mai simplă variantă cablu de conectare la imprimantă - Cablu cu 18 fire cu fire nerăsucite. Este folosit pentru a opera în SPP. Cu o lungime mai mare de 2 m, este de dorit ca cel puțin liniile Strobe# și Busy să fie împletite cu fire comune separate. Poate fi nepotrivit pentru modurile de mare viteză, iar defecțiunile pot apărea neregulat și numai cu anumite secvențe de coduri transmise. Sunt cabluri Centronici, care nu au o conexiune între pinul 17 al conectorului PC și pinul 36 al conectorului imprimantei. Dacă încercați să conectați o imprimantă 1284 folosind acest cablu, va apărea un mesaj care vă va spune că trebuie să utilizați un „cablu bidirecțional”. Imprimanta nu poate spune sistemului că acceptă moduri avansate, ceea ce se așteaptă driverele de imprimantă.

Cablurile panglică, în care circuitele de semnal (semnale de control) alternează cu fire comune, au proprietăți electrice bune. Dar utilizarea lor ca interfață externă este nepractică (nu există un al doilea strat protector de izolație, vulnerabilitate ridicată) și inestetică (cablurile rotunde arată mai bine).

Opțiunea ideală sunt cablurile în care toate liniile de semnal sunt împletite cu fire comune și închise într-un ecran comun - ceea ce este cerut de IEEE 1248. Astfel de cabluri sunt garantate să funcționeze la viteze de până la 2 MB/s, lungimea lor putând ajunge la 10 m.

În tabel 1.12 arată cablarea cablu de conectare la imprimantă Conector tip XI A(DB25-P) Partea PC și tip X2 B (Centronics-36) sau tip CU(miniatură) din partea imprimantei. Utilizarea firelor comune (GND) depinde de calitatea cablului (vezi mai sus). În cel mai simplu caz (cablu cu 18 fire), toate semnalele GND sunt combinate într-un singur fir. Cablurile de înaltă calitate necesită un fir de retur separat pentru fiecare linie de semnal, dar nu există suficienți pini în conectorii A și B pentru aceasta (vezi Tabelul 1.12, unde numerele de pini ale pinii conectorului PC de tip A cărora le corespund firele de retur) sunt indicate în paranteze). Conectorul de tip C are un fir de retur (GND) pentru fiecare cale de semnal; Pinii de semnal 1-17 ai acestui conector corespund pinii GND 19-35.

XI, conector PC tip A Semnal X2, conector PRN tip B X2, conector PRN tip C
1 Strobe# 1 15
2 Date 0 2 6
3 Date 1 3 7
4 Date 2 4 8
5 Date 3 5 9
6 Date 4 6 10
7 Date 5 7 11
8 Date 6 8 12
9 Date7 9 13
10 Ack# 10 3
11 Ocupat 11 1
12 Sfârșit hârtie 12 5
13 Selectați 13 2
14 AutoLF# 14 17
15 Eroare* 32 4
16 lnit# 31 14
17 Selectarea 36 16
18 GND(1) 19 33
19 GND (2 3) 20 21 24 25
20 GND (4 5) 22 23 26 27
21 GND (6 7) 24 25 28 29
22 GND (8 9) 26 27 30 31
23 GND (11 15) 29 19 22
24 GND (10 12 13) 28 20 21 23
25 GND (14 16 17) 30 32 34 35

Un număr de imprimante autohtone (și foste țări CMEA) au o interfață IRPR (IFSPîn documentația pentru imprimantele ROBOTRON). Este o rudă apropiată a interfeței Centronici, dar cu următoarele diferențe:

  • Liniile de date sunt inversate. Protocolul de strângere de mână este ușor diferit.
  • Perechile de rezistențe potrivite sunt conectate la toate liniile de intrare (pe imprimantă): 220 ohmi la sursa de +5 V și 330 ohmi la firul comun. Acest lucru permite utilizarea cablurilor lungi, dar supraîncarcă majoritatea adaptoarelor de interfață pentru PC.
  • Nu există semnale de eroare sau de sfârșit de hârtie.

Interfața IRPR poate fi implementată în software printr-un port LPT obișnuit, dar pentru a elimina supraîncărcarea liniilor de ieșire, este recomandabil să scoateți rezistențele de terminare din imprimantă. Un port care este supraîncărcat cu ieșiri poate prezenta tot felul de surprize (neplăcute și greu de diagnosticat, desigur).

Pentru a conecta două computere Interfața paralelă folosește cabluri diferite în funcție de modurile porturilor utilizate. Cel mai simplu și mai lent este modul nibble, care rulează toata lumea porturi. Pentru acest mod, este suficient să aveți 10 semnal și un fir comun în cablu. Cablajul conectorilor cablurilor este prezentat în tabel. 1.13. Comunicarea între două PC-uri cu acest cablu este acceptată de software standard, cum ar fi Interink de la MS-DOS sau Norton Commander.

Pentru mașini PS/2 cu bidirectional port, IBM a produs un dispozitiv de tranziție complet cu programul Data Migration Facility. Adaptorul a fost instalat pe conectorul portului PS/2 LPT și pe conectorul său de tip X2 Centronics a fost conectat un cablu obișnuit de imprimantă, conectat la portul LPT al oricărui PC. Aceasta a fost o soluție propusă la problema transferului de fișiere de la computerele vechi echipate cu unități de 5" la computere PS/2 cu unități de 3,5". Cablajul unui astfel de adaptor este prezentat în tabel. 1.14. După cum puteți vedea, acest adaptor nu poate fi utilizat atunci când comunicați prin Interink sau Norton Commander. Dacă ambele mașini care urmează să fie conectate au porturi bidirecționale, adaptorul asigură o comunicare bidirecțională simetrică. Viteza de schimb este de 2 ori mai mare decât conexiunea nibble descrisă mai sus. Această conexiune nu respectă modul bidirecțional IEEE 1284.

XI, conector PC#1 X2, conector PC#2
Pic a lua legatura a lua legatura Pic
DR.O 2 15 SR.3
DR.1 3 13 SR.4
DR.2 4 12 SR.5
DR.3 5 10 SR.6
DR.4 6 11 SR.7
SR.6 10 5 DR.3
SR.7 11 6 DR.4
SR.5 12 4 DR.2
SR.4 13 3 DR.1
SR.3 15 2 DR.O
GND 18-25 18-25 GND

Conectori XI și X2 - DB25-P (fișe).

XI X2
a lua legatura Pic Pic a lua legatura
1 CR.0 SR.6 10
2 DR.0 DR.0 2
3 DR.1 DR.1 3
4 DR.2 DR.2 4
5 DR.3 DR.3 5
6 DR.4 DR.4 6
7 DR.5 DR.5 7
8 DR.6 DR.6 8
9 DR.7 DR.7 9
10 SR.6 CR.0 1
12 SR.5 CR.3 36
17 CR.3 SR.5 12
18-25 GND GND 19-30, 33

Conectori XI - DB25-P (ștecher), X2 - Centmnics-36(priză).

Comunicarea de mare viteză între două computere poate fi, de asemenea, efectuată în ESR(modul ERR incomod deoarece necesită sincronizarea ciclurilor I/O de magistrală a două calculatoare). În tabel Figura 1.15 prezintă cablarea cablului. Spre deosebire de tabelele anterioare care descriu cablurile pentru modurile controlate de software, acest tabel listează numele semnalelor care sunt generate în hardware de adaptoarele de port. Același cablu poate fi folosit și pentru comunicarea în modul octet. Această conexiune este acceptată de Windows 95.

Conector XI Conector X2
a lua legatura Numele în ESR Numele în ESR a lua legatura
1 HostClk PeriphClk 10
14 HostAck PeriphAck 11
17 1284Activ PeriphRequest# 15
16 ReverseRequest* AckReverse* 12
10 PeriphClk HostClk 1
11 PeriphAck ^MostAck 14
12 AckReverse* ReverseRequest# 16
13 Xflag /- -
15 PeriphRequest# 1284Activ 17
2-9 Date Date 2-9

Conectarea unui scaner la un port LPT este eficient numai dacă portul oferă cel puțin un mod bidirecțional (Bi-Di) deoarece firul principal este introdus. Mai bine să folosești portul ESR, dacă acest mod este acceptat de scaner (sau ERR, ceea ce este puțin probabil).

Conectarea unităților externe(lomega Zip Drive, CD-ROM, etc.), Adaptoare LAN iar alte dispozitive de intrare/ieșire simetrice au propriile sale specificități. În modul SPP Odată cu încetinirea dispozitivului, se observă asimetria fundamentală a acestui mod: citirea datelor se întâmplă de două ori mai lent decât(foarte incet) record. Aplicație bidirectional regim (Bi-Di sau PS/2 Tip 1) va elimina această asimetrie - vitezele vor fi egale. Doar mergând la ERR, disponibil viteza normala de functionare.În modul ERR conexiunea la un port LPT este aproape la fel de rapidă ca o conexiune prin intermediul unui controler ISA. Acest lucru este valabil și atunci când conectați dispozitive cu o interfață de magistrală standard la porturile LPT prin convertoare de interfață (de exemplu, LPT - IDE, LPT - SCSI, LPT - PCMCIA).

În tabel 1.16 descrie scopul pinilor conectorului portului LPT în diferite moduri și corespondența acestora cu biții registrelor portului standard.

a lua legatura I/O Pic* SPP ECP ERR
1 O/I CR.0\ Strobe# Hostdk Scrie#
2 O/I DR.0 Date0 Date0 Date0
3 O/I DR.1 Date1 Date1 Date1
4 O/I DR.2 Date2 Date2 Date2
5 O/I DR.3 Date3 Date3 Date3
6 O/I DR.4 Date4 Date4 Date4
7 O/I DR.5 Date5 Date5 Date5
8 O/I DR.6 Date6 Date6 Date6
9 O/I DR.7 Date7 Date7 Date7
10 eu SR.6 Ack# PeriphClk INTR#
11 eu SR.7\ Ocupat PeriphAck Aștepta"
12 eu SR.5 Sfârșit hârtie AckReverse* ^*
13 eu SR.4 Selectați Xflag **
14 O/I CR.1\ AutoLF# HostAck DataStb#
15 eu SR.3 Eroare" PeriphRequest# **
16 O/I CR2 lovit" ReverseRequest* Resetare*
17 O/I CR.3\ Selectarea 1284Activ AdrStb#
* Simbolul „\” marchează semnalele inversate (1 din registru corespunde unui nivel scăzut al liniei). ** - înseamnă „definit de utilizator”.

1.3.2. Configurarea porturilor LPT

Controlul portului paralel este împărțit în două etape - preconfigurare(Configurare) port hardware și actual(operator) comutarea moduri de operare ale aplicației sau software-ului de sistem. Comutarea online este posibilă numai în limitele modurilor permise în timpul configurării. Acest lucru asigură posibilitatea de a potrivi hardware-ul cu software-ul și de a bloca comutarile false cauzate de acțiunile incorecte ale programului.

Configurația unui port LPT depinde de versiunea acestuia. Portul, situat pe o placă de expansiune (multicard) instalată într-un slot ISA sau ISA+VLB, este configurat prin jumperi de pe placa însăși. Portul de pe placa de bază este configurat prin BIOS Setup.

Se pot configura următorii parametri:

  • Adresa de baza - 3BCh, 378h sau 278h. În timpul inițializării, BIOS-ul verifică prezența porturilor după adresă în această ordine și, în consecință, atribuie nume logice porturilor detectate. LPT1, LPT2, LPT3. Adresa 3BCh are un adaptor de port situat pe placa MDA sau HGC. Cele mai multe porturi sunt configurate să abordeze 378h în mod implicit și pot fi comutate la 278h.
  • Folosit linie de cerere de întrerupere: Pentru LPT- IRQ7, pentru LPT2- IRQ5. În mod tradițional, întreruperile imprimantei nu sunt utilizate, iar această resursă limitată poate fi salvată. Cu toate acestea, atunci când utilizați moduri de viteză ESR(sau Centronic rapid) Lucrul prin întreruperi poate îmbunătăți semnificativ performanța și poate reduce sarcina procesorului.
  • Utilizare Canal DMA pentru moduri ESRȘi Fast Centronics - rezoluție și numărul canalului DMA (implicit - 3).

Moduri de operare porturi:

  • SPP- Portul funcționează numai în modul standard unidirecțional controlat de software. PS/2, aka Bidirecțional - difera de SPP posibilitatea inversării canalului (setarea SYa.5=7).
  • Fast Centronics - generarea protocolului hardware Centronics cu folosind un buffer FIFO și, eventual, DMA.
  • ERR -în funcție de utilizarea registrelor, portul operează în SPP sau ERR.
  • ESR - implicit este comutat în modul SPP sau PS/2,înregistrare în ECR poate fi comutat în orice mod ESR, dar traducerea în ERRînregistrare în ECR codul 100 nu este garantat.
  • ESR+ERR - la fel ca ESR, dar intrarea in ECR codul de mod 100 setează portul la ERR.

Selectarea modului ERR, ESR sau Centronic rapidîn sine nu duce la o creștere a vitezei de schimb cu unitățile de control conectate, ci doar permite șoferului și unității de control să seteze modul optim în limitele „înțelegerii” lor. Majoritatea driverelor și aplicațiilor moderne încearcă să folosească moduri eficiente, așa că nu merită să-și taie aripile instalând moduri simple fără un motiv întemeiat.

ImprimanteȘi scanere poate dori un regim ESR. Windows (3x, 95 și NT) au drivere de sistem pentru acest mod. Într-un mediu DOS, imprimarea prin ESR acceptat numai de un driver special care poate fi descărcat. Adaptoare de rețea, unități externeȘi CD ROM conectat la un port paralel, poate utiliza modul ERR. Un driver special nu este încă disponibil pentru acest mod; utilizare ERR incluse în driverul dispozitivului conectat în sine.

Cele mai multe unități de control moderne conectate la portul LPT acceptă standardul 1284 și PnP. Pentru a susține aceste funcții pe un computer, din punct de vedere hardware, este suficient să aveți un controler de interfață care acceptă standardul 1284 Dacă dispozitivul conectat acceptă PnP, acesta este capabil să „negociere” cu portul asupra posibilelor moduri de schimb. folosind protocolul de negociere în modul 1284. Dispozitivul conectat trebuie să ofere sistemului de operare (OS) toate informațiile necesare despre sine - identificatorul producătorului, modelul și setul de comenzi acceptate. Informații mai detaliate pot include un identificator de clasă, o descriere detaliată și identificatorul dispozitivului cu care se realizează compatibilitatea. În conformitate cu informațiile primite, sistemul de operare poate lua măsuri pentru a instala software-ul necesar pentru a sprijini acest dispozitiv.

1.3.3. Depanare și testare porturi paralele

Este înțelept să începeți să testați porturile paralele cu verificarea disponibilitatii acestoraîn sistem. Lista adreselor porturilor instalate apare în tabelul afișat de BIOS pe ecran înainte de încărcarea sistemului de operare. Lista poate fi vizualizată și folosind programe de testare sau direct în BIOS Zona de date folosind un depanator.

Dacă BIOS-ul detectează mai puține porturi decât sunt instalate fizic, este probabil ca două porturi să aibă aceeași adresă. Cu toate acestea, funcționalitatea niciunuia dintre porturile aflate în conflict nu este garantată: acestea vor scoate simultan semnale, dar la citirea stării, un conflict pe magistrală va duce cel mai probabil la coruperea datelor. Testarea software-ului unui port fără mufă de diagnosticare (Loop Back) nu va arăta erori, deoarece datele registrelor de ieșire sunt citite și se vor potrivi pentru toate porturile aflate în conflict (reparabile separat). Acesta este exact genul de testare pe care BIOS-ul le efectuează atunci când verifică prezența porturilor. Ar trebui să faceți față acestei situații setând secvențial porturile și observând adresele care apar în listă.

Dacă este instalat fizic un singur port și BIOS-ul nu îl detectează, atunci fie portul a fost dezactivat în timpul configurării, fie a eșuat (cel mai probabil din cauza încălcării regulilor de conectare). Uneori ești norocos și problema este rezolvată prin „distorsionarea” plăcii în slot - acolo apar probleme cu contactele.

Au fost observate și astfel de „miracole” - în timpul unei reporniri „la cald” a DOS după Windows 95, portul nu este vizibil (și aplicațiile nu pot imprima de pe MS-DOS). Cu toate acestea, după repornirea portului LPT din nou, portul este la locul său. Este mai ușor să te împaci cu acest fenomen decât să lupți.

Testarea porturilor folosind programe de diagnosticare vă permite să verificați registrele de ieșire, iar atunci când utilizați mufe speciale, de asemenea, liniile de intrare. Deoarece numărul de linii de ieșire a portului (12) și de linii de intrare (5) este diferit, o verificare completă a portului folosind o mufă pasivă este fundamental imposibilă. Diferite programe de testare necesită utilizarea de mufe diferite (Fig. 1.9).

Orez. 1.9. Diagrama unei mufe pentru testarea unui port LPT: a - pentru programul Checkit, b - pentru programul Norton Diagnostics.

Cele mai multe dintre problemele când lucrați cu porturile LPT sunt cauzate de conectori și cabluri. Pentru a verifica portul, cablul și imprimanta, puteți utiliza teste speciale din programele de diagnosticare populare (Checkit, PCCheck etc.), sau puteți încerca să scoateți un fișier simbolic către imprimantă.

  • Dacă rezultatul fișierului din perspectiva DOS trece (copierea fișierului pe un dispozitiv numit LPTn sau PRN este finalizat rapid și cu succes), dar imprimanta (funcționează) nu a tipărit un singur caracter - cel mai probabil, acesta este un circuit deschis (fără contact în conector) al circuitului Strobed.
  • Dacă imprimanta este în Pe net, dar apare un mesaj care indică că nu este gata, motivul trebuie căutat în linia Ocupat.
  • Dacă imprimanta conectată la port este în modul standard (SPP) se tipărește în mod normal, dar când mergi la ESR defecțiunile încep, ar trebui să verificați cablul pentru a vedea dacă îndeplinește cerințele IEEE 1284 (vezi mai sus). Cablurile ieftine cu fire nerăsucite funcționează normal la viteze de 50-100 KB/s, dar la o viteză de 1-2 MB/s furnizată de ECP, au tot dreptul să nu funcționeze, mai ales cu o lungime mai mare de 2 m.
  • Dacă, la instalarea driverului de imprimantă PPR, apare un mesaj despre necesitatea utilizării unui „cablu bidirecțional”, verificați legătura dintre pinul 17 al conectorului DB-25 și pinul 36 al conectorului Centronics. Deși această conexiune a fost furnizată inițial, lipsește într-un număr de cabluri.
  • Dacă imprimanta distorsionează informațiile în timpul imprimării, liniile de date pot fi întrerupte (sau scurtcircuitate). În acest caz, este convenabil să utilizați un fișier care conține o secvență de coduri pentru toate caracterele imprimabile. Iată un exemplu de program în Basic:

10 DESCHIDEȚI „bincod.chr” PENTRU IEȘIRE CA #1
20 PENTRU J=2 LA 15
30 PENTRU I=0 LA 15
40 PRINT#1, CHR$(1b*J+I);
50 URMĂTORUL I
60 PRINT#1
70 URMĂTORUL J
80 ÎNCHIS #1
90 SFÂRȘIT

Fişier BINCOD.CHR, creat de acest program, este un tabel cu toate caracterele imprimabile (codurile de control sunt omise), aranjate 16 caractere pe linie. Dacă un fișier este tipărit cu repetarea unor caractere sau a grupurilor acestora, prin frecvența de repetare puteți calcula cu ușurință un fir de date de interfață rupt. Același fișier este convenabil de utilizat pentru a verifica rusificarea hardware a imprimantei.

Întreruperi hardware de la portul LPT nu sunt întotdeauna utilizate. Chiar și un program de imprimare în fundal DOS IMPRIMARE lucrează cu portul prin sondarea stării, iar procesul de service este lansat printr-o întrerupere a temporizatorului. Prin urmare, defecțiunile asociate cu circuitul de întrerupere a portului nu apar des. Cu toate acestea, sistemele de operare cu adevărat multitasking (de exemplu, NetWare) încearcă să lucreze cu portul folosind întreruperi. Puteți testa linia de întrerupere numai prin conectarea unui PU sau a unei mufe la port. Dacă conectați un adaptor de rețea locală la un port cu un canal de întrerupere defect, probabil că va funcționa, dar la o viteză foarte mică: orice solicitare va primi un răspuns cu o întârziere de zeci de secunde - pachetul primit de la adaptor nu va să fie primit prin întrerupere (imediat la sosire), dar prin timeout extern.

1.3.4. Funcții BIOS pentru portul LPT

BIOS-ul oferă suportul pentru portul LPT necesar pentru organizare ieșire prin interfața Centronics.

În timpul testului POST inițial, BIOS-ul verifică prezența porturilor paralele la adresele 3BCh, 378h și 278h și plasează adresele de bază ale porturilor detectate în celule. Zona de date BIOS 0:0408h, 040Ah, 040Ch, 040Eh. Aceste celule stochează adresele portului LPT1-LPT4, O valoare a adresei zero indică faptul că nu există niciun port cu acest număr. Celulele 0:0478, 0479, 047A, 047B conțin constante care stabilesc timpul de expirare pentru aceste porturi.

Căutați porturi De obicei, se efectuează destul de primitiv - un octet de testare (AAb sau 55h) este scos la adresa de bază (în registrul de date al portului dorit), apoi se face o intrare la aceeași adresă. Dacă octetul citit se potrivește cu cel scris, se presupune că a fost găsit un port LPT; adresa lui este plasată în celulă Zona de date BIOS. Adresele portului de bază pot fi modificate ulterior prin programare. Adresa portului LPT4 BIOS-ul nu se poate instala singur, deoarece lista de adrese standard de căutare conține doar trei adrese specificate.

Porturi detectate sunt inițializate - Prin scrierea în registrul de control, se generează și se îndepărtează semnalul Init#, după care se scrie valoarea OCh corespunzătoare stării inițiale a semnalelor de interfață. În unele cazuri, semnalul lnit# este activ din momentul resetării hardware până când portul este inițializat în timpul pornirii sistemului de operare. Acest lucru poate fi văzut de comportamentul imprimantei atunci când este pornită când computerul este repornit - indicatorul imprimantei se stinge pentru o lungă perioadă de timp Pe net. Consecința acestui fenomen este incapacitatea de a imprima ecrane (de exemplu, parametrii BIOS Setup) folosind cheia Captură de ecranînainte de a încărca sistemul de operare.

Întreruperea software-ului BIOS INT 17h oferă următoarele funcții de suport pentru porturile LPT:

  • 00h - ieșire simbol din registru AL conform protocolului Centronics(fără întreruperi hardware). Datele sunt plasate în registrul de ieșire, iar după așteptarea ca imprimanta să fie gata (semnalul Ocupat este eliminat), se formează un stroboscop.
  • 01h - initializare interfață și imprimantă (setarea nivelurilor inițiale ale semnalelor de control, generarea impulsului Init#, dezactivarea întreruperilor hardware și trecerea la ieșirea interfeței bidirecționale).
  • 02h - sondaj de stare imprimantă (citește registrul de stare a portului).

Când suni INT 17h numărul funcției este specificat în registru UN, numărul portului - în registru DX(Q - LPT1, 1 - LPT2...). La întoarcerea registrului UN conţine cod de stare - biți registrului de stare S.R.(biții 6 și 3 sunt inversați) și un indicator de timeout în bitul 0. Indicatorul de timeout este setat atunci când o încercare de ieșire de caractere eșuează dacă semnalul de ocupat nu este șters în timpul specificat pentru acel port în celulele timeout. În acest caz, conform protocolului Centronici, nu este generat niciun stroboscop de date.

Întreruperea interceptării INT 17h este o modalitate convenabilă de a implementa propriile drivere de imprimantă. Necesitatea acestora poate apărea atunci când vă conectați la un port de imprimantă de la interfețe IRPR sau nevoia de recodificare a caracterelor.

bChFPT nYLHYYO b. Parte Toate drepturile rezervate. 2001...2015

rTEDSHDHEYE CHETUYY UBKFB:
http://neic.nsk.su/~mavr
http://digital.sibsutis.ru/

Portul Lpt, adesea numit paralel, este unul dintre cele mai vechi porturi pentru PC. Deși în zilele noastre un astfel de port nu este disponibil pe toate plăcile de bază, este încă oarecum răspândit și, prin urmare, mulți utilizatori de computere și echipamente de birou, în special imprimante, sunt foarte interesați să afle ce este.

În primul rând, trebuie să înțelegeți ce înseamnă abrevierea lpt port. Deci, LPT înseamnă o abreviere pentru o combinație de mai multe cuvinte englezești, și anume: Line Print Terminal. Tradus în rusă, LPT înseamnă terminal de imprimantă de linie. Pe baza numelui, devine clar că este destinat în primul rând unei imprimante. Dar din punct de vedere teoretic, alte dispozitive pot fi conectate la LPT. În acest scop, se folosește un adaptor special - un adaptor lpt. De adăugat că are un alt nume, acceptat în rândul utilizatorilor - port imprimantă.

În general, portul lpt are o istorie destul de lungă de dezvoltare. A fost dezvoltat de angajații companiei Centronics, care la începutul anilor 70 ai secolului trecut s-a specializat în producția de dispozitive de imprimare matricială. La începutul anilor 80, acest port de imprimantă a devenit utilizat pe scară largă de IBM, care l-a folosit pe computerele sale. În acel deceniu, portul lpt a reușit chiar să devină o opțiune standard necesară pentru conectarea dispozitivelor cu viteze mari disponibile în acei ani.

Inițial, interfața LPT a fost prezentată în mai multe ediții diferite. Mai mult, în versiunea originală era unidirecțională, adică. cu ajutorul acestuia a fost posibilă transferul de informații exclusiv către un dispozitiv periferic. Desigur, acest gen de situație nu s-a potrivit multor utilizatori, pentru că... Deja în acei ani se produceau dispozitive de imprimare care necesitau transfer de date în două direcții. De aceea, ceva timp mai târziu, dezvoltatorii au fost nevoiți să îmbunătățească de mai multe ori interfața LPTl. Acest proces a durat până când a fost prezentat standardul său, numit IEEE 1284. Astfel, dezvoltatorii au prezentat designul final al portului. Noul standard avea suport pentru mai multe moduri de operare diferite. În plus, era compatibil cu standardele anterioare. În versiunea sa finală, interfața imprimantei putea suporta o rată de transfer de informații destul de mare pentru acea perioadă, care ajungea la 5 Mb/s!

Cum funcționează un port paralel?

Denumirea paralelă LPT se datorează faptului că transmisia de date în cablul conectat la acesta se realizează în mod paralel, pentru care se folosesc simultan mai multe conductoare. Tocmai din această cauză diferă semnificativ de som, care este consecvent. Numărul de conductori din cablul care se conectează la LPT este de obicei opt. În plus, poate conține mai multe linii destinate transmiterii semnalelor de control. Astfel, utilizarea portului com în comparație cu LPT are o serie de limitări și dezavantaje puternice.

În ciuda faptului că portul Centronics a fost folosit în principal pentru a organiza conexiunea dintre imprimantă și PC, a fost totuși folosit în alte scopuri. De exemplu, folosind LPT puteți conecta direct două computere personale unul la celălalt - de obicei se folosește un cablu Interlink pentru aceasta. Până la răspândirea plăcilor de rețea Ethernet, acest tip de conexiune a fost foarte popular. Desigur, nu putea oferi utilizatorilor rate de transfer de informații cu adevărat mari, dar, în ciuda acestui fapt, această metodă de conectare a două computere unul la altul în acei ani era aproape singura posibilă. Trebuie adăugat că există chiar și chei electronice speciale care sunt concepute special pentru conectarea la un port paralel.

Despre caracteristicile funcționării LPT

După cum am menționat mai sus, spre deosebire de com, LPT acceptă transferul de date paralel. În primele modele de computere personale, a fost unul dintre cele mai rapide. Interfața sa, datorită capacității de a transmite informații pe mai multe linii, este în multe privințe similară ca arhitectură cu magistralele utilizate în PC-uri. Dar tocmai acest tip de circumstanță limitează lungimea cablului, care nu poate depăși 5 metri. În caz contrar, vor exista interferențe constante în conexiunea dintre computer și imprimantă.

Pentru a organiza transmisia normală de date, de regulă, sunt necesare 10 linii de semnal. În ceea ce privește liniile rămase, acestea sunt utilizate pentru compatibilitate cu standardul de cablu Centronics. Setarea maximă a tensiunii utilizate pe liniile de semnal LTP este de obicei +5 V.

Conector port și cablu Centronics

Dacă vorbim despre conectorul portului paralel, atunci acesta se află pe placa de bază însăși, deși până la mijlocul anilor 90 ai secolului trecut acest element era de obicei situat pe așa-numitul. multicard, care a fost introdus în slotul de expansiune. Ieșirea LPT este un conector DB25 cu 25 de pini.

Pentru a stabili o conexiune între un computer personal și echipamente de birou de imprimare folosind un port personal, trebuie să utilizați un cablu Centronics. În acest caz, conectorul disponibil pe echipamentele de birou este de 36 de pini. Astfel, principala caracteristică a acestui cablu este prezența a doi conectori diferiți pe ambele părți.
De asemenea, țineți cont de faptul că destul de des conectorul Centronics este numit conector de cablu care este destinat plăcii de bază a unui computer personal, dar de fapt este un conector de imprimantă - adică. unul care include 36 de pini. În ceea ce privește conectorul destinat direct pentru LPT, acesta se numește Amphenolstacker. Este necesar să cunoaștem astfel de diferențe de nume pentru a numi toate lucrurile prin numele lor propriu.

Concluzie

În concluzie, putem spune că portul paralel Line Print Terminal este o interfață pentru PC care este deja destul de depășită până acum. În ciuda utilizării sale pe scară largă în ultimele decenii ale secolului trecut, astăzi acest port nu are prea mult sprijin din partea multor companii producătoare de echipamente informatice, echipamente de birou și software. În ciuda acestui fapt, LPT este încă folosit cu succes pe multe modele de PC-uri și dispozitive de imprimare care sunt învechite astăzi. Dar destul de des, pentru a organiza o conexiune între un computer și o imprimantă veche, este necesar un adaptor com-lpt. Astăzi, în principiu, pot fi găsite la vânzare, dar dacă aveți cunoștințele și abilitățile necesare, puteți instala un astfel de adaptor absolut independent.

Dmitri Ivanov, 21 septembrie 2009 Articolul a fost revizuit și actualizat la 23 ianuarie 2012

În timpul existenței acestui site, mi se pune adesea aceeași întrebare, care poate fi descrisă aproximativ după cum urmează:



Drept urmare, am decis să descriu această problemă mai detaliat și să scriu un articol. Da, într-adevăr, acum trebuie să căutați computere staționare cu un port LPT (adică nu fiecare „mamă” vine acum completă cu un port LPT). Nu este nevoie să vorbim deloc despre laptopuri. Modelele moderne nu folosesc deloc porturi LPT. Doar mașinile foarte scumpe și specializate, precum DELL, se pot „lăuda” că au acest port.

De asemenea, acum puteți achiziționa gratuit dispozitive numite adaptoare LPT-USB.

Instrucțiunile spun că acest dispozitiv este pe deplin compatibil cu diverse imprimante, scanere etc. Conectăm adaptorul la portul USB și instalăm driverele. Să ne uităm la managerul de dispozitive. Cel mai probabil in thread „Porturi LPT/COM” nu a aparut nimic (desi sunt si exceptii). Cel mai probabil va exista o nouă ramură cu un dispozitiv ciudat cu un nume, de exemplu, LPT1USB sau în secțiunea dispozitive USB o intrare ciudată despre „Suport dispozitiv USB pentru imprimante LPT”. Să încercăm să rulăm câteva exemple din articolele de mai sus. Și nu este cazul - nimic nu funcționează. Încercăm adresa portului LPT1 - nimic nu funcționează. Să încercăm adresa portului LPT2. Din păcate, o astfel de modernizare a adresei în solicitări, de asemenea, nu duce la nimic - LED-urile nu s-au aprins și nu se aprind.

Pentru a înțelege ce se întâmplă aici, să revenim pentru un moment la portul LPT obișnuit „fier nativ” - LPT1, care „iese” de pe placa de bază. Să mergem la managerul de dispozitive și să ne uităm la proprietățile portului nostru. Acolo vom vedea o astfel de poză. Este clar că sistemul a înregistrat adresa de bază I/O 0x378 și cererea de întrerupere numărul 7. Totul este corect.

Acum să trecem la nivelul de programare. În exemplele articolelor de mai sus, ocolind sistemul de protecție I/O folosind metode legale și ilegale, am comunicat direct cu un registru I/O din viața reală, căruia i se atribuie adresa 0x378. Totul este clar aici. De asemenea, să nu uităm că Windows recomandă să lucrați cu portul LPT folosind apeluri de funcție API - OpenFile(), WriteFile(), ReadFile(). Aplicațiile care folosesc portul LPT pentru a schimba informații printr-o interfață paralelă cu dispozitive externe (o imprimantă, de exemplu) fac exact asta. Nu are sarcina de a seta vreun bit de registru Date unitate ligica. Ea (aplicația) trebuie doar să trimită un pachet de date și cine va fi acolo care linii și, în același timp, „tragerea” și citirea acestuia nu este foarte interesat. Aceste operațiuni sunt efectuate de driverul de port LPT al sistemului. Este încărcat în memorie când sistemul de operare pornește. Când numim funcția OpenFile ("LPT1", ....)în esență, accesăm driverul de port, care este numit simbolic LPT1. Driverul face o grămadă de activități diferite - interzice accesul la port altor procese, configurează parametrii protocolului de transfer de date, implementează de fapt acest transfer, dar în cele din urmă totul se reduce la controlul direct al biților individuali de port LPT la nivelul nucleului OS.

Acum să încercăm să lucrăm cu adaptorul nostru USB-LPT. Să începem, oricât de ciudat ar părea, cu apelurile API. Hai să lansăm OpenFile ("LPT1USB", ...)(în funcție de cum este numit acest adaptor în managerul de dispozitive, dacă este apelat deloc). Ce se întâmplă? Cert este că acum vom lucra nu cu driverul portului OS LPT, ci cu driverul acestui adaptor! Asta e trucul! Primește un pachet de date de la aplicația noastră de utilizator și, în formatul necesar, trimite acest pachet prin driverul USB de sistem către controlerul USB, ale cărui „picioare” ies din priza externă LPT de pe fir (ei bine, asta este un „explicație grosieră”). Vedeți, nu există niciun indiciu de accesare a registrelor la adresele 0x378 (0x278), deoarece pur si simplu nu exista!

Prin urmare, atunci când încercați să rulați exemplele din această secțiune și să accesați direct adresele 0x378 (dacă acest „pseudo port” se numea LPT1USB sau ceva de genul acesta), 0x278 (LPT2_...), etc. Nimic nu se intampla. Pur și simplu nu există! Dar un program care funcționează prin apeluri API nu va observa nimic - toată munca de nivel scăzut este făcută de driver și care driver și unde vor merge pachetele de date (la portul real I/O sau la controlerul gazdă USB) - aplicației nu-i pasă! Încercați să deschideți proprietățile „pseudo-port” în Manager dispozitive. Nu aveți o filă de resurse? Da, dar există niște valori nepotrivite sau fila este dezactivată? De fapt, de fapt.



De ce 99%? Deoarece există adaptoare USB-LPT de casă care sunt detectate de Windows ca port LPT1 cu drepturi depline și au o adresă complet obișnuită 0x378. Apelurile directe către pinii de port au succes! Cu toate acestea, acesta este un design foarte nestandard (în primul rând driverul, care interceptează apelurile către adresa de bază a portului LPT1). Toate acestea nu sunt foarte fiabile (actualizarea sistemului de operare - iar designul își pierde funcționalitatea) și pot fi recomandate doar pentru utilizare cu o întindere.



Oricât de ciudat ar părea, EXISTA o soluție. Puteți adăuga oricând un port LPT real pe desktop sau laptop. În primul rând, uitați imediat de adaptoarele USB. Pentru a rezolva această problemă este necesar să cumpărați PCI-LPT adaptor pentru PC desktop (necesită un slot PCI liber) sau PCMCIA-LPT adaptor pentru laptop (vezi fotografia de mai jos).


Nu există probleme la utilizarea acestor dispozitive. Ele sunt definite ca porturi LPT reale „native”. Intrarea corespunzătoare va fi adăugată la fila Manager dispozitiv „Porturi LPT/COM”. Accesul direct la pinii portului va funcționa.