terça-feira, agosto 23, 2011

AVR: Colocando um Programador para Trabalhar

Embora ainda não tenha concluído o meu estudo dos programadores, surgiu uma oportunidade de colocar um deles para trabalhar que vale a pena registrar aqui.

Lá no Garoa Hacker Clube nós temos alguns Tautinos. O microcontrolador (no caso um ATmega8) de um deles foi utilizado para montagem de um protótipo e teve o bootloader sobrescrito. Veremos aqui como fiz para regravá-lo.

Para fazer a recuperação usei o ATmega8 de um Tatuíno inalterado e o programador PonySer. Uma outra alternativa seria pesquisar qual a programação correta do lock e fuses e usar a imagem de bootloader que vem no software do Arduino. No lugar do PonySer eu poderia ter usado qualquer um dos programadores que montei até agora.

Para facilitar o teste eu gravei no Tatuíno o exemplo Blink do Arduino. Como vou copiar toda a Flash, ao final do processo o ATmega8 recuperado terá o bootloader do Arduino e o exemplo.

Um cuidado importante é fornecer clock ao ATmega8. O Tatuino utiliza um ressonador de 16MHz; utilizei um cristal de 16MHz (com capacitores de 27pF para terra nas duas extremidades), já que a programação dos fuses é a mesma para ressonador e cristal.

O primeiro passo foi verificar como estavam programados o lock e os fuses nos dois AVRs. Para isto usei o recurso do avrdude aceitar vários comandos -U na linha de comando. Como arquivo de saída usei con (console); devido à bufferização a saída dos três comandos -U sai após as mensagens normais do avrdude:


O segundo passo foi ler a Flash e salvar em arquivo. Fiz isto com os dois ATmega8, para salvar o firmware do protótipo e ter a imagem usada no Tatuíno:


Por último foi só regravar os fuses (o lock estava igual) e a Flash:

Finalizada a gravação, recoloquei os ATmega8 nos Tatuínos e foi só alimentar para ver os LEDs piscarem alegremente.

3 comentários:

rsenas disse...

Boa noite, estou querendo gravar um Atmel 1284P vc teria dicas disso?
Gravador, soft e dicas para gravar os fuses?

Um abraço.

Daniel Quadros disse...

Não conheço o ATmega1284P, mas o avrdude parece suportá-lo. Aqui no blog eu apresento vários gravadores que podem ser usados com o avrdude e um resumo dos comandos do avrdude (http://dqsoft.blogspot.com.br/2011/07/avrdude.html)

rsenas disse...

Obrigado Daniel.