Programador de microcontroladores AVR
Uma das principais ferramentas no desenvolvimento de projetos com microcontroladores é o chamado programador, ou gravador, responsável por entre diversas coisas enviar o programa desenvolvido para a memória de programa do microcontrolador, para ele assim desempenhar a função desejada. Existem diversos equipamentos que desempenham esta função e eles são basicamente uma interface entre um computador e o microcontrolador que se deseja programar, variando em compatibilidade de famílias de microcontroladores e porta de comunicação com um computador, sendo hoje mais usual ferramentas USB, embora programadores que utilizavam portas paralela tenham sido muito populares num tempo em que este barramento era comum, principalmente em computadores de mesa.
O projeto aqui descrito é de um programador para microcontroladores AVR e interface SPI por meio de conexão USB de baixo custo e fácil montagem, sendo muito interessante para pessoas que estão iniciando estudos com microcontroladores e tem interesse em montagem em placa de circuito impresso. Baseado no projeto de código aberto USBtinyISP, desenvolvido por Ladyada, a versão aqui proposta possui como principal modificação, com a finalidade de facilitar a sua montagem, a troca do ressonador cerâmico, dada a baixa disponibilidade no mercado brasileiro, por um cristal de mesma frequência e dois capacitores. Outras alterações feitas consistem basicamente no desenho da placa de circuito impresso. Como restrições este programador somente suporta microcontroladores com 64KBytes de memória flash ou menos. Microcontroladores com interface TPI, como Attiny4/5/9/10 também não podem sem programados com este dispositivo.
Para a montagem é indicado o uso das seguintes ferramentas:
Abaixo a lista de componentes usados na montagem do circuito:
Com o uso do multímetro no modo de teste de continuidade deve ser feita uma busca por possíveis problemas na montagem, como curto-circuitos e falsos contatos oriundos de soldas mal feitas.
Após checagem do circuito basta inserir os circuitos integrados em seus respectivos soquetes e o programador está pronto para ser conectado a um computador.
Enquanto o jumper fechar os contatos do pin header JP2 presente na placa a conexão USB do programador alimentara o circuito ao qual o cabo ISP está conectado, fornecendo 5V. Caso a tensão de operação do circuito seja menor, como 3,3V por exemplo, ou o circuito de interesse consumir mais do que 100mA basta remover o jumper e alimentar o circuito de forma independente.
São presentes na placa dois LEDs, um verde e um vermelho. O LED verde indica presença de conexão USB, enquanto o LED vermelho indica progresso no procedimento de programação.
A programação de bootloader em uma placa Arduino pode ser feita diretamente por meio do próprio software para desenvolvimento Arduino, conhecido como IDE(Integrated Development Environment).
Com o uso de um cabo ISP de 6 pinos é feita a conexão entre o programador e a placa Arduino. Atente ao fato de que se deve conectar o cabo respeitando a ordem dos pinos, sendo o pino número 1 sinalizado pela linha vermelha no cabo. No conector ISP do programador um chanfro impede que o cabo seja conectado ao contrário.
No menu Ferramentas deve ser escolhida a placa de interesse no sub-menu Placa, e o programador no sub-menu Programador, devendo ser selecionado o programador USBtinyISP.
Para iniciar a gravação do bootloader deve ser pressionado o comando Gravar Bootloader.
Após comando de gravação o progresso pode ser visto acima do console da IDE, onde também é sinalizada a sua conclusão.
Outro recurso presente na IDE Arduino é de o carregamento da sketch diretamente para um microcontrolador sem que seja necessária a gravação do bootloader e transferência via comunicação serial. Isso é feito por meio do comando Carregar usando programador presente no menu Sketch. Este recurso é muito interessante pois torna possível a montagem de circuitos programados em Wiring na IDE Arduino com poucos componentes e menor custo.
A ferramenta AVRDUDE é um programa em linha de comando bastante popular utilizado na gravação de microcontroladores da família AVR da Atmel, e está presente na ferramenta de desenvolvimento WinAVR para sistemas Windows.
Para testar o funcionamento do programador basta executar o comando **avrdude -c
O conteúdo aqui presente contém muitas referências ao projeto desenvolvido por Adafruit Industries, ao qual se baseia, cujo conteúdo original pode ser acessado através do seguinte link USBtinyISP.
O repositório github guarda os arquivos de esquemático e desenho de placa de circuito impresso para o software EagleCAD.