Паралелни порт
Паралелни порт је врста рачунарског порта који се раније углавном користио за повезивање принтера (штампача) са рачунарима. Одатле се често назива и принтер порт, штампач порт, Центроникс порт (енгл. Centronics, по некадашњем произвођачу штампача).
Порт се међутим може користити и за контролу уређаја, манипулацијом напонског нивоа индивидуалних пинова.
Раније је кориштен и за пренос фајлова између рачунара путем посебног Лаплинк кабла.
Придјев паралелни потиче од чињенице да порт шаље осам битова података штампачу (1 бајт) на осам паралелних линија, за разлику од серијског порта, који битове шаље један по један. Паралелним системом преноса се постиже већа брзина преноса података, али је потребно више жица у каблу.
На PC рачунарима, паралелни порт има ознаку LPT1 или LPT2. То је на рачунару 25-пински Д-конектор женског типа, а на принтеру 36-пински Центроникс Д-конектор женског типа.
Хардвер
[уреди | уреди извор]Старији PC рачунари су имали посебне картице на којима су се морали подешавати прекидачи да се означи рачунару који прекид („интерапт“) и адреса ће се користити.
Данашње матичне плоче имају интегрисане улазно-излазне (I/O) контролере за серијски, паралелни, USB и друге портове.
Адресе
[уреди | уреди извор]Типични распоред адреса и прекида је приказан у табели испод. Треба напоменути да рачунари фирме IBM често имају 0x3bc као адресу првог паралелног порта.
Име порта | Прекид # | Почетна адреса | Крајња адреса |
---|---|---|---|
LPT1 |
IRQ 7 |
0x378 |
0x37f
|
LPT2 |
IRQ 7 |
0x278 |
0x27f
|
LPT3 |
IRQ 5 |
0x3bc |
0x3bf
|
Почетна адреса, на примјер 0x378 за LPT1, даје приступ пиновима 2-9 паралелног порта, који могу да се користе као дигитални излази. Идућа адреса у низу, 0x379, контролише статус порта, и пинови могу да се користе као дигитални улази. Задња адреса је 0x37A, контролни порт, која може да се користи за дигиталне улазе.
Веза адреса порта и пинова је приказана у табели испод.
Адреса | Најзначајнији (МСБ) бит | Најмање значајан (ЛСБ) бит | |||||||
---|---|---|---|---|---|---|---|---|---|
Bit: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Базна адреса, Подаци (Data port) |
Пин: | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Базна адреса+1, Статус (Status port) |
Пин: | ~11 | 10 | 12 | 13 | 15 | |||
Базна адреса+2, Контрола (Control port) |
Пин: | ~17 | 16 | ~14 | ~1 |
~ означава логичку инверзију пина у хардверу.
Распоред пинова
[уреди | уреди извор]Распоред свих пинова паралелног порта је дат у табели испод.
Број пина (DB25) | Број пина (36 пинова) | Име сигнала | Смјер | Регистар-бит | Инвертован |
---|---|---|---|---|---|
1 | 1 | nStrobe | Излаз | Control-0 | Да |
2 | 2 | Data0 | Улаз/Излаз | Data-0 | Не |
3 | 3 | Data1 | Улаз/Излаз | Data-1 | Не |
4 | 4 | Data2 | Улаз/Излаз | Data-2 | Не |
5 | 5 | Data3 | Улаз/Излаз | Data-3 | Не |
6 | 6 | Data4 | Улаз/Излаз | Data-4 | Не |
7 | 7 | Data5 | Улаз/Излаз | Data-5 | Не |
8 | 8 | Data6 | Улаз/Излаз | Data-6 | Не |
9 | 9 | Data7 | Улаз/Излаз | Data-7 | Не |
10 | 10 | nAck | Улаз | Status-6 | Не |
11 | 11 | Busy | Улаз | Status-7 | Да |
12 | 12 | Paper-Out | Улаз | Status-5 | Не |
13 | 13 | Select | Улаз | Status-4 | Не |
14 | 14 | Linefeed | Излаз | Control-1 | Да |
15 | 32 | nError | Улаз | Status-3 | Не |
16 | 31 | nInitialize | Излаз | Control-2 | Не |
17 | 36 | nSelect-Printer | Излаз | Control-3 | Да |
18-25 | 19-30,33,17,16 | Ground | - | - | - |
Сигнали паралелног порта
[уреди | уреди извор]Порт користи стандардне TTL логичке нивое, од 0 и 5 Волти.
Пин STROBE је нормално на високом логичком нивоу (+5V, логичка јединица). Рачунар обара овај пин на 0V (логичка нула) да сигнализира принтеру да пошаље бајт података. Пинови 2-9 су за 8 битова података. Пин 10 користи принтер да сигнализира рачунару да је примио бајт. Пин 11, BUSY, је у стању логичке јединице када принтер жели да сигнализира рачунару да је запослен.
Пин 11, BUSY, у стању логичке нуле говори рачунару да је принтер спреман за пријем. Пин 12, OUT OF PAPER или PRINTER ERROR у ниском стању говори рачунару да принтер нема проблеме (све је у реду).
Софтвер
[уреди | уреди извор]Застарјели оперативни систем ДОС је директно управљао паралелним портом.
Команда SHIFT+PRINTSCREEN је директно штампала текст са екрана на штампачу прикљученом на паралелни порт.
Контрола уређаја кориштењем паралелног порта (ДОС, Windows 95 и 98)
[уреди | уреди извор]Директни приступ порту је био могућ из већине програмских језика тога доба.
Као примјер можемо узети КјуБејсик (QBasic, QuickBasic), који се налазио на сваком рачунару са ДОС-ом.
Овај код ради у ДОС-у и Windows-у 95 и 98:
OUT &H378, 0 ' Pinovi 2 do 9 = 0 V. Format je IZLAZ, adresa, bajt
ulaz = INP(&H379) ' Varijabla ulaz = stanje pinova vezanih sa status bajtom
Ако желимо подесити све пинове на +5 V:
OUT &H378, 255 ' Pinovi 2 do 9 = 5 V
Индивидуални пинови су се могли подесити на +5 V са:
OUT &H378, 1 ' Samo Pin 2 = 5 V, ostali 0 V
Пин 3 се може подесити на +5 V са:
OUT &H378, 2 ' Samo Pin 3 = 5 V, ostali 0 V
Манипулацијом излазних пинова и очитавањем улазних, могао се дакле створити једноставан систем за контролу уређаја, машина, свјетала и тако даље.
Нови Windows оперативни системи (Windows 2000, XP и новији)
[уреди | уреди извор]У Windows-у 95 и 98, програми су и даље имали могућност директног приступа порту. То у новијим Мајкрософт оперативним системима више није случај, и драјвери се морају користити за ту сврху.
Статус паралелног порта се може видјети у контролном панелу код Windows-а (Control Panel-System-Device Manager-Ports-COM and LPT). Resource таб даје хардверску адресу и прекид.
Статус принтера је видљив под Start-Settings-Printers.
Линукс
[уреди | уреди извор]У Линукс оперативном систему, паралелни порт се не може директно користити осим од root корисника, или промјеном начина приступа обичних корисника путем chmod команде.
Ознака првог порта је lp0, другог lp1 и тако даље.
Примјер C програмског кода за приступ порту и контролу напонског стања излазних пинова је дат испод. Програм мора имати root привилегије. Фајл io.h се налази у разним директоријима, зависно од дистрибуције. На Дебиан ГНУ/Линуксу је на примјер у /usr/include/sys директорију, па код треба подесити.
#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>
#define PARPORT 0x378 /* prvi paralelni port */
int main() {
/* Omoguci pristup portu */
if (ioperm(PARPORT, 3, 1)) {perror("ioperm"); exit(1);}
/* Podesi pinove podataka 2-9 (data) porta na 0 V */
outb(255, PARPORT);
/* Malo sacekaj (20 ms) */
usleep(20000);
/* Ocitaj status port (adresa+1) i pokazi stanje */
printf("status: %d\n", inb(PARPORT + 1));
/* Zatvori port */
if (ioperm(PARPORT, 3, 0)) {perror("ioperm"); exit(1);}
exit(0);
}
Код Линукса се, као и код ДОС-а, може дакле остварити једноставан контролни систем кориштењем паралелног порта. То се и користи за многе аматерске уређаје, као мале ЦНЦ машине и слично.
Литература
[уреди | уреди извор]- Assembling and Repairing Personal Computers, 2nd edition, Dan L. Beeson,
Prentice Hall. ISBN 978-0-13-081949-9.