Você está na página 1de 16

Dicas de Porta Paralela

O modelo tradicional de porta paralela, utilizado desde os tempos do XT, conhecido como "normal" ou SPP (Single Parallel Port). Possui taxa de transferncia de 150 KB/s e unidirecional. Para a conexo micro-micro ou na conexo de equipamentos externos (como o ZIP Drive), o sistema usa transmisso 4 bits por vez, utilizando sinais de retorno como "busy", "paper out", etc. Este sistema s funciona bem mesmo com impressoras. Para a conexo de ZIP drives e at mesmo impressoras mais rpidas, a porta paralela tradicional muito lenta, sobretudo porque unidirecional e utiliza apenas 4 bits de retorno (ou seja, transmite a 8 bits, porm recebe informaes a 4 bits por vez). Para resolver este problema, foi desenvolvida a porta paralela avanada ou EPP (Enhanced Parallel Port). Este modelo de porta paralela bidirecional e atinge uma taxa de transferncia de 2 MB/s. Entretanto, para atingir esta taxa, necessita de um cabo especial, pois o cabo tradicional s comporta uma taxa de at 150 KB/s. Este cabo conhecido no mercado como "cabo bidirecional", sendo que sua verdadeira caracterstica no ser bidirecional, mas sim permitir altas taxas de transmisso. Aumentar a taxa de transferncia trouxe um problema: a necessidade de mais ateno por parte do processador. Para resolver isto, desenvolveu-se a porta paralela ECP (Enhanced Capabilities Port). Ela igual a EPP porm utiliza um canal de DMA, que faz com que a transmisso e recepo sejam feitas sem a interveno do processador, aumentando o desempenho do micro. Todos os micros novos possuem porta paralela na prpria placa-me ("on board"), permitindo que voc, atravs do setup do micro, configure-a a trabalhar em qualquer um dos trs modos de operao. O modo que voc dever trabalhar depende do caso. A maioria dos perifricos conectados na porta paralela aceitam somente o modo normal (SPP). Alguns outros perifricos, como o caso do ZIP Drive, funcionam perfeitamente no modo normal, mas tero sua taxa de transferncia (ou seja, seu desempenho) aumentada sensivelmente se o modo da porta paralela for EPP ou ECP. Outros perifricos, como o caso das impressoras HP srie 800 e Epson Stylus Color II, necessitam obrigatoriamente que a porta paralela esteja operando em modo EPP ou ECP, necessitando, portanto, do tal "cabo bidirecional".

Controle de dispositivos externos atravs da porta paralela utilizando C#


Antes de comearmos precisamos entender alguns conceitos importantes. Porta Paralela Modos de Operao A porta paralela atualmente possui trs modos de operaes. So eles: SPP bits de dados unidirecional EPP bits de dados biderecional ECP bits de dados bidericional Estes modos de operao so configurados pelo BIOS Setup. A diferena entre EPP e ECP que esta ltima utiliza DMA(acesso direto a memria). Endereos da Porta Paralela Para enviarmos ou recebermos dados da porta paralela precisamos saber o seu endereo base.

Nome da Porta no SO Endereo LPT1 LPT2


Pinagem Pinagem da porta paralela DB-25.

378 hexadecimal / 888 decimal 278 hexadecimal / 632 decimal

A pinagem no conector DB25 dividida em trs grupo, so eles:

1. Pinos de Dados (Data Register) 2. Pinos de Controle (Control Register) 3. Pinos de Status (Status Register)
Em nosso projeto utilizaremos apenas os pinos de dados (D0 a D7) para controlar dispositivos externos. E como estaremos apenas enviando sinal de sada (unidirecinoal), o projeto funcionar independente do modo de operao definido no BIOS Setup. Observe tambm que D0 a D7 representam 8 bits (1 byte). Ento o valor de sada pode variar entre 00000000 (0 decimal) e 11111111(255 decimal). Software Bem, agora que j temos um embasamento tcnico sobre o hardware da porta paralela, iremos nos concentrar no software que ir control-la. Nos sistemas operacionais da famlia Windows 9x , a maioria das linguagens de programao acessavam com facilidade a porta paralela atravs de funes nativas da prpria linguagem ou via cdigo assembler. Sistemas operacionais como o Windows NT/2000/XP no permitem o acesso direto a este tipo de porta. Nesse caso necessrio um driver de sistema. Para contornar este problema usaremos a Inpout32.dll que pode ser adquirida em http://www.logix4u.net/. Veja o funcionamente bsico da Inpout32.dll na figura abaixo:

A Inpout32.dll possui duas funces: Out32 e Inp32. A primeira para escrever um valor (byte) num endereo de I/O e a segunda para ler um valor (byte) de um endereo de I/O. Como no se trata de uma dll .NET devemos utiliz-la como Cdigo No-Gerenciado (UnManage Code). Aplicativo Vamos ento ao nosso software. Inicie o VS.NET e crie uma nova aplicao C# Windows Forms.

Vamos ento criar uma classe de nome Paralela.cs para manipular a dll. Veja figura abaixo.

Escreva o seguinte cdigo para a classe: using System; using System.Runtime.InteropServices;

namespace automacao { /// <summary> /// Summary description for Paralela. /// </summary> public class Paralela { // Escreve um byte no endereo [DllImport("Inpout32.dll", EntryPoint="Out32")] public static extern void Escrever(int endereco, byte valor); // L um byte do endereo [DllImport("Inpout32.dll", EntryPoint="Inp32")] public static extern byte Ler(int endereco); }

No esquea de declarar o namespace que permite a utilizao de dlls no gerenciadas. using System.Runtime.InteropServices; Embora o nosso projeto utilize apenas o mtodo de escrita (enviar dados para um dispositvo externo), decidi importar tambm o mtodo de leitura. Ento nossa classe possuir dois mtodos estticos que so: public static extern void Escrever(int endereco, byte valor); public static extern byte Ler(int endereco); Como deu pra perceber os endereos so do tipo inteiro e o valor escrito/lido do tipo byte. Dessa forma podemos garantir que o valor lido/escrito estar sempre entre 0 e 255. Agora vamos retornar ao nosso formulrio e deix-lo conforme a figura abaixo:

Vamos definir o seguinte cdigo para o boto Escrever: private void btnEscrever_Click(object sender, System.EventArgs e)

int endereco = Convert.ToInt32(txtEndereco.Text.Trim(), 16); byte dados = Convert.ToByte(txtDados.Text.Trim(), 2); Paralela.Escrever(endereco,dados); MessageBox.Show("O byte " + txtDados.Text.Trim() + " foi enviado para o endereo " + txtEndereco.Text.Trim() , "Automao");

Observe que utilizamos os mtodos estticos da classe Convert para converter os valores fornecidos para inteiro e byte. Pronto! Com isso nossa aplicao j est pronta para enviar dados para a porta paralela. Para testarmos nossa aplicao vamos construir um hardware bem simples. Hardware Como o nosso objetivo apenas didtico, iremos montar um circuito com 8 leds que sero acionados de acordo com a sada de dados de nossa aplicao. Observe que nada impede de utilizarmos um circuito com rels para acionar dispositivos mais potentes. Aconselho a pedir a ajuda de um tcnico caso voc no possua conhecimentos em eletrnica suficientes para montar o circuito. Se no desejar montar o circuito voc poder medir com um multmetro os valores de tenso diretamente nos pinos da porta paralela. Onde: 0 = 0 Volts 1 = 5 Volts Circuito

Componentes 8 Resistores de 470R 8 LEDs 1Conector DB25 macho Cabos, placa, etc... Exemplos do circuito montado: 1 Circuito montado numa matriz de contato

2 Circuito montado dentro do conector do cabo paralelo

Construindo Prottipos usando a Porta Paralela


Introduo A porta paralela do micro o meio mais fcil para controlar dispositivos externos, como LEDs, lmpadas e at mesmo eletrodomsticos. Neste tutorial ensinaremos a voc como usar a porta paralela do micro para controlar circuitos externos. Atualmente, as impressoras vendidas no mercado utilizam conexo USB. Com isso, na maioria dos micros modernos a porta paralela est disponvel, podendo ser usada para controlar circuitos externos ao micro. Na verdade, a idia por trs da porta paralela muito simples. Ela uma interface de comunicao paralela de 8 bits, e portanto voc tem oito bits disponveis l. Como cada bit de dados pode ser transmitido como 0 (desligado) ou como 1 (ligado), ns podemos ligar ou desligar diretamente at oito dispositivos, como LEDs, lmpadas e at mesmo eletrodomsticos. Voc pode conectar LEDs diretamente na porta paralela e brincar com eles na verdade exatamente isso o que iremos fazer neste tutorial, j que essa a melhor maneira de aprender como usar a porta paralela. Mas para circuitos pesados como lmpadas e eletrodomsticos, voc precisar construir um circuito de potncia, j que a porta paralela do micro no capaz de fornecer corrente suficiente para dispositivos como esses. Tambm explicaremos como construir este tipo de circuito.

clique para ampliar

Figura 1: Conectando LEDs porta paralela. Entendendo a Porta Paralela No micro a porta paralela usa um conector de 25 pinos (chamado DB-25, 25 pinos Dsub ou 25 pinos D-shell), como voc pode ver na Figura 2. Nas impressoras, no entanto, usado um tipo de conector diferente, chamado Centronics, que possui 36 pinos.

clique para ampliar

Figura 2: A porta paralela. Alm dos oito bits de dados existem mais sinais disponveis na porta paralela. Na tabela abaixo listamos todos os sinais bsicos da porta paralela e suas funes, bem como suas localizaes tanto no conector padro 25 pinos quanto no conector Centronics. A Coluna E/S indica se o sinal de entrada (E) ou de sada (S). Entrada significa que o sinal tem que vir do dispositivo para a porta paralela (isto , o sinal deve ser gerado pelo nosso prottipo); sada significa que o sinal vem da porta paralela.

Sinal

Nome

Pino Pino (Conector (Conector E/S padro 25 Centronics pinos) 36 pinos)

Descrio Indica se o dado est pronto ou no para ser transmitido. (0= Dado pronto para ser transmitido, 1= Dado no est pronto para ser transmitido.) Indica que a impressora est pronta para receber dados. Indica que a impressora no est pronta para receber dados.

/STROBE Strobe

01

01

/ACK

Acknowledge 10

10

BUSY

Busy

11

11

PE

Paper Empty 12

12

SELECT Select

13

13

/AUTO FD XT

Auto Feed

14

14

/ERROR Error

15

32

/INIT

Init

16

31

/SELECT Select Input 17 INPUT

36

D0 at D7 D0 at D7 GND Ground

2 at 9 2 at 9 18 at 25 19 at 30

S S

Indica que a impressora est sem papel. Indica que a impressora est on line pronta para receber informaes. A impressora move o papel para o incio da prxima linha. Aconteceu algum erro (impressora desabilitada, sem papel). Reinicia a impressora e limpa seu buffer de impresso. Dados podem ser transferidos para impressora apenas quando esta linha estiver em 0. Bits de Dados. Terra.

A porta paralela utiliza trs endereos de E/S: dados (378h), status (379h) e controle (37Ah). Se voc quer enviar dados para um dispositivo externo ao micro atravs da porta paralela, basta escrever os dados no endereo de dados da porta paralela. Por exemplo, se quisermos ligar todos os nossos LEDs, tudo o que temos que fazer enviar o valor 255 (que o decimal equivalente para 11111111, isto , todos os bits de dados configurados como ligado) para o endereo 378h. Claro que explicaremos mais sobre isto e tambm falaremos mais sobre os endereos de status e controle. Construindo um Prottipo Bsico Se voc nunca construiu qualquer prottipo para porta paralela antes, sugerimos que voc comece com o mais bsico de todos: um conjunto de oito LEDs, onde cada um dos LEDs conectado a um bit de dados da porta paralela. Com este prottipo bsico voc ser capaz de aprender muito sobre o funcionamento da porta paralela.

Quando um pino de dados colocado em 0, voc encontrar 0 V nele. Quando ele colocado em 1 voc encontrar 5 V. Isto o suficiente para ligarmos os LEDs, mas no para ligar lmpadas e eletrodomsticos; explicaremos adiante como alimentar dispositivos pesados. Portanto, tudo o que voc precisa fazer conectar cada um dos pinos de dados da porta paralela (pinos 2 at 9) ao LED (em seu terminal anodo, tambm conhecido como terminal positivo) e utilizar um pino de terra (qualquer um do 18 at 25) para conectar os terminais catodo (tambm conhecido como terminal negativo) de todos os LEDs. Voc pode ver o esquema na Figura 3.

clique para ampliar

Figura 3: Esquema para usar a porta paralela. Como os LEDs possuem polaridade, voc deve prestar ateno para localizar corretamente seus terminais anodo (positivo) e catodo (negativo). Se voc prestar bem ateno, ir reparar que os LEDs no so completamente redondos: o lado do catodo um pouco achatado, como voc pode ver na Figura 4.

Figura 4: Terminais de um LED. Para construir circuitos, recomendamos a utilizao de um protoboard. Protoboards permitem a voc montar prottipos sem a necessidade de nenhum tipo de solda.

clique para ampliar

Figura 5: Usando um protoboard para construir nosso prottipo. Construindo um Prottipo Bsico (Cont.) O modo mais fcil para construir o cabo que ser utilizado para conectar a porta paralela ao seu prottipo na protoboard pegando um cabo de impressora padro e cortar fora o conector Centronics. Feito isso, voc precisar descobrir onde cada fio est conectado. Com um multmetro na escala de resistncia (ou continuidade), coloque uma das pontas no fio que voc est tentando descobrir sua funo e teste a outra ponta em cada um dos pinos do conector de 25 pinos do cabo. Quando a resistncia for zero (ou o multmetro emitir um bipe, se voc estiver usando sua escala de continuidade), voc descobrir que pino no conector de 25 pinos o fio est conectado. Rotule o fio com a funo do pino (dessa forma voc no precisar repetir todo o processo novamente no futuro) e v para o prximo fio, at voc ter encontrado a funo de cada fio no cabo.

clique para ampliar

Figura 6: Detalhe do nosso protoboard. Veja como rotulamos os fios. A respeito da numerao dos pinos, preste ateno no conector de 25 pinos e voc ver que cada pino est numerado, veja na Figura 7.

clique para ampliar

Figura 7: Detalhe do conector de 25 pinos. Veja como cada pino est numerado. Interface de Potncia Se voc precisa controlar outros dispositivos alm de LEDs, voc precisar projetar e construir uma interface de potncia. A idia bsica conectar um transistor agindo como uma chave na sada dos dados, e este transistor chaveando o dispositivo que voc quer controlar para ligado ou desligado. Se voc quer controlar circuitos AC lmpadas e eletrodomsticos, por exemplo voc precisar usar um rel. O rel uma chave que liga toda vez que a corrente eltrica passa por ele. Voc pode ver uma interface de potncia bsica na Figura 9. Voc precisar repetir este circuito para cada bit que deseja usar, isto , se voc quer usar os oito bits da porta paralela de modo a controlar at oito circuitos AC, voc precisar repetir este circuito oito vezes, um para cada bit de dados. Voc precisar de uma fonte de alimentao externa com a mesma tenso do seu rel. Assim se voc usar um rel de 12 V voc precisar de uma fonte de alimentao de 12

V conectada ao +Vcc e terra. Cabo de fora o fio que ser conectado na tomada da parede e Tomada a tomada em seu circuito onde as lmpadas ou eletrodomsticos sero conectados.

clique para ampliar

Figura 9: Interface de potncia. Os diodos trabalham como proteo e apesar de recomendarmos o 1N4148 qualquer outro diodo de uso geral funcionar bem. O mesmo vale para o transistor, que recomendamos o BC547, mas qualquer outro transistor NPN de uso geral tambm pode ser usado. Recursos Avanados At agora falamos apenas sobre o envio de dados para fora da porta paralela. Na verdade, voc tambm pode ler dados usando a porta paralela. A porta paralela padro, tambm conhecida como SPP, usa dois endereos extras para status (379h) e controle (37Ah). Se voc ler o contedo do endereo 379h voc ser capaz de ler o estado dos pinos busy, acknowledge, Paper Empty, Select e Error encontrados na porta paralela. Isto pode ser muito til se voc deseja construir um circuito para enviar dados para o computador. Por exemplo, se voc tem algum tipo de sensor e quer um programa para ligar um alarme se este sensor disparar, esta uma maneira de realizar isto. Endereos de Status Como mencionamos acima, a leitura do endereo de E/S 379h faz com que voc tenha acesso aos pinos Busy, Acknowledge, Paper Empty, Select e Error. Voc obtm um valor de 8 bits com o seguinte formato:

bit 7 /BUSY

bit 6 bit 5 ACK PE

bit 4 SELECT

bit 3 ERROR

bit 2 bit 1 bit 0 X X X

Endereo de Controle A escrita de dados neste endereo de E/S (37Ah) permite voc a controlar outras linhas disponveis na porta paralela. Na verdade, voc tem mais bits de sada na porta paralela do que os oito bits de dados padro, mas esses bits extras so acessados em um endereo diferente. Alm disso, o bit nmero 4 do endereo de controle mascara a IRQ7. Com este bit configurado como 1 a IRQ7 pode ser usada.

bit bit bit bit 4 7 6 5 IRQ X X X 7


Modo Bi-Direcional

bit 3 /SELECT INPUT

bit 2 INIT

bit 1

bit 0

/AUTO FD /STROBE XT

Se voc j entendeu o bsico, pode seguir adiante e estudar dois diferentes modos de operao da porta paralela: EPP (Enhanced Parallel Port, Porta Paralela Aprimorada) e ECP (Enhanced Capabilities Port, Porta com Capacidades Estendidas). Esses dois modos so genericamente chamados modos bi-direcional, j que nesses modos os pinos de dados podem ser usados tanto para entrada como para sada, o que no ocorre na porta paralela padro, SPP, onde a porta pode ser usada apenas para enviar dados, mas no para receber (isto no totalmente verdade, j que voc pode usar bits de status para receber dados esta tcnica chamada modo nibble).

Você também pode gostar