Índice:
Vídeo: Como programar um AVR (arduino) com outro Arduino: 7 etapas
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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?
* 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
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
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
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
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
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
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 ?)