Tutorial: Programando ATtiny85 utilizando um Arduino

 

Olá Garagistas! No Tutorial de hoje mostraremos como você pode passar uma programação para um microcontrolador ATtiny85 utilizando um Arduino. Como demonstração faremos uma contagem binária utilizando 5 LEDs (5 bits).

 

Material Utilizados:

1x ATtiny85

1x Arduino UNO

1x Capacitor 10uF

5x LED Vermelho

5x Resistor 330R

1x Resistor 10KΩ

1x Chave Tactil

1x Protoboard 430

Alguns Jumpers

 

 

1. ATtiny85

Imagem 1 - ATtiny85

 

O ATtiny85 possui algumas diferenças se comparado com um ATmega328 (Arduino UNO):

 

1.1) O ATmega328 (Arduino UNO) precisa de bootloader para rodar os códigos, já o ATtiny85 como é gravado por SPI através do Arduino não precisa, logo toda sua memória está disponível para código.

 

1.2) O ATtiny85 possui menor quantidade de pinos e também uma menor quantidade de memória disponível. Ele é ideal para projetos onde não é necessário a quantidade de pinos e memória que o ATmega328 possui. Logo, utilizando-o você pode deixar seu projeto mais barato e menor.

 

1.3) Assim como o ATmega328, ele foi construído com uma arquitetura 8bits e possui:

    - Tensão de operação de 2.7V a 5.5V

    - 8Kb de Flash (Armazenar Código);

    - 512bytes de EEPROM (Armazenar Dados);

    - 512bytes de SRAM (Processar informações);

 

1.4) Na tabela abaixo estão alguma das características principais da pinagem do ATtiny85:

Tabela 1 - Características dos pinos do ATtiny85

 

OBS¹: O pino 1 (PB5) geralmente é utilizado como pino de RESET, por isso quando configurado como I/O fornece menor corrente se comparado com os outros pinos. Ele também pode ser utilizado como como um conversor ADC (ADC0). Lembrando que quando configurado como pino de I/O ou ADC, você perde o botão de RESET.

OBS²: Via software você pode criar PWM com qualquer pino de I/O do ATtiny85.

 

1.5)Na imagem abaixo você verá a pinagem do ATTiny85:

Figura 1 - Pinagem ATtiny85

 

 

2. ISP

ISP é a sigla de "In-System Programming" (programação "no sistema"), é a propriedade que alguns dispositivos lógicos programáveis como microcontroladores e outros chips eletrônicos possuem de ser programados enquanto estão instalados em um sistema completo. Décadas atrás, para se programar os microcontroladores, era necessário ter uma placa de programação para se programar o chip ai sim depois colocá-lo na placa de controle do sistema já programado.
A programação “in-circuit” via ISP pode ser realizada através de canais seriais do Microcontrolador de duas formas:

 

2.1) Via Rx e Tx da interface serial RS232: como no Atmega328.

 

2.2) Via Interface SPI (Serial Peripheral Interface): que será mostrado neste tutorial

 

 

3. Configurando o Arduino como ISP

 

3.1) Faça a montagem conforme o circuito da figura abaixo:
Figura 2 - Circuito para programação do ATiny85

 

3.2) Execute o software Arduio IDE 1.0.5.
Imagem 2 - Iniciando a Arduino IDE

 

3.3) Abra o Sketch exemplo ArduinoISP.
Imagem 3 - Selecionando o exemplo ArduinoISP

 

3.4) Faça o UPLOAD do sketch para o Arduino.
Imagem 4 - UPLOAD do sktech ArduinoISP

 

3.5) Após o término do UPLOAD, configure a opção programmer para "Arduino as ISP".
Imagem 5 - Configurando o programmer como "Arduino as ISP"

 

 

4. Instalando as configurações do ATtiny85 na Arduino IDE

 

4.1) Faça o download dos arquivos para utilizar as configurações dos ATtiny, clicando aqui.

 

4.2) Descompacte a pasta attiny dentro da pasta hardware da Arduino ("C:\Arquivos de Programa\Arduino\hardware\attiny").

 

4.3) Certifique-se que dentro da pasta attiny que foi copiada contenha a pasta variants e o arquivo boards.txt.
Imagem 6 - Pasta attiny

 

4.4) Agora feche e abra a Arduino IDE 1.0.5.
Imagem 7 - Iniciando a Arduino IDE

 

4.5) Selecione dentro da configuração Board em Tools a opção ATtiny85 (internal 8MHz clock).
Imagem 8 - Selecionando o chip (ATtiny85)

 

OBS³: O ATtiny85 já vem de fábrica trabalhando com um clock de 1MHz, se você deseja trabalhar com um clock de 1MHz ao invés de 8MHz, ignore o passo 6 e selecione ATtiny85 (internal 1MHz clock) na opção do passo 5.

 

4.6) Vá até a aba Tools e clique em Burn Bootloader.
Imagem 9 - Gravando Bootloader

 

 

5. Programando o ATtiny85

 

5.1) Para programar o ATtiny85 através da Arduino IDE, você pode utilizar algumas funções já implementadas a interface, veja a relação de comandos abaixo:

 

- pinMode();
- digitalWrite();
- digitalRead();
- analogRead();
- analogWrite();
- shiftOut();
- pulseIn();
- millis();
- micros();
- delay();
- delayMicroseconds();
- Biblioteca SoftwareSerial

 

5.2) Abaixo esta o sketch de contagem binária, o mesmo que foi utilizado na demonstração do vídeo deste tutorial:

void setup()
{

DDRB = B11111; //Configura os pinos PB0 a PB4 como saída
PORTB = B00000; //Apaga todos os LEDs

 

}

 

void loop()
{

  PORTB++; //Incrementa o valor binário no PORTB (LEDs)
  delay(500); //Aguarda 500 milissegundos

}

 

5.3) Copie o código para a Arduino IDE e faça o upload do programa, clicando no botão UPLOAD.
Imagem 10 - UPLOAD do sketch da demonstração (Contador Binário)

 

 

6. Circuito da Demonstração (Contador Binário)

 

6.1) Após o upload para o ATtiny85, faça a montagem conforme o esquema abaixo.

 

OBS: Na montagem abaixo, o Arduino foi utilizado somente para fornecer a tensão de 5V, nada lhe impede de você utilizar uma fonte de 2.7V a 5.5V(Tensão de operação do (ATtiny85).
Figura 3 - Circuito da demonstração (Contador Binário)

 

 

Referências:

 

 

Exibições: 27155

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Flavio Hernan em 12 fevereiro 2016 às 12:03

Esse tutorial está desatualizado, não funciona corretamente na IDE 1.6.4.

Esse arquivo cotem as correções

https://github.com/damellis/attiny/archive/ide-1.6.x.zip

Para outras dúvidas consultar

http://highlowtech.org/?p=1695

Comentário de jadson dos santos em 18 setembro 2015 às 12:31

Bom dia !

Olá amigos, alguém poderia me ajudar, estou tentando fazer uma gravação no ATtiny85, porém aparece esse erro conforme imagem abaixo.

Comentário de Natã Souza Novaes Pinto em 24 novembro 2014 às 21:28

O mesmo aqui Marcio Costa.

Comentário de carlos de freitas em 20 setembro 2014 às 16:06

Comentário de Marcio Costa em 2 setembro 2014 às 11:43

Estava com problemas para conseguir gravar conforme acima. Sempre obtia o mesmo erro:

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Pesquisei bastante e consegui gravar com sucesso o ATtiny85 - 8MHz com o seguinte procedimento:

Ao invés do ArduinoISP.ino que vem com a IDE, fiz o mesmo procedimento do site, porém, eu subi este aqui https://github.com/arduino/Arduino/blob/master/build/shared/example...

Também neste momento subi sem o capacitor ligado entre RESET e GND.

Outro ponto que fiz diferente foi que alterei a pinagem do Sketch do tutorial para 1 pino a esquerda, ou seja, usei os pinos de 10 a 13 (ao invés de 9 a 12) e nos pinos 9, 8 e 7 eu liguei LEDs (heartbeat).

Liguei o capacitor, alterei para o ATtiny85 8 MHz e gravei o código de exemplo e funcionou!

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço