Translate

sábado, 31 de janeiro de 2015

Por que utilizar Attiny?



O preço é quase o mesmo de um Atmega328 (falamos das versões DIP), que por sua vez tem muito mais entradas, saidas, memórias, etc.

Mas obviamente o tamanho é muito diferente: o Atmega328 tem 14 vias em cada lateral enquanto o attiny (25, 45, 85) tem 4. Isso resulta em muita economia de espaço para projetos mais simples.


Uma boa também por conseguirmos encontrar facilmente no Brasil, por um preço que vale a pena.

E se você tiver um USBASP poderá programá-lo no próprio circuito - ICSP - In-Circuit Serial Programming.

Um outro microcontrolador que vale a pena é o Atmega8 por ser mais barato que o atmega328, mas tem o mesmo número de vias, praticamente se igualando em entradas e saídas, mas tendo menos memória.

Attiny85: Default de fábrica e bricando para testes de reset via HVSP


Sem querer, eu já bricava um attiny. Propositalmente então, deve ser moleza. Mas primeiro, anotar quais são as configurações de fábricas e constatar no microcontrolador, é uma obrigação.

No site http://www.engbedded.com/fusecalc podemos calcular e ver os padrões de fábrica dos microcontroladores AVR. Os fuses do Attiny85 estão motrados assim para a configuração default


LowHighExtendedActionAVRDUDE arguments
0x0x0x* 
Apply manual changes to the values on the left side, or load factory default values for the selected device.
-U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
Select (try triple-click) and copy-and-paste this option string into your avrdude command line. You may specify multiple -U arguments within one call of avrdude.
* Note that some numerical values refer to fuses containing undefined bits (set to '1' here). Depending on the target device these fuse bits will be read either as '0' or '1'. Verification errors will occur if the values are read back with undefined bits set to '0'. Everything is fine if the values read from the device are either the same as programmed, or the following values (undefined set to '0'):Extended: 0x01.


Meu Attiny85 recém resetado mostra as informações abaixo, no AVRDUDESS:

Isto é, as informações batem.

Para bricar o Attiny85: o meio mais fácil que achei foi configurar o Low para 0x00 no AVRDUDESS e dar um write. Observe a mensagem do console depois de dar um Detect:


Depois disso, pode tentar gravar os fuses de fábrica ou qualquer outro, que o AVRDUDESS não vai mais conseguir ler ou gravar qualquer informação.

Passando pelo circuito de reset via HVSP, o resultado é esse, no serial monitor da IDE:


Voltando ao AVRDUDESS, o Detect dá a tela:


Repeti duas vezes, o microcontrolador bricou as duas vezes e ressucitou duas vezes. 

Realmente, apesar de simplificado, o circuito resetador funciona mesmo e o mais importante: é muito fácil de montar.

quinta-feira, 29 de janeiro de 2015

Circuito para reset HVSP para attiny


Tinha até desanimado em programar os ATTINY devido ao fato de bricarem muito fácil.

Recentemente, por acaso, estava passeando no http://www.pinterest.com/ e apareceu um circuito muito simples para reset de attiny por HVSP (High Voltage Serial Programming) utilizando um arduino como auxiliar. Fiz e deu certo de pri-me-i-ra.

Desta vez planejei mais e como levei um ano para me abastecer com algumas peças e ferramentas, foi muito mais eficiente montar o circuito (tenho que fazer um curso de eletrônica para entender um pouco).

O circuito e o programa encontram-se no site https://sites.google.com/site/wayneholder/attiny-fuse-reset, mas como de costume, deixarei links no gdrive:

O Sr. Wayne otimizou o código original, do Sr. Paul Willoughby do site http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/, fazendo-o detectar automaticamente o tipo de Attiny.


Desenhei o circuito no Fritzing:
Lembrando que a bateria de 9 volts é ilustrativa, pois o circuito exige 12 v para fazer o processo. Fiz o circuito para sobrar bastante espaço na placa padrão para ver se futuramente comporta um atmega328, dispensando o arduino. Caso verifique o esquema no fritzing, olhe cuidadosamente os componentes, pois há fios sobrepostos, escondendo a conexão real. Saliento somente um pequeno corte feito na raia da perna 3 do attiny, aproveitando para ganhar espaço na placa. O arquivo do fritzing está aqui.

Um outro detalhe é que compraram para mim um 2N3906 em vez do 2N3904. Ainda bem que pesquisei e para minha surpresa um é PNP e o outro NPN. Graças ao meu amigo 4 zóio (Edilson Souza), fiquei sabendo que tinha um equivalente BC54x e por acaso eu tinha um BC547, que usei e deu certo (consulte a equivalência no site http://www.electronica-pt.com/db/componentes.php?ref=2N3904 - me ajudou muito).





O código fonte do programa está aqui.
Rodou sem nenhuma modificação e sem acréscimos no Arduino IDE 0023.

Detect / Config de ATTINY com USBASP


Vixi! Fui verificar o estado de um attiny85 e... nem lembrava como conectava com o USBASP. Sorte que hoje tem informação sobrando na net. Após essa grande parada (meses sem mexer com circuitos), milagrosamente as coisas estão dando certo....

Primeiro, a pinagem do cabo do USBASP (do site http://www.ozwald.fr/):


Em seguida, a pinagem do ATTINY (25-45-85):


A ligação é direta: RST-Reset, GND-GND, MOSI-MOSI, MISO-MISO, SCK-SCK e VCC-VCC.
Não é necessário nenhum outro componente quando utilizado o USBASP. Para ligações com outros Attinys, verificar a pinagem.


Usei o AVRDUDESS para ler (outras vezes já usei para gravar os fuse bits - e brickei os avrs).
Prá meu espanto, deu certo de prima:

Notar que usei o USBASP, Port USB, Baud 19200 e Bit clock 1.5, conforme orienta a maioria dos sites. O resultado no console foi da detecção (botão Detect). Como disse, este avr estava bricado. Montei um esquema de reset de fábrica para o avr e pelo jeito funcionou, pois o AVRDUDESS conseguiu detectar o modelo e ler os Fuse bits. Próximo blog é sobre esse circuito.