Programando um Attiny85 usando o Arduino como ISP

Na postagem de hoje vamos ver a progrmação de um Attiny85 utilizando um Arduino Duemilanove como gravador ISP.
Primeira pergunta: O quê é um Attiny85?
Ele é um chip de 8 terminais (igual à um 555) e possui algumas diferenças se comparado com um Atmega328, uma delas é que o Atmega328(128) precisa de bootloader para rodar os códigos, mas ATtiny não precisa, então sua memória total está disponivel para código. Ele possui menor quantidade de pinos I/O e também uma menor quantidade de memória disponivel. Ele apresenta uma arquitetura de 8bits, e possui:
- 8Kb de memória flash (armazenar código);
- 512bytes de EEPROM (armazenar dados);
- 512bytes de memória SRAM (processar informações);
- 2 saídas PWM;
- Funciona com uma alimentação entre 2.7V e 5.5V
Veja a pinagem do attiny:
 Para saber mais sobre o microcontrolador veja nas referêcias o link para o datasheet do attiny.
Segunda pergunta: O quê é ISP?
ISP é a sigla de "In-System Programming", programação "no sistema", é a habilidade de alguns dispositivos lógicos programaveis como microcontroladores e outros chips eletrônicos serem programados enquanto estão instalados em um sistema completo, ao contrário de programar o chip e depois colocá-lo no sistema.
 A programação “in-circuit” via ISP pode ser realizada através de canais seriais do Microcontrolador de duas formas:
- Via RxD e TxD da interface serial RS232: como no Atmega328.
- Via Interface SPI (Serial Peripheral Interface): que será mostrado nesse post;
Perguntas respondidas vamos à prática.. Primeiro você deve baixar a biblioteca do Attiny e adiconar ao Arduino para que ele identifique a placa e possa trabalhar com ela, para isso baixe esse arquivo e descompacte, dentro da pasta "attiny45_85" existe o arquivo "boards" e a pasta "cores" que são os responsaveis pelo funcionamento do Attiny no Arduino, copie a pasta "attiny45_85" para a pasta: "C:\arduino-0023\hardware" onde arduino-0023 é a pasta do seu Arduino, no momento estou usando a versão 23, pois a versão 1.0 trouxe muitos problemas para meus projetos e iria atrasar muito fazer a adaptação dos códigos.
Após colocar a pasta lá, abra a interface do seu Arduino, e veja que agora ele suporta mais placas:
 Bom, antes de começar a gravar os códigos vamos preparar o Arduino Duemilanove para ser o nosso gravador, para isso conecte-o no PC e faça o upload para a placa do código "ArduinoISP", veja onde encontrá-lo:
Esse é o código responsável por fazer a comunicação com o Attiny e gravar os códigos nele. Após carregar o sketch na placa vamos fazer as ligações necessárias para gravar o Attiny, para isso veja a imagem a baixo para ver como ligar corretamente os fios:
 
Onde:
- Pino 1 do attiny deve ser conectado ao pino 10 do arduino;
- Pino 4 do attiny deve ser conectado ao GND, o mesmo pino deve ser conectado ao reset do arduino através de um capacitor eletrolítico de 10uF/16V;
- Entre o pino 1 do attiny e o GND deve ser colocado um botão de pressão para reset do microcontrolador;
- Pino 5 do attiny deve ser conectado na porta 11 do arduino. No mesmo pino 5 você pode colocar um LED e um resistor (da mesma forma que o arduino possui um LED no pino 13, a vantagem é que quando você estiver fazendo o ulpoad de seus códigos para o microcontrolador o led vai piscar indicando transferência de dados).
- Pino 6 do attiny deve ser conectado no pino 12 do arduino;
- Pino 7 do attiny deve ser conectado no pino13 do arduino;
- pino 8 do attiny deve ser conectado ao positivo;
De forma resumida a pinagem do attiny é a seguinte:
Com o circuito montado e conectado a sua placa arduino, para fazer o upload dos códigos você só precisa selecionar a porta COM e depois em "Board" selecionar "Attiny85 (ou 45) (w/ Arduino as ISP) e fazer o upload, para teste vamos fazer o upload do código "blink", a única modificação que precisamos fazer é o número da porta, pois o attiny não possui porta 13, para isso basta mudar no código o 13 por 0 (pino 5 do nosso attiny como mostrado a cima). O código vai ficar assim:
Após o upload do código pode aparecer uma mensagem em vermelho na IDE do Arduino, mas ela não afeta em nada o funcionamento.
Para deixar uma aparência melhor, criei um shield de gravação que encaixo sobre a placa arduino, veja como ele fica:
Basicamente apenas adicionei uma fonte de alimentação na parte superior onde posso desconectar o sheild da placa arduino e conectá-lo em uma protoboard e utilizar normalmente, além disso os pinos do attiny possuem conexão para baixo através dos pinos macho para a protoboard e pinos fêmea na parte de cima para testes.
Aqui uma imagem do shield ao lado da placa:
E aqui a foto da pequena placa que montei para rodar o Attiny85 em modo "standalone":
Essa pequena placa mede 4cm de coprimento por 2cm de largura, e possui 2 saídas no padrão futaba além de pinos fêmea para conexões, o capacitor é necessário para armazenar a carga para alimentar os servos, pois se os mesmos se movimentarem rapidamente consomem uma corrente maior que pode fazer o attiny ser reiniciado (mesmo problema do arduino).
As Funções que o ATtiny suporta com o Arduino são:
Bom pessoal, por hoje é isso, na próxima talvez eu mostre o acionamento de dispositivos AC com relés. Um abraço e até mais.

Fontes:
- Loja onde coprei o kit para a montagem do Attiny;
- Datasheet do Attiny;
- Arduino como programador ISP;
- Programando um Attiny com Arduino 1.0;
- Programando o attiny45 ou attiny85 com arduino;

0 comentários: