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:
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:
2. ISP
4. Instalando as configurações do ATtiny85 na Arduino IDE
5. Programando o ATtiny85
- pinMode();
- digitalWrite();
- digitalRead();
- analogRead();
- analogWrite();
- shiftOut();
- pulseIn();
- millis();
- micros();
- delay();
- delayMicroseconds();
- Biblioteca SoftwareSerial
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
}
Marcio Costa
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!
2 Set, 2014
carlos de freitas
20 Set, 2014