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
- 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:
Postar um comentário