Como gravar o bootloader do ATtiny85 com Arduino
O Atmel ATtiny85 é um microcontrolador usado em muitas placas como a Digispark e a Franzininho, caracterizando-se por ser um componente de baixo custo e muito útil em projetos onde não existe a necessidade de utilização de muitas portas de comunicação. Neste tutorial vamos ver como gravar o bootloader do Attiny85 usando uma placa Arduino Uno.
Use este procedimento caso você precise “zerar” o microcontrolador ou simplesmente se o seu ATtiny85 veio sem bootloader.
Conexão do ATtiny85 no Arduino
Antes da conexão vamos dar uma olhada na pinagem do ATtiny85. Ele é um microcontrolador de 8 bits com 8KB de memória e 512 bytes de memória EEPROM. Tem 6 portas digitais, das quais 4 podem ser usadas como portas analógicas.
O microcontrolador tem um oscilador interno, mas você pode também usar um cristal nos pinos 2 e 3 (XTAL1 e XTAL2). Como interface de comunicação temos à disposição SPI e I2C.
Para gravação do bootloader vamos usar os pinos 1, 5, 6 e 7 do microcontrolador, conectados nas portas de 10 a 13 do Arduino, conforme imagem abaixo. A alimentação é de 5V e será fornecida pelo próprio Arduino, nos pinos 8 (Vcc) e 4 (GND):
Alguns tutoriais da internet recomendam que você coloque um capacitor de 10µF entre os pinos RESET e GND do Arduino caso esteja enfrentando problemas de reset no Arduino na hora de gravar o bootloader. Nos nossos testes, isso não foi necessário.
Configurando a IDE para gravação do bootloader ATtiny85
Vamos agora configurar a IDE para gravação do bootloader. Estou usando a versão mais atual da IDE no momento (1.8.7). O processo é relativamente parecido com o que usamos no post Gravando bootloader no ATMega328 usando Arduino, e no procedimento abaixo vamos habilitar a IDE para reconhecer o ATtiny85.
Entre na IDE do Arduino e em Arquivo -> Preferências, procure o campo URLs Adicionais para Gerenciadores de Placas, inserindo o endereço abaixo:
Sua tela deve ficar assim:
Clique em OK e agora vá no menu Ferramentas -> Placa -> Gerenciador de placas:
Na tela seguinte, digite attiny no campo superior e selecione attiny by David. A. Mellis, clicando em seguida em Instalar:
Finalizada a instalação, verifique novamente o menu Ferramentas -> Placa para se certificar de que os controladores da linha ATtiny aparecem na lista:
Configurando o Arduino Uno como ISP
Vamos agora carregar o programa que vai possibilitar que o Arduino Uno grave o bootloader no ATtiny85. Vá até o menu Arquivo -> Exemplos – > ArduinoISP e selecione o programa ArduinoISP:
Faça o upload desse programa para o Arduino Uno normalmente.
Gravando o bootloader do ATtiny85
O processo de gravação do bootloader do ATtiny85 agora é bem simples. Primeiro vá até o menu Ferramentas -> Placa e selecione o microcontrolador ATtiny25/45/85. Em seguida certifique-se de que no menu Ferramentas as configurações estão como essas mostradas abaixo: Placa Attiny25/45/85, Processador ATtiny85, Clock de 8 MHz e o programador configurado como Arduino as ISP:
Tudo conferido? Nesta mesma tela, clique em Gravar Bootloader e aguarde alguns segundos:
Se tudo estiver ok, você deve visualizar a mensagem abaixo:
Em alguns tutoriais eu vi que foi usado o clock interno de 1 MHz do microcontrolador. Nos nossos testes a opção de 8 MHz funcionou normalmente, logo se algo der errado, tente fazer essa alteração nas configurações do ATtiny85.
Testando o ATtiny85
Com o bootloader gravado no ATtiny85, nada melhor do que fazer um pequeno teste para verificar se está tudo ok.
Mantenha o circuito montado durante essa fase de gravação do programa. Copie o programa abaixo na IDE do Arduino e faça o upload para o ATtiny85:
//Programa: Pisca led com ATtiny85 //Autor: Arduino e Cia void setup() { //Define o pino 0 do ATtiny85 como saida pinMode(0, OUTPUT); } void loop() { //Acende o led digitalWrite(0, HIGH); //Aguarda 1 segundo delay(1000); //Apaga o led digitalWrite(0, LOW); delay(1000); }
Este é basicamente o programa de exemplo Blink, que já vem na IDE do Arduino. Repare que a porta que será acionada é a porta digital 0 (zero) do microcontrolador.
Agora sim você pode desconectar o ATtiny85 do Arduino, montando então o circuito abaixo. Colocamos um led na porta 0 (fisicamente é o pino 5 do microcontrolador) e alimentamos o circuito com uma fonte externa de 5v:
O resultado será esse aqui:
Experimente outras opções de programação do ATtiny85, como por exemplo usá-lo com um display Oled ou um display LCD 16×2 I2C e sensor de temperatura DHT11.
Muito bacana esse Post , Parabéns !
Obrigado Fabio!
Abraço.
Adilson
Valiosas informações. Grato por compartilhar o conhecimento!
Oi Carlos,
Muito obrigado. Aguardo sua visita aqui no blog sempre que possível. 🙂
Abraço!
Adilson
Boa tarde ! Teria um email para que posso me tirar uma dúvida ? Como iniciar a programação em C utilizando o deslocamento de bits ?
Boa noite,
Utilize o formulário de contato no lado direito da página, por favor.
Abraço!
Adilson
[…] de começar, eu recomendo a leitura do post Como programar o ATtiny85 através do Arduino, pois é muito importante entender como isso é feito. Você poderia usar um Arduino ou fazer um […]
[…] First viewed here […]
Oi Adilson, muito boa a apresentação de seu tutorial. Obrigado!
Estou utilizando a IDE 1.8.12 , com um Arduino UNO exatamente conforme ilustrado para gravar um ATtiny85 20PU. Ao tentar gravar o bootloader, bem como carregar um sketch usando programador, aparece o erro:
avrdude: Expected signature for ATtiny85 is 1E 93 0B
Double check chip, or use -F to override this check.
Erro ao gravar o bootloader.
Experimentei diferentes protoboards e jumpers, pensando fosse algum mau contato.
Tentei com e sem o capacitor.
Tentei setar com 1MHz e 8MHz
Será que a versão da IDE?
O que vocês me sugerem?
Obrigado!
Oi Lucas!
Obrigado… Eu já vi esse erro antes, mas estou sem o Attiny85 pra testar com a IDE 1.8.12… Dê uma olhada nesse artigo, por favor, pode te dar uma luz:
https://www.avrfreaks.net/forum/can-i-recover-attiny85-bad-signature
Mas acho legal também testar com uma IDE um pouco mais antiga.
Abraço!
Adilson
Lucas, bom dia.
Verifique corretamente a versão do seu Attiny. Este mesmo erro ocorreu comigo, na tentativa de gravar o bootloader do Attiny25 sobre o Attiny85. E foi corrigida a versão, sem apresentar este erro no final.
Adilson, post TOP!
Show! Valeu Felipe! 🙂
Abraço.
Adilson
olá gostaria de saber qual o modelo desse attiny85, pq eu comprei o attiny85 SU e ele é mt pequeno e não cabe na protoboard 🙁
Oi Iagor,
O modelo usado é o ATTINY85 20 PU, é esse modelo aqui. O que vc comprou é a versão SMD.
Abraço!
Adilson
E quando da o erro abaixo?
avrdude: Yikes! Invalid device signature
O que será que quer dizer?
Oi Vinicius,
Eu “salvei” um microcontrolador ATtiny85 usando um cristal de 16Mhz externo. Depois disso voltou a funcionar a gravação do bootloader com o oscilador interno de 8MHz.
Abraço!
Adilson