A+porta+paralela

Home > Robótica > A porta paralela > Download

A porta paralela foi criada inicialmente para que o computador pudesse controlar impressoras conectadas a ele. Entretanto, logo foi percebido que a grande flexibilidade oferecida pela porta paralela poderia ser aproveitada para controlar muitos outros dispositivos em uma grande variedade de aplicações. Devido à facilidade de programação e de uso dos sinais transmitidos, a porta paralela foi durante muito tempo a maneira preferida de fazer projetos caseiros de controle de dispositivos externos ao computador.

** Modos de operação **
A porta paralela pode funcionar em três modos diferentes:
 * SPP (Standard Parallel Port)
 * EPP (Enhanced Parallel Port)
 * ECP (Extended Capabilities Port)

A seleção do modo de operação da porta paralela é feito através do BIOS Setup do computador. Para este trabalho utilizaremos o modo SPP. Neste modo, a porta paralela é capaz de transmitir 12 bits para saída e receber 5 bits na entrada.

O modo SSP é bastante simples de usar, mas tem a limitação de ser unidirecional e ter uma taxa de transferência de 150 KBytes/s. Para resolver este problema, foi desenvolvido o modo EPP. Este modo de operação da porta paralela é bidirecional e atinge uma taxa de transferência de 2 MBytes/s. Entretanto, para atingir esta taxa necessita de um cabo especial que permite taxas mais altas de transmissão.

Aumentar a taxa de transferência trouxe um problema: a necessidade de mais atenção por parte do processador. Então foi desenvolvido o modo ECP que é igual ao modo EPP, porém utiliza um canal de DMA o que faz com que a transmissão e recepção sejam feitas sem a intervenção do processador, aumentando o desempenho do computador.

A porta paralela usa um conector DB25 que geralmente fica localizado na parte de trás do computador. A figura 1 mostra o conector no computador.



Como o nome indica, é um conector de 25 pinos, destes 17 são usados para a comunicação e 8 são aterrados (massa). A Figura 2 mostra a configuração dos pinos.



Os pinos marcados em azul são usados para a saída de dados, destes, os pinos C0 a C3 são reservados para controle do dispositivo (impressora) e os pinos D0 a D7 para dados, mas nada impede que todos sejam usados para a saída de dados.

Os pinos marcados em vermelho (S3 a S7), são pinos de entrada, permitem que o computador receba informações externas e finalmente os pinos marcados em verde (18 a 25) são aterrados (massa).

** Registradores **
Para acessar os dados pela porta paralela é preciso ler ou escrever nos endereços de memória associados à porta. Estes endereços são chamados de registradores. Para a porta paralela podem ser associados dois conjuntos de registradores conforme seja utilizada a porta 1 ou a porta 2 (LPT1 ou LPT2).

Normalmente é a porta 1 que está configurada para uso no computador. Importante lembrar que a seleção de qual porta será usada é feita no BIOS/Setup da máquina ou no Gerenciador de dispositivos do Windows.

Existem 3 registradores para cada porta paralela, cada um controla um conjunto de bits da porta. Para a porta LTP1, que é a porta default na maioria dos computadores, temos o conjunto de registradores listados na tabela 3.

Tabela 3 – Endereços dos registradores da porta LTP1
 * ** Registrador ** || ** Endereço ** || ** Função ** || ** Pinos ** ||
 * Registro de dados || 378h || Saída de dados || D0 a D7 ||
 * Registro de status || 379h || Entrada de dados || S3 a S7 ||
 * Registro de controle || 37Ah || Saída de dados || C0 a C3 ||

Note que os registradores de controle e de status não utilizam um byte inteiro, o registro de status usa os cinco bits mais significativos e o registro de controle usa os quatro bits menos significativos. É preciso ter cuidado para não alterar os outros bits do registro de controle se este for utilizado para o envio de dados.

** Programação no Windows **
Visto que o Windows bloqueia o acesso direto ao endereço dos registradores, é necessário utilizar a dll inpout32.dll criada especialmente para o acesso à porta paralela. Esta dll pode ser obtida gratuitamente pela internet em vários endereços facilmente encontrados em uma busca rápida em qualquer mecanismo de busca.

Para facilitar a programação no Delphi foi criada a unit ParBib que carrega a dll e fornece funções de acesso a todos os bits da porta paralela. Também acompanha um programa exemplo que usa a unit ParBib para ler/gravar dados na porta paralela.



** Placas para teste de entrada e saída **
Para testar o programa, é preciso dispor de um cabo com um conector DB25 macho, que possa ser conectado ao computador. Um cabo paralelo comum de impressora serve, basta retirar o conector que seria encaixado na impressora. Após cortar ou desmontar a ponta que encaixa na impressora, é preciso identificar os fios. Isso pode ser feito com um multímetro ou com qualquer dispositivo que teste continuidade. Na falta de um multímetro pode ser usado um led alimentado por duas pilhas comuns de 1.5 volts e um resistor de 220Ω a 440Ω entre o led e a bateria para não descarregar as pilhas muito rápido. Além do cabo, é bastante útil montar uma plaquinha com leds para mostrar o estado dos bits da saída paralela e testar o programa, esta placa é bastante simples contém apenas um conector para o cabo paralelo e um led e um resistor para cada pino de saída da porta paralela, como mostra a foto na figura 4.



A figura 5 mostra o esquema elétrico da placa de teste. Os resistores R1 a R8 podem ter valores de 220Ω a 440Ω. Para a placa de testes mostrada na figura 4 foram acrescentados leds e resistores também para os pinos C0 a C3 (pinos 1, 14, 16 e 17).



Os conectores à esquerda na foto da Figura 6, servem para conectar a uma segunda placa com interruptores e assim testar também os pinos de entrada da porta paralela. A Figura 8 mostra as duas placas conectadas. O circuito elétrico da placa para teste dos pinos de entrada é bem parecido com o da outra placa, mas os leds são substituídos por interruptores. Os interruptores da segunda placa foram retirados de mouses sucateados.

**Importante:** A porta paralela provê uma tensão de saída que varia de 2.5V a 4V, conforme o computador e fornece uma corrente de alguns miliamperes. Isso é suficiente para acender alguns leds como mostrado nas placas acima, ou ativar as entradas digitais de CIs, mas não conseguem alimentar um circuito inteiro. Um circuito mais complexo do que simplesmente acender alguns leds deve obrigatoriamente ter uma fonte de alimentação própria.

Software para controle da porta paralela
Como citado acima, para usar a porta paralela no Windows é necessário dispor da dll inpout32.dll. Esta dll é de domínio público e pode ser facilmente encontrada em diversos sites na internet. Já a unit ParBib.pas foi desenvolvida especialmente para este projeto. Esta unit carrega a dll inpout32.dll e facilita bastante ler e escrever nos pinos da PP. Além disso também foi desenvolvido um programa (ParControl.exe - figura 3) para dar acesso aos pinos de entrada e saída da porta e que também serve de exemplo de uso da unit ParBib. Permite selecionar a porta 1 ou porta 2, lembrando que essa seleção serve apenas para o programa ler ou gravar no endereço correto. Qual porta será ativada pelo computador depende da configuração feita no Bios/Setup da máquina. Além disso, tem uma interface bastante intuitiva com botões para ativar/desativar todos os pinos de saída e verificar o estado dos pinos de entrada (Figura 3).


 * Download do software para acesso à porta paralela **