terça-feira, agosto 16, 2011

AVR: Programador USBtinyISP, parte 1

Os programadores que vimos até agora, embora de baixo custo e complexidade, utilizavam as interfaces paralela e serial do PC, que estão em franca extinção. Neste post e no seguinte vamos ver um programador que se conecta a uma porta USB, um projeto da ladyada.net.

Um outro ponto importante no USBtinyISP é que a geração dos sinais para programação passa ser feita dentro do programador, o que potencialmente é mais confiável que gerá-los no PC (onde sabe-se lá o que mais está rodando).

Embora seja um pouco mais complexo, este projeto também está ao alcance do hobista.

Conectando a uma porta USB, de modo simples e barato

Normalmente a conexão a uma porta USB é feita utilizando-se um componente específico. Uma outra alternativa é utilizar microcontroladores mais sofisticados, que incluam uma interface apropriada. Não é nenhum destes caminhos que o USBtinyISP segue.

Do ponto de vista elétrico, o padrão USB utiliza duas linhas de dados, D+ e D-, normalmente operando em modo diferencial (sinais complementares). Um caso especial é a indicação de fim de pacote, quando os dois sinais são colocados em nível baixo. O nível baixo corresponde a 0.0 a 0.3 V; o nível alto deve estar entre 2.8 e 3.6 V. Na velocidade mais baixa do padrão a taxa de comunicação é 1.5 Mbits/s.

É um pouco apertado, mas isto pode ser feito diretamente com um microcontrolador AVR (no caso um ATtiny2313) rodando a 12Mbps (cada 8 clocks correspondem a um bit na USB). O USBtinyISP parte do projeto USBtiny, que se inspirou em outros projetos anteriores. Para limitar o sinal de saída em 3.6V, zeners são conectados às linhas de dados.

O Circuito

O circuito possui basicamente um ATtiny2313 e um driver 74HC125 para conexão ao microcontrolador a ser programado:


A base de tempo é gerada a partir de um cristal (para maior precisão) e dois LEDs indicam o funcionamento (um verde indica que a USB está conectada e um vermelho indica que uma operação está em andamento).

Dois jumpers definem se a alimentação Vcc do circuito está conectada à USB e/ou ao microcontrolador sendo programado. Tipicamente o programador será alimentado pela USB; esta alimentação pode ser levada ao microcontrolador se ele não tiver alimentação própria.

Firmware e Drivers

O firmware para o ATTiny pode ser baixado do ladyada.net.

Para uso no Windows é necessário instalar um driver, que também pode ser baixado do ladyada.net.

O Ovo e a Galinha

Para montar este gravador de AVR é preciso gravar o firmware em um ATtiny. Isto pode ser feito usando um dos gravadores que vimos anteriormente (eventualmente em um PC antigo de um parente ou amigo). Outra alternativa (que veremos no futuro) é usar um Arduino como programador.

Na parte 2 veremos a minha montagem e os testes com o gravador.

Atualização 16/05/12:  Corrigido um erro no esquema, que impedia o funcionamento.

Nenhum comentário: