quarta-feira, 24 de dezembro de 2014

Programando Attinys com USBasp - Parte 1

Drivers e Atualizando

Tenho usado o attiny85 há algum. Ele é ideal pra pequenos projetos, onde se precisa de poucas GPIOs ( o attiny85 possui 5 ! ). O problema é que sempre que eu precisava programar um attiny eu tinha que  usar um Arduino como programador (ArduinoISP) e depois fazer as devidas ligações do UNO pro attiny numa protoboard. Como está na imagem abaixo.

ArduinoISP
Como dá pra perceber, esse método não é nada prático. Muitas vezes eu deixava de utilizar o attiny por preguiça de fazer essas ligações todas... Então fui atrás de um programador barato.

Eis que me deparo com o USBasp, programador baseado no atmega8/48/88 , suportado pelo avrdude e pela Arduino IDE.

       
USBasp
Pode ser encontrado por menos de U$ 4 na aliexpress. Eu comprei um de 10 pinos do seguinte link : USBasp.
Entretanto aconselho procurar os de 6 pinos, que é a pinagem mais ultilizada e encontrada nos arduinos ( Header ICSP).

O USBasp chegou em perfeito estado, porém não era reconhecido pelo windows....

  • Instalado Os Drivers

Achei um programinha num tutorial do freetronics(link) que torna a instalação dos drivers do usbasp bem tranquila. vamos ao passo-a-passo:
  1. Desconecte o USBasp do computador
  2. Baixe o Zadig no link: http://zadig.akeo.ie/
  3. Execute o Zadig com permissões de administrador e plugue o USBasp no computador.
  4. Coloque as opcões como na imagem abaixo e clique em instalar!!


Drivers instalados!! Porém quando tentava fazer upload de algum sketch , a arduino ide me retornava o seguinte erro:

avrdude: warning:cannot set sck period.please check for usbasp firmware update.

Pois é.... infelizmente os usbaps são enviados com firmware antigo, mas foi barato né haha vale a pena o esforço.
Para realizar a atualização é necessário soldar um jumper no USBasp que permite atualizações. No modelo que eu comprei os pads se encontrão próximos ao pino MOSI :
jumper de auto-programação

Bem vamos atualiza-lo então! Será nescessário um arduino pra realizar a atualização do usbasp.

  • Atualizando Firmware

  1. Programar seu arduino como isp.
    . Processo bem simples de realizar:
    . Conecte seu Arduino no pc
    . Dos Examples( Menu File). Selecione ArduinoISP e de upload
  2. Baixar o Firmware mais recente do site do usbasp: http://www.fischl.de/usbasp/
    . Se o seu USBasp ultilizar um atmega8 (MUITO provável) pode baixar direto do meu dropbox no link: https://www.dropbox.com/s/3tpjyefkzxphb3m/usbasp.atmega8.2011-05-28.hex?dl=0
  3. Coloque o arquivo do firmware correspondente ao microcontrolador do seu USBasp no diretório hardware\tools\avr\bin da sua parta arduino.
    . No meu computador foi : C:\Program Files (x86)\Arduino\hardware\tools\avr\bin
  4. Certifique-se de que o jumper de auto programação está devidamente conectado ( como na imagem ali de cima).
  5. Deconecte o USBasp e o Arduino do computador e conecte os seguintes pinos do arduino aos pinos de programacao do USBasp:
  6. Conecte o Arduino no pc e aba uma command pront (cmd)  no mesmo diretório que você decompactou o firmware  ( hardware\tools\avr\bin ).
  7. Rode o seguinte comando pra verificar que o avrdude consegue conectar com o USBasp:
    . avrdude -C ../etc/avrdude.conf  -c arduino -P COM3 -b 19200 -p m8 -v
    . nota: se seu arduino não estiver na COM3 você deve colocar qual a COM a Arduino IDE estava.
  8. Se tudo estiver ok o avrdude deve retornar uma mensagem mais ou menos assim : 
    avrdude se comunicando com usbasp através do arduinoisp.
  9. Chegou a hora de atualizar o firmware! Rode o seguinte comando:
    avrdude  -C ../etc/avrdude.conf -c arduino -P COM3 -b 19200 -p m8 -U flash:w:c:\usbasp.atmega8.2011-05-28.hex
  10. PROOOOONTO!! Seu USBasp agora está atualizado e funcional! Desconecte ele do arduino e desconecte o jumper de auto-programação.
Agora você pode programar seus arduinos,atmegas,attinys... Tudo isso por U$3!! UHUUUU!!!!!!
Só se lembre de selecionar o USBasp como programmer no menu tools.

Na parte 2 vou mostrar como conectar o attiny ao usbasp e como utiliza-lo para grava bootloader caso o microcontrolador esteja com clock de 1MHZ.

2 comentários:

  1. Eu fiz exatamente como você descreveu, na hora de lêr o conteúdo da USBASP ele fez, porém na hora de carregar o firmware novo ele não fez e a mensagem foi a seguinte:
    avrdude: invalid file format '\usbasp.atmega8.2011-05-28.hex' in update specifie
    r
    avrdude: error parsing update operation 'flash:w:c:\usbasp.atmega8.2011-05-28.he
    x'

    C:\Program Files (x86)\Arduino\hardware\tools\avr\bin> avrdude -C ../etc/avrdud
    e.conf -c arduino -P COM8 -b 19200 -p m8 -U flash:w:c:\usbasp.atmega8.2011-05-28
    .hex
    avrdude: invalid file format '\usbasp.atmega8.2011-05-28.hex' in update specifie
    r
    avrdude: error parsing update operation 'flash:w:c:\usbasp.atmega8.2011-05-28.he
    x'

    ResponderExcluir
  2. Eu coloquei o arquivo do Firmware novo dentro da pasta : Arduino\hardware\tools\avr\bin como descrito e o arquivo foi o : usbasp.atmega8.2011-05-28
    .hex

    O que está errado?

    ResponderExcluir