quinta-feira, julho 26, 2012

AVR: Programador USBasp

O USBasp é mais um programador para microcontroladores AVR que você pode montar. Ou comprar montado, como eu fiz.


O USBasp é um parente próximo do USBtiny que já comentei aqui. A ideia central é a mesma: usar um microcontrolador AVR para implementar um conversor serial USB "na unha". Inclusive, o USBtiny é uma adaptação enxuta de uma versão antiga das rotinas USB do USBasp (como descrito aqui). Ao invés de um ATtiny2313, o USBasp usa um ATmega8.

A página oficial do projeto contem os softwares (com fontes) e lista vários layouts de PCB, muitos deles de face simples e sem componentes SMD (adequados, portanto, para uma fabricação artesanal). Várias empresas fabricam e vendem modelos montados. O meu eu comprei na GoodLuckBuy. É um modelo bastante compacto, do tamanho de um pen-drive com o cabo de programação espetado diretamente na traseira.

Funcionou muito bem até agora. O conector usado é o de 10 pinos, se você quiser ligar em um conector de 6 pinos (como o que tem na placa do Arduino UNO) vai ter que montar um cabo adaptador (o que é bem trivial).

11 comentários:

N. Nadai F. disse...

Oi, tudo bem? Eu vi num outro post que vc tem um receiver CCE-4000. Vc ainda tem o manual dele? Eu tbm tenho esse receiver, e estou com problemas na instalação dele.

obrigado.

Daniel Quadros disse...

Acho que ainda tenho o manual, vou procurar e se achar aviso aqui,

rsenas disse...

Boa noite Daniel, esse programador usa qual soft e ele grava o Atmel 1284P?
É que quero gravar esse chip e tbm quero saber se o soft grava os fuses do atmel.
Obrigado

Daniel Quadros disse...

Eu usei o avrdude (http://www.nongnu.org/avrdude/) o ATmega1284P está na lista de microcontroladores suportados.

O avrdude tem a vantagem de suportar uma quantidade muito grande de programadores e estar disponível para *nix e Windows.

rsenas disse...

Daniel eu de novo então se fizer esse gravador consigo gravar os fuses no atmel 1284P certo? É que quero gravar ele para fazer uma impressora 3d e muito obrigado pela resposta se tiver mais dúvidas vou te encher de novo. rsrs

Um abraço.

Daniel Quadros disse...

Provavelmente sim. Se o seu micro tiver uma porta paralela, experimente primeiro algo minimalista como http://dqsoft.blogspot.com.br/2011/07/avr-programador-dapa.html. Se o avrdude conseguir programar direito a flash e os fuses do 1284P, aí você parte para um dos modelos USB.

Guto Melo disse...

Olá prof. Daniel, rsrs!
Eu comprei um Arduino PRO Mini de operação 5V e 16MHZ. Porém queria colocá-lo para trabalhar a 3.3V, se eu aplica-se uma tensão desse valor, creio que o microcontrolador não suportaria este clock a esta tensão. Portando comprei um programador AVR USBasp pra tentar alterar os fusebits, o que eu fiz: Reprogramei os fusebits do clock pra trabalhar com clock interno a 8MHZ, com isso acredito que funcionaria na tensão de 3.3V. Antes de mexer nos fusebits, conseguia ler o chip e programar um arquivo .Hex normalmente, entretanto após reprogramar os fusebits, não consigo gravar mais nada e nem consigo ler a memória do microcontrolador. O que eu fiz de errado? Perdi a comunicação SPI? O que faço para recuperá-lo?

Obrigado!

Daniel Quadros disse...

Guto, provavelmente você alterou algo que não devia nos fuses. Você lembra quais valores você programou? Dependendo da programação, só é possível voltar à configuração padrão usando um programador de "alta voltagem" o que talvez não seja possível com o ATmega soldado na placa.

Guto Melo disse...

Daniel eu usei o Extremer Burner - AVR para alterá-los.

Usei a seguinte configuração

Clock: Calibrated Internal RC Oscillator

Nominal Frequency: 8MHZ

Start-up Time: Start-up Time from Power-down and Power-save6CK, Additional Delay from Reset 0 (Recommend when BOD is enabled)

Oscillator Option: No Options

Vi que existe alguns gravadores de alta voltagem no modo serial como esse aqui:http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/

Você conhece algum outro??

Acredito que dá pra fazer o flash, conforme o esquema: https://www.arduino.cc/en/uploads/Main/Arduino-Pro-Mini-schematic.pdf
Tenho acesso direto aos pinos.

Valeu.

Daniel Quadros disse...

Guto,

Possivelmente foram alterados outros bits dos fuses, o que causou o problema.

Este programador alta tensão é para os ATtinys (eu construí um deste tipo, o ATtiny Detonator). No ATmega328, até onde sei, a programação alta tensão é paralela, não serial. Estou há anos ensaiando construir o AVR Detonator.

A questão não é somente o acesso aos pinos, precisa ver se os 12V no pino de Reset não chegam a algum ponto que vá danificar com esta tensão.

Guto Melo disse...

Obrigado Daniel. Mas me fala uma coisa, não era pra ele ter funcionado no modo clock interno a 8Mhz? Será que o cristal nos terminais está influenciando? Alimento ele com 3.3V e não funciona.
Valeu.