Índice:

AVR / Arduino piscando com Raspberry Pi: 3 etapas (com imagens)
AVR / Arduino piscando com Raspberry Pi: 3 etapas (com imagens)

Vídeo: AVR / Arduino piscando com Raspberry Pi: 3 etapas (com imagens)

Vídeo: AVR / Arduino piscando com Raspberry Pi: 3 etapas (com imagens)
Vídeo: RASPBERRY PI3 DEFEITO, EM CURTO (( RESOLVIDO)) 2024, Julho
Anonim
AVR / Arduino piscando com Raspberry Pi
AVR / Arduino piscando com Raspberry Pi

Um programador no sistema (ISP) é um dispositivo que você pode usar para programar muitos microcontroladores, por exemplo, o ATMega328p que é o cérebro de um Arduino Uno. Você pode comprar algo como um USBtinyISP ou até mesmo usar um Arduino. Este instrutível mostrará como usar um Raspberry Pi como um ISP.

O programa avrdude, que é o que o Arduino IDE usa por baixo do capô para atualizar os chips, pode ser usado com muitos programadores. Uma de suas opções é usar os pinos SPI na porta de expansão do Pi. Explicarei como fazer as conexões apropriadas, montar um circuito simples no perfboard para que você não precise refazer a fiação toda vez que quiser instalar um chip e como instalar e usar o avrdude. Também mostrarei como obter programas compilados usando o IDE do Arduino em um chip AVR, como um ATmega ou ATtiny, usando esse método.

Coisas necessárias:

  • Raspberry Pi com o Raspbian mais recente instalado
  • Soquete macho de 40 pinos (ou 26 pinos se você tiver um Pi mais antigo)
  • Cabo IDE para conectar ao seu Pi
  • Ressonador de cristal de 16 MHz
  • Capacitores de 22 pF (2)
  • LED (1) para indicar o status do programador
  • Soquetes de IC de 8, 14 e / ou 28 pinos, dependendo do formato dos chips que você deseja piscar
  • Um pouco de perfboard, fios, solda

Etapa 1: Construindo o Anexo do Cobbler

Acessório de sapateiro de construção
Acessório de sapateiro de construção
Acessório de sapateiro de construção
Acessório de sapateiro de construção
Acessório de sapateiro de construção
Acessório de sapateiro de construção

Interface Periférica Serial (SPI), também chamada serial de quatro fios, é uma forma de comunicação entre um único dispositivo mestre e um ou mais dispositivos escravos. Usaremos isso para fazer o flash de chips, com o Pi como mestre e o chip como escravo. Você fará as seguintes conexões entre o Pi e seu chip (veja as pinagens acima para vários AVRs e portas de expansão de Pi para saber quais pinos são quais):

  • Conecte os pinos MOSI (master-out-slave-in) juntos
  • Conecte os pinos SCLK (relógio compartilhado) juntos
  • Conecte os pinos MISO (master-in-slave-out) junto com um resistor de 220 Ohm, para proteger o Pi de quaisquer tensões inesperadamente altas do chip
  • Conecte GPIO 25 no Pi diretamente ao pino RESET no chip. O Pi puxa esse pino para baixo durante a programação, então usamos um resistor de 10K para mantê-lo alto quando não estamos programando, e um LED com um resistor de proteção de 1K rodando para tensão positiva para nos dar um bom feedback visual quando estiver programando.

Conectamos os pinos de aterramento e alimentação (3,3 V) entre o Pi e os chips que queremos programar. Caso você ainda não saiba, os pinos do Raspberry Pi não são tolerantes a 5 V - eles serão danificados se mais de 3,3 V aparecerem neles. Se os chips que estão sendo programados precisarem de 5 V de alimentação por algum motivo, poderíamos usar um chip de deslocamento de nível para proteger os pinos do Pi, mas não tive problemas ao usar 3,3 V - portanto, recomendo jogar pelo seguro e economizar componentes.

Por último, conectamos um oscilador de cristal de 16 MHz aos pinos XTAL do chip, que também conectamos ao aterramento por meio de dois capacitores de 22pF. Os chips AVR podem ser configurados para funcionar em diferentes frequências e também podem ser configurados para usar uma fonte interna ou externa para determinar essa frequência. Se o seu chip estiver configurado para usar um cristal externo como fonte de frequência, você não conseguirá reprogramar sem ele. Caso contrário, não importa se está lá.

Você pode usar o esquema do circuito na última imagem como um guia para montar seu acessório de sapateiro no perfboard. Você pode ter quantos ou poucos formatos diferentes de soquetes de IC desejar, basta conectar os pinos apropriados em paralelo com o Pi e o cristal. N. B. se você usar a imagem do meu protótipo como guia, observe que adicionei alguns pinos de cabeçalho e soquetes extras para poder acessar os pinos no Pi por motivos não relacionados.

Etapa 2: Instalando e usando o Avrdude

Instalando e usando o Avrdude
Instalando e usando o Avrdude
Instalando e usando o Avrdude
Instalando e usando o Avrdude
Instalando e usando o Avrdude
Instalando e usando o Avrdude
Instalando e usando o Avrdude
Instalando e usando o Avrdude

Para instalar o avrdude no seu Pi, basta digitar

sudo apt-get install avrdude

Em seguida, você precisará habilitar a interface SPI, se ainda não estiver habilitada. Existe uma maneira de linha de comando para fazer isso, mas é muito mais fácil usar a ferramenta de configuração Raspberry Pi. Modelo

sudo raspi-config

e vá para Opções de interface para ativar o SPI.

Para atualizar seu chip, conecte o cabo de fita de seu Pi no conector do circuito da perfboard e insira o chip no soquete de IC apropriado (certifique-se de que esteja voltado para o lado certo).

Ao piscar um programa, você também deve se certificar de definir os fusíveis no chip corretamente. Na verdade, são apenas bits no chip que você define para informar em qual velocidade de clock deve ser executado, se deve apagar a EEPROM ao gravar o chip, etc. Você poderia ler as especificações AVR completas para descobrir como definir cada bit, mas é muito mais fácil usar a calculadora de fusíveis fornecida em engbedded.com/fusecalc. Selecione o nome da peça AVR que você está usando e escolha as opções desejadas na área "Seleção de recursos". Normalmente, apenas me certifico de que as configurações do relógio estão corretas e deixo as outras coisas no padrão. Quase sempre, você desejará deixar "Programação serial habilitada" VERIFICADA e "Reinicializar desabilitada" DESmarcada - caso contrário, não será possível reprogramar o chip. Quando tiver as configurações corretas, você pode rolar para baixo na área "Configurações atuais" e copiar os argumentos AVRDUDE conforme mostrado na imagem.

Para definir os fusíveis, digite o comando

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

onde partname corresponde ao chip que você está usando. Você pode encontrar a lista de nomes de peças digitando sudo ardude -c linuxspi -p? Type. Para atualizar seu programa, certifique-se de que ele esteja em seu diretório atual e digite

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash: w:: i

Após ambos os comandos, o LED acenderá enquanto o chip está sendo modificado.

Etapa 3: Colocando programas Arduino em AVRs

Obtendo programas Arduino em AVRs
Obtendo programas Arduino em AVRs
Obtendo programas Arduino em AVRs
Obtendo programas Arduino em AVRs
Obtendo programas Arduino em AVRs
Obtendo programas Arduino em AVRs

O foco principal deste instrutível é flashear programas já compilados em chips, não como escrevê-los ou compilá-los. No entanto, eu queria explicar como você pode compilar binários usando o IDE do Arduino e colocá-los em chips AVR nus usando esse método, já que o Arduino é relativamente fácil de aprender e há tantos tutoriais e exemplos.

Primeiro, você precisará adicionar informações sobre os chips AVR que você estará instalando para que o IDE saiba como compilá-los. James Sleeman juntou de forma muito útil alguns arquivos de configuração, que estão disponíveis no github. Para usá-los, abra o menu "Preferências" no IDE do Arduino e clique na caixa ao lado do campo "URLs adicionais do gerenciador de placas". Copie e cole os seguintes URLs na caixa de diálogo que aparece:

Em seguida, vá ao menu "Ferramentas" e encontre a opção "Gerenciador de Quadros …" no submenu "Quadro". Role para baixo até o final da lista na caixa de diálogo Gerenciador de placas e instale as placas DIY ATmega e DIY ATtiny.

Para compilar seus programas, primeiro certifique-se de ter selecionado o chip correto no menu "Processador", bem como a Velocidade de Processador correta. Selecione a opção "Use Bootloader: No", pois faremos o upload diretamente com o Pi e, portanto, podemos usar o espaço extra que normalmente seria ocupado pelo bootloader do Arduino. Agora, clique no botão "Verificar" (a marca de seleção). Isso irá compilar seu programa sem tentar carregá-lo (já que você mesmo está realizando essa etapa).

Supondo que tudo corra bem, agora você precisa obter o programa compilado para o seu Pi. O IDE os oculta em um local temporário, pois é projetado para fazer upload de programas por conta própria. No Windows, ele está em AppData / Local / Temp em seu diretório de usuário, em uma pasta que começa com 'arduino_build'. Procure o arquivo.hex - esse é o seu programa! Envie-o para o seu Pi via FTP ou com um stick USB, e você está no negócio.

Isso requer que você tenha um PC com Windows ou Mac para compilar seus programas, que você envia para o Pi. Seria muito bom poder fazer isso no próprio Pi, mas infelizmente a versão oficial do Arduino IDE disponível no repositório Raspbian é bastante antiga e não tem o Board Manager. Sem isso, adicionar as configurações apropriadas para compilar para AVRs nus é um pouco mais complicado. Existem tutoriais por aí para compilar uma versão mais recente do Arduino em seu Pi - se é isso que você deseja fazer, vá procurá-los! Eu também acho que deveria ser possível fazer com que o IDE usasse o programador linuxspi para atualizar um chip de dentro do próprio IDE (ou seja, usando o botão "download"), mas isso está além da minha paciência e nível de habilidade - se você souber de uma forma, poste nos comentários! Por último, você poderia simplesmente escrever programas diretamente em AVR-C e compilá-los no Pi com avr-gcc, dando a você uma plataforma de desenvolvimento AVR completa no Raspberry Pi. Eu fiz um pouquinho disso, e se você quiser seguir esse caminho, eu o saúdo. Comece a piscar!

Recomendado: