Dispozitive periferice de I/O.
Interfata paralela
Scopul lucrarii
Lucrarea de fata are scopul de a prezenta notiuni de baza referitoare la interfata paralela precum si modul de conectare a dispozitivelor periferice la aceasta interfata.
Pe parcursul lucrarii se vor prezenta:
Schema portului paralel;
Tipurile de semnale prezente in conectorul interfetei paralele;
Modalitatea de conectare a unui echipament periferic la interfata paralela;
Consideratii teoretice
Interfata paralela a fost construita initial doar pentru conectarea unei imprimante la un calculator personal. Numele ei este LTP (Line Printing Terminal) si a fost dat de compania IBM.
Interfata paralela a unui calculator personal este de regula accesibila prin intermediul unui conector "mama" cu 25 de pini.
In ceea ce priveste semnificatia pinilor exista mai multe standarde. Standardul initial se numeste SPP (Standard Paralel Port) si foloseste 8 linii de date unidirectionale, 4 linii de iesire (semnale de control) si 5 linii de intrare (semnale de stare). Cei 8 pini ramasi sunt conectati la masa.
Ulterior stanardului SPP au aparut standardele EPP (
2.1 Schema intefetei paralele si semnificatia pinilor conform standardului SPP.
Schema interfetei paralele este prezentata in figura 2.1.1, iar semnificatia pinilor conform standardului SPP este prezentata in tabelul 2.1.1.
Figura 2.1.1: Schema interfetei paralele
Tabelul 2.1.1: Semnificatia pinilor conform standardului SPP
Observatie: Pe portul paralel se transmit semnale logice TTL (orice tensiune mai mica de 0.8 V este considerate 0 logic, iar orice tensiune mai mare de 2.4 V este considerate 1 logic).
Adresele porturilor interfetei paralele
Un port este un numar scris de regula in format hexazecimal, care reprezinta o adresa a unei anumite interfete. Fiecare interfata a unui calculator are asociat unul sau mai multe astfel de porturi. Comunicarea intre echipamentele periferice si interfata se realizeaza prin instructiuni de intrare/iesire care acceseaza aceste porturi.
Fiecare port paralel trebuie sa aiba alocata o adresa de baza. Un set de adrese ar putea fi: 0x0378 pentru LTP1 sau 0x278 pentru LTP2.
Semnalele interfetei paralele sunt impartite in 3 grupe:
Linii de date: pinii 2-9, semnalele DATA0-DATA7;
Semnalele de stare: pinii 10-13 si 15, semnalele /ACK, BUSY, PE, SELECT si ERROR.
Semnale de control: pinii 1 si 17, semnalele /STROBE, /AUTO, /INIT si /SELIN.
Pentru a accesa aceste semnale este nevoie de 3 adrese, adica de 3 porturi. Numele porturilor este dat de numele categoriei de semnale. Adresele porturilor se calculeaza astfel:
Potrul de date are adresa: adresa de baza a interfetei paralele + 0;
Exemplu: 0x378 pentru LTP1 sau 0x278 pentru LTP2;
Portul de stare are adresa: adresa de baza a interfetei paralele + 1;
Exemplu: 0x379 pentru LTP1 sau 0x279 pentru LTP2;
Portul de control are adresa: adresa de baza a interfetei paralele +2;
Exemplu: 0x37A pentru LTP1 sau 0x27A pentru LTP2;
Cele trei porturi sunt pe 8-bit fiecare, astfel ele pot adresa maxim 8 semnale. Semnalele fiecarui port in parte sunt prezentate in tabelul 2.2.1.
Tabelul 2.2.1: Semnalele celor trei porturi ale interfetei paralele.
Lucrul cu porul parallel in C
Accesarea portului paralel prin intermediul unui program C are la baza urmatoarele principii:
Se apeleaza rutina de accesare a portului (#include
<asm/io.h>);
Se da programnului permisiunea de acces la port. Aceasta se face prin apelul functiei
ioperm ),
care este declarata in unistd.h. Sintaxa functiei ioperm() este urmatoarea:
ioperm
(from, num, turn_on), unde "form" este adresa primului
port la care se permite accesul,
"num" este numarul de porturi consecutive la care este permis accesul, iar "turn_on" este
o variabila booleana care daca ia valoarea
1 accesul la port este permis, iar daca
ia valoarea 0 accesul la port este restrictionat;
Observatie
: Pentru
a apela functia ioperm ),
trebuie sa ai drepturi de root.
Scrierea respective citirea portului paralel se face prin intermediul functiilor outb(valoare, port) respectiv inb(port) pentru 8 biti, iar pentru un cuvant scris sau citit de la portul x si portul x+1 se utilizeaza functiile outw(valoare, x) respective inw(x);
Exemplu de scriere/citire a portului paralel:
#include <stdio.h>Aplicatii
Cu ajutorul montajului prezentat in figura 3.1 sa se dezvolte o
aplicatie de monitorizare a starii portului paralel.
Monitorizarea starii portului se va realiza prin intermediul celor 17 leduri, a caror semnificatie este urmatoarea:
verde - cele 8 linii de date ( D0-D7 )
rosu - cele 5 linii de stare ( S0-S4 )
galben - cele 4 linii de control ( C0-C3 )
Schema electrica a montajului este prezentata in figura 3.2.
Figura 3.1: Montaj monitorizare/interfatare port paralel
Figura 3.2: Schema electrica
Concluzii
Pe parcursul lucrarii s-au puctat urmatoarele aspecte:
Interfata paralela a unui calculator personal este accesibila prin intermediul unui conector mama cu 25 pini;
Semnalele interfetei paralele sunt impartite in 3 grupe: linii de date, semnale de stare si semnale de control;
Pentru a accesa cele trei tipuri de semnale exista 3 porturi, pe 8 biti fiecare;
Accesul unui program C la porturi se realizeaza prin intermediul functiei ioperm(), iar scrierea respectiv citirea porturilor se face prin intermediul functiilor outb() respective inb();
|