quarta-feira, agosto 03, 2011

AVR: Programador PonySer

Os programadores que vimos até agora se conectam à porta paralela do PC. Isto é um problema, já que este tipo de porta não está presente na maioria dos computadores fabricados nos últimos anos, particularmente nos notebooks. O programador que vamos ver hoje se conecta à porta serial que, apesar de também estar caindo em desuso, ainda se encontra em muitos PCs e conversores USB serial são bem mais comuns que conversores para porta paralela.

Princípio de Operação

Lembrando, a programação SPI do AVR requer três sinais de saída do programador (RESET, MOSI e SCK) e um pino de entrada (MISO), todos trabalhando em nível "TTL" (entre 0 e 5V). Isto acarreta em algumas dificuldades no uso da porta serial:
  • A porta serial possui somente dois sinais óbvios de saída: RTS e DTR
  • Os sinais na porta serial podem chegar a +12V e -12V
O programador PonySer utiliza as seguintes soluções:
  • Os sinais RTS e DTR são conectados a SCK e MOSI através de um resistor com um diodo zener limitando a tensão a +5V. O nível alto do sinal serial (+12V) corresponde ao nível alto da saída do programador (+5V)
  • O sinal TxD é usado para controlar o sinal de RESET. Para forçar o sinal TxD em nível lógico zero (que corresponde a +12V no RS232) utiliza-se o recurso de break da interface serial. Nesta condição um transistor irá forçar o sinal de RESET em zero. Quando TxD estiver em repouso (nível lógico 1, -12V no RS232), um resistor de pull-up mantem o sinal de RESET em nível lógico alto (+5V).
  • O sinal MISO do programador é conectado diretamente ao sinal CTS da porta serial. A rigor o nível lógico baixo (0V) é um valor inválido para o padrão RS232, porém ele acaba sendo tratado como valor lógico baixo. O nível lógico alto (+5V) já está na região válida do RS232 para nível lógico alto.

Resumindo, trata-se mais de uma adaptação técnica (gambiarra) do que engenharia de precisão.

Montagem de Teste

A página de onde peguei o circuito possui belas fotos do circuito montado em uma pequena placa para caber dentro da capa do conector serial. Resolvi seguir a mesma linha, e quase me arrependi no meio do caminho.


Minha recomendação é acomodar o circuito em uma pequena caixa separada entre os dois conectores; não fica tão bonito mas certamente será mais fácil de montar.

Testes Preliminares

Antes de sair ligando um circuito com +12 e -12 a um microcontrolador, resolvi fazer um pequeno programa para controlar os sinais RTS, DTR e TxD e medir com um multímetro as tensões de saída. O programa apresenta também o estado do sinal CTS.

Para quem tiver interesse, o programa (SinaisSerial, escrito em C com o Visual Studio 6) está disponível na pasta de arquivos do blog (veja no alto à direita).

Testes

Fiz os testes de costume, sob Windows XP em um micro com porta serial. Abaixo o teste de gravação, com o programador ligado à porta COM1.


Referências

O circuito foi obtido desta página,

Nenhum comentário: