terça-feira, setembro 20, 2011

Controlando a Porta Paralela do PC

Um dos motivos da falta de posts sobre a programação de microcontroladores AVR foi uma série de problemas com as montagens anteriores. No caso do programador serial eu tinha feito um programa de teste para exercitá-lo, faltava um programa de teste para o programador paralelo.


Enquanto que a API do Windows dá um razoável controle sobre os sinais da porta serial, ela é totalmente inadequada para o uso da porta paralela para algo diferente da conexão de uma impressora. A solução é o acesso direto ao hardware. Entretanto, a partir do Windows NT aplicações normais não tem permissão para executar as instruções IN e OUT.

Já vimos que o AVRDUDE requer um driver para acesso à porta paralela, o giveio.sys. Mas o que este driver faz e como usá-lo? Uma busca na internet localizou duas informações importantes: o fonte do giveio e a indicação que ele foi originalmente apresentado na revista Dr Dobb's Journal de Maio de 96, que convenientemente tenho na minha estante. Resumindo uma interessante história, o driver giveio fornece às aplicações o direito de executar as instruções IN e OUT. Para isto basta abrir o dispositivo "giveio".

A documentação do hardware eu encontrei parcialmente na internet e em mais detalhes no meu velhusco "The Undocumented PC". A figura abaixo (copiada de um tutorial da internet) resume a associação entre os pinos do conector e as três portas do hardware:


Os demais bits das portas tem as seguintes funções:
  • S0 e S1 não são usados
  • S2 indica que tem uma interrupção pendente
  • C7 e C6 não são usados
  • C5 define se o registrador de dados é de saída (0) ou entrada (1)
  • C4 habilita a interrupção
Os bits S7, S3, C3, C1 e C0 são invertidos em relação ao sinal nos pinos. O status register é um registrador de leitura e o control register é de escrita; o data register é normalmente usado como escrita mas pode também ser usado como leitura.


Com estes conhecimentos e o circuito do programador STK-200, fica fácil fazer um pequeno programa de teste, que você encontra nos arquivos do blog.

Nenhum comentário: