Índice:

Como programar um AVR (arduino) com outro Arduino: 7 etapas
Como programar um AVR (arduino) com outro Arduino: 7 etapas

Vídeo: Como programar um AVR (arduino) com outro Arduino: 7 etapas

Vídeo: Como programar um AVR (arduino) com outro Arduino: 7 etapas
Vídeo: AVR ISP Shield-Grave o Bootloader do Arduino de forma simples 2024, Novembro
Anonim
Como programar um AVR (arduino) com outro Arduino
Como programar um AVR (arduino) com outro Arduino
Como programar um AVR (arduino) com outro Arduino
Como programar um AVR (arduino) com outro Arduino
Como programar um AVR (arduino) com outro Arduino
Como programar um AVR (arduino) com outro Arduino

Este instructables é útil se:

* você tem seu arduino com atmega168 e comprou um atmega328 em sua loja de eletrônicos local. Ele não tem um bootloader arduino * que você deseja fazer um projeto que não use o arduino - apenas um chip AVR normal (como o USBTinyISP) - você tem um attiny2313 / attiny48 limpo etc no qual deseja gravar o firmware. Normalmente você teria que ter um ISP (In System Programmer) como USBTinyISP para programar seu novo chip. Tendo o arduino você pode ensiná-lo a ser um programador graças ao excelente trabalho realizado por Randall Bohn. Ele criou o Mega-ISP - um esboço de arduino que funciona como um programador.

Etapa 1: O que você precisa?

O que você precisa ?
O que você precisa ?

* um Arduino funcional (ou um clone - estou usando o BBB - BareBonesBoard e um RBBB - RealBareBonesBoard da ModernDevices) * um chip que você deseja programar (testado com atmega8, atmega168, atmega368, attiny2313, attiny13) * um breadboard ou uma placa com conector ISP * 3 leds + 3 resistores * fios da placa de ensaio

Etapa 2: fazendo o programador Mega-isp em uma placa de ensaio

Fazendo o Programador Mega-ISP em uma placa de ensaio
Fazendo o Programador Mega-ISP em uma placa de ensaio
Fazendo o Programador Mega-ISP em uma placa de ensaio
Fazendo o Programador Mega-ISP em uma placa de ensaio
Fazendo o Programador Mega-ISP em uma placa de ensaio
Fazendo o Programador Mega-ISP em uma placa de ensaio

Existem duas maneiras de conectar seu Arduino para programar um chip.

Você pode conectar seu chip avr a uma placa de ensaio e conectar 5v e GND aos respectivos pinos (verifique a ficha técnica!) + Um resistor pullup para redefinir e conectar os pinos do seu arduino ao chip. Estas são as linhas no Arduino e suas funções 13 - SCK 12 - MISO 11 - MOSI 10 - RST (Reset) Ou você pode fazer um conector ISP de 2x3 pinos que você pode conectar em uma placa que forneça um (outra placa arduino). A pinagem do cabeçalho do ISP está na terceira imagem. Existem 3 leds para indicar o status do programador. pino 9 - led azul - é a batida do coração do programador. pino 8 - led vermelho - indica um erro pino 7 - led verde - indica que a programação está ocorrendo (eu estava com preguiça então não combinei as cores em minha configuração) Aqui estão os desenhos feitos no Fritzing Você também pode fazer um Escudo MEGA-ISP. Yaroslav Osadchyy desenhou o escudo em águia. Você pode obter os arquivos da águia em seu site:

Etapa 3: enviando o esboço

Carregando o Sketch
Carregando o Sketch

Baixe o esboço do código do google mega-isp (avrisp.03.zip no momento da escrita). Descompacte-o, execute arduino ide e abra avrisp.pde. Faça o upload para sua placa Arduino. O led de pulsação deve começar a bater.

Etapa 4: Usando com Avrdude

Usando com Avrdude
Usando com Avrdude

Para usar com o avrdude (e todas as GUIs que o usam), você deve selecionar o programador 'avrisp'. a taxa de bits mais segura é 19200.

Para testar seu novo atmega168 na linha de comando, tente: $ avrdude -p m168 -P / dev / ttyUSB0 -c avrisp -b 19200 / dev / USB0 é a porta que o arduino está conectado à minha máquina linux (a sua pode ser com5). Isso pode ser verificado no IDE do arduino em Ferramentas -> Porta Serial. Você deve obter: [kabturek @ hal-9000 ~] # avrdude -p m168 -P / dev / ttyUSB0 -c avrisp -b 19200 avrdude: dispositivo AVR inicializado e pronto para aceitar instruções Leitura | ############################################################### | 100% 0.13s avrdude: Assinatura do dispositivo = 0x1e9406 avrdude: safemode: Fusíveis OK avrdude concluído. Obrigada. Isso significa que está tudo bem. Se você receber erros - verifique a última etapa.

Etapa 5: Gravar firmware USBtinyISP em um Attiny2313

Gravando firmware USBtinyISP em um Attiny2313
Gravando firmware USBtinyISP em um Attiny2313
Gravando firmware USBtinyISP em um Attiny2313
Gravando firmware USBtinyISP em um Attiny2313
Gravando firmware USBtinyISP em um Attiny2313
Gravando firmware USBtinyISP em um Attiny2313

O USBTinyISP é um ótimo programador da LadyAda que é realmente barato - 22 $. Eu tinha um attiny2313 sobressalente e algumas peças, então decidi fazer um para mim. Se você não tem experiência em fazer placas de circuito impresso, aconselho que compre o kit, porque ele é de qualidade superior à que você mesmo pode fazer:). Compre pelo menos o PCB se quiser construir um. Você pode obtê-lo na Adafruit. Conecte o ATtiny2313Na última foto você pode ver o attiny2313 com os pinos usados pelo ISP em vermelho. A imagem é do tutorial do avr LadyAda. Gravando o firmware: Descompacte o firmware USBTinyISP. Vá para o diretório spi e execute $ avrdude -p pt2313 -P / dev / ttyUSB0 -c avrisp -b 19200 para verificar se está tudo ok com o chip. Agora defina os fusíveis: $ avrdude -P / dev / ttyUSB0 -c avrisp -b 19200 -pt2313 -U hfuse: w: 0xdf: m -U lfuse: w: 0xef: m Agora você deve conectar o oscilador externo de 12 MHz ao chip. E grave o firmware: $ avrdude -B 1 -pt2313 -U flash: w: main.hex -P / dev / ttyUSB0 -c avrisp -b 19200 Voila. Seu attiny2313 possui o firmware USBTinyISP.

Etapa 6: Gravando o carregador de inicialização do Arduino

Gravando o bootloader do Arduino
Gravando o bootloader do Arduino
Gravando o bootloader do Arduino
Gravando o bootloader do Arduino
Gravando o bootloader do Arduino
Gravando o bootloader do Arduino

ConectandoEu trapacei um pouco porque usei um RBBB para simplificar as conexões. O esquema está na imagem # 2. Se você usar 2 arduinos, use a figura 3 e conecte o pino do ISP ao ICSP 2x3header no segundo arduino (escravo). Conecte apenas a alimentação USB na primeira placa. A maneira da GUI Isto é um pouco complicado porque você não pode simplesmente usar Ferramentas-> Gravar Bootloader -> w / AVR ISP porque a velocidade padrão é muito grande para o mega-ISP. Encontre avrdude.conf que vem com o IDE do arduino (em arduino / hardware / tools / avrdude.conf) e altere a taxa limite para o programador avrisp de 115200 para 19200 (em torno da linha 312) Encontre e mude em avrdude.conf programmer id = "avrisp"; desc = "Atmel AVR ISP"; taxa de transmissão = 115200; # o padrão é 115200 type = stk500;; para: id do programador = "avrisp"; desc = "Atmel AVR ISP"; baudrate = 19200; # o padrão é 115200 type = stk500;; Agora você pode usar Ferramentas -> Gravar bootloader -> w / AVR ISP (depois de selecionar a placa apropriada no menu Ferramentas) Commanline Você também pode usar a linha de comando: Editar arduino / hardware / bootloaders / atmega / Makefile e alterar ISPTOOL / PORT / SPEED para: # insira os parâmetros para a ferramenta avrdude isp ISPTOOL = avrisp ISPPORT = / dev / ttyUSB0 ISPSPEED = -b 19200 não você pode escrever $ make diecimila_isp para queimar fusíveis e o bootloader. Test Agora conecte seu novo arduino ao USB e queime o blinky!

Etapa 7: Solução de problemas

Solução de problemas
Solução de problemas

Erros Avrdude: avrdude: ser_open (): não é possível abrir o dispositivo "/ dev / ttyUSB0": Não existe esse arquivo ou diretório. Você especificou a porta (-P) errada ou seu arduino não está conectado. verifique a conexão avrdude: Assinatura do dispositivo = 0x000000 avrdude: Caramba! Assinatura de dispositivo inválida. Verifique as conexões e tente novamente, ou use -F para ignorar esta verificação. Este é um tipo de erro geral. Seu chip não é reconhecido. Verifique a conexão na placa (GND / 5V conectado aos pinos?) Você obterá este erro quando seu chip estiver configurado para usar um oscilador externo e não estiver funcionando (não existe ou não está oscilando corretamente - tampas 22pf ausente ?)

Recomendado: