Forma simples para gravar o Arduíno ATMEGA8
sem o Boot.
alvaroluiz@live.com
http://alvaroluiz.tech/Alvaro_2/Arduino/AlvaroLuiz_Digital.html
Estou alguns anos fazendo projetos com AVR, tanto em assembler como C, lá por volta do ano 2002, não tinha muita coisa aqui no Brasil, então desenvolvi meu próprio barramento SPI para gravar o AVR, e também fiz um software para PC no DOS na ocasião para gravar um arquivo HEX no AT90S2313 que é o mesmo núcleo AVR.
As coisas evoluíram e a ATMEL cresceu com a família AVR, eu resolvi aderir a essa técnica, mas como já tinha o meu próprio barramento SPI (Meu Padrão) resolvi mante-lo, fazendo adaptadores.
Passei para gravar no soft Poney, depois fui para AVR910, mas com a chegada do USB, comprei o chinês PROGISP 172, que uso até hoje.
Desenvolvo o software ASM ou C no ASTUDIO4, depois gravo o AVR via ProgIsp172.
Resolvi ir para o ARDUINO, por ser agora mundial e muito rico em software, ótima biblioteca publica isto tudo gratuito, veja no http://arduino.cc. Ficará surpreso com tantas informações e artigos disponíveis.
Resolvi fazer a forma mais simples do Arduíno com o ATMEGA8, que funciona muito bem.
Faço o software no IDE do ARDUINO ou Astudio4, compilo vejo se está tudo certo vou no Sketch ->Exportar Binário Compilado ou (Ctrl+Alt+s) criará na pasta do projeto (de trabalho), o arquivo com este carrego o gravador PROGISP172 ou qualquer outro e gravo o ATMEGA, não precisa do boot porque grava via SPI.
O Arduíno tem 14 Pinos de I/O e 6 AnalogInput. O led green ligado no D13 como no Arduino. O próprio VCC do Conector “Meu Padrão” USB, alimenta o ATMEGA. Poderá ser ATMEGA8, 168 ou 328 tipo P. Principal vantagem deste circuito é que atende o ATMEGA 8/168/328 tipo P (dual in line) com o ASTUDIO4/5/6/7 da ATMEL (tanto assembler como C), WINAVR da GCC e o ARDUINO. Tudo isto de um hardware muito simples de poucos componentes. Realmente na minha opinião, o que vale a pena no ARDUINO é sua rica BIBLIOTECA, com inúmeras funções, que auxilia desenvolvimento, matemática, shift-registers, código mais simples, aceita o padrão GCC. Ex: posso escrever:
Cuidado porque uma vez ajustado fusível para cristal externo, sem ele não funcionará na gravação SPI, será necessário colocar qualquer cristal e programar novamente os fusíveis para o chip operar.
---------------------------------------------------------------------------------------------
O
exemplo abaixo meio complexo envolve prévios conhecimentos, mas coloquei
este para destacar o que falei no parágrafo anterior.
A seguir um sketch feito
para no STUDIO4, foi passado para o ARDUINO com pequenas modificações,
setup()
e
loop() // mas não mudou muito e o compilador ARDUINO aceitou.
Veja que foi ativado a interrupt (ISR) do timer1.
ISR (TIMER1_OVF_vect) {
ISR (TIMER1_OVF_vect) {
Este sketch é só um esboço de ensaios e estudos,
não tem objetivo funcional,
ativa ISR TIMER1 que o LED ligado na saída 13 (PORTB5) em
100Hz. A frequência realmente é 200Hz por causa do Excluse OR divide por 2.
PORTB ^= _BV(ledPin);
PORTB ^= _BV(ledPin);
Interessante que fiz uma mistura do ASTUDIO4, WINAVR e ARDUINO e tudo
ficou bem.
Este ensaio me convenceu que vale a pena o ARDUINO, não vou perder
nada e tenho que estudar somente configurações e montagens do sketch. Observe
que só mudou setup() e loop().
Curiosidade:
Dois estudantes da Universidade Norueguesa de Tecnologia e Ciência Alf-Egil
Bogen e Vegard Wollan desenvolveram um microcontrolador RISC (AVR)
com memória de programação flash. A ATMEL em 1997 comprou a idéia e lançou o
primeiro produto AVR o AT90S1200, foi um sucesso, é o núcleo AVR de hoje.
avr-gcc. gcc é o GNU Compiler Collection.
Chama-se de avr-gcc toolchain o conjunto da ferramentas envolvidas na geração do HEX a partir dos fontes em C.
Se você usa Windows, baixe e instale o WinAvr. Se você usa GNU/Linux, aqui tem alguns links. Para os usuários Mac, o site da ladyada tem um tutorial (o site também tem tutoriais para Windows e Linux).
Alguns links sobre o avr-gcc toolchain:
http://www.nongnu.org/avr/
http://www.nongnu.org/avr-libc/
http://www.gnu.org/software/binutils/
http://www.avrfreaks.net/wiki/index.php/Documentation:AVR_GCC
http://www.avrfreaks.net/wiki/index.php/Documentation:AVR_GCC/AVR_GCC_Tool_Collection
Um exemplo simples feito para ensaio deste.
Podemos também apresentar uma formar Mais Simples só que sem cristal com RC interno no máximo de 8MHz.
Foram tiradas as ligações para simplificar o desenho, mas tem-se que ligar o todos os 6 pinos do conector a direita. VCC com pino 7, GND com pinos 8 e 22. MOSI->pino 17, SCK->pino 19, RST->Pino1, MISO->18.
Ideia para PCI
avr-gcc. gcc é o GNU Compiler Collection.
Chama-se de avr-gcc toolchain o conjunto da ferramentas envolvidas na geração do HEX a partir dos fontes em C.
Se você usa Windows, baixe e instale o WinAvr. Se você usa GNU/Linux, aqui tem alguns links. Para os usuários Mac, o site da ladyada tem um tutorial (o site também tem tutoriais para Windows e Linux).
Alguns links sobre o avr-gcc toolchain:
http://www.nongnu.org/avr/
http://www.nongnu.org/avr-libc/
http://www.gnu.org/software/binutils/
http://www.avrfreaks.net/wiki/index.php/Documentation:AVR_GCC
http://www.avrfreaks.net/wiki/index.php/Documentation:AVR_GCC/AVR_GCC_Tool_Collection
Um exemplo simples feito para ensaio deste.
Podemos também apresentar uma formar Mais Simples só que sem cristal com RC interno no máximo de 8MHz.
A seguir aprensento a função dos pinos de programação ISP. Observar que quando ele for programado com cristal externo, para ser reprogramado ele deverá ter pulsos XTAL1 ou ligar um cristal de qualquer valor nos pinos XTAL 1 e 2. Se foi programdo na última vez com RC interno não haverá necessidade.
Foram tiradas as ligações para simplificar o desenho, mas tem-se que ligar o todos os 6 pinos do conector a direita. VCC com pino 7, GND com pinos 8 e 22. MOSI->pino 17, SCK->pino 19, RST->Pino1, MISO->18.
Ideia para PCI