terça-feira, junho 17, 2014

Programando o ATtiny85 com a IDE, runtime e bibliotecas do Arduino - Parte 2


Neste post vamos ver como usar na prática o que vimos na parte anterior.



O primeiro passo é obtermos os arquivos boards.txt e pins_arduino.h. Vou usar os arquivos que estão no attiny-master.zip mencionado nas referências no final deste post.

O boards.txt possui somente definições para os ATtinys 44, 45, 84 e 85. Existem três variações para cada modelo: internal 1MHz (clock interno com divisor por 8 ligado), internal 8MHz (clock interno sem divisor) e external 20MHz (clock externo com um cristal de 20MHz).

Os ATtiny vem de fábrica configurados para operar com clock interno com divisor por 8 ligado (1MHz). Para usar as demais opções é preciso gravar os fuses para os valores indicados no boards.txt. Uma forma de fazer isto é conectar um gravador ao ATtiny (por exemplo, um Arduino rodando o software ArduinoISP) e usar a opção "Burn Bootloader" da IDE. Como o boards.txt não especifica um arquivo de bootloader, este processos irá apenas gravar os fuses.

O arquivo pins_arduino.h para o ATtiny85 é bastante simples (afinal, são somente 5 pinos a serem mapeados). A figura abaixo mostra a associação entre os pinos do ATtiny e os nomes usados nas bibliotecas do Arduino.



Precisamos agora colocar os arquivos em um local onde a IDE possa encontrá-los. Uma opção é dentro do diretório hardware\arduino que examinamos no post anterior. Nesta opção será preciso juntar o novo boards.txt ao já existente. Um outra opção é criar um diretório hardware dentro do diretório onde são gravados os sketches (informado em File Preferences) e copiar para lá o diretório attiny (com seus subdiretórios e arquivos) do attiny-master. Nos dois casos é preciso encerrar e reiniciar a IDE para que ela verifique os novos arquivos. Se tudo estiver certo, as novas opções estarão disponíveis em Tools Board.



Para um teste rápido, vamos conectar um ATtiny85 a um programador USBtinyISP e a um LED:



Em Tools Board selecionamos "ATtiny85 (internal 8 MHz clock)". Em Tools Programmer selecionamos USBtinyISP. Através de Tools Burn Bootloader configuramos os fuses. Abrimos agora o exemplo Blink e alteramos o pino do LED para 4. Agora é só usar File Upload Using Programmer e teremos o LED piscando alegremente a cada segundo.

Note que não mexemos no runtime, portanto não é garantido que tudo funcione. A rotina tone(), em particular, não funciona pois depende de um timer não disponível no ATtiny85.

Referências

Página no site oficial do Arduino: http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips
Um artigo interessante: http://highlowtech.org/?p=1695

Alguns links sobre o uso de bootloader com o ATtiny85:

http://www.embedded-creations.com/projects/attiny85-usb-bootloader-overview/
https://github.com/micronucleus/micronucleus

http://jtxp.org/tech/tinysafeboot_en.htm
http://blog.kehribar.me/?p=14

Um exemplo de uso de placa desenvolvida com o ATtiny85:

http://www.instructables.com/id/Digispark-DIY-The-smallest-USB-Arduino/?ALLSTEPS


Nenhum comentário: