Taula de continguts:

AVR / Arduino intermitent amb Raspberry Pi: 3 passos (amb imatges)
AVR / Arduino intermitent amb Raspberry Pi: 3 passos (amb imatges)

Vídeo: AVR / Arduino intermitent amb Raspberry Pi: 3 passos (amb imatges)

Vídeo: AVR / Arduino intermitent amb Raspberry Pi: 3 passos (amb imatges)
Vídeo: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, Juliol
Anonim
AVR / Arduino intermitent amb Raspberry Pi
AVR / Arduino intermitent amb Raspberry Pi

Un programador del sistema (ISP) és un dispositiu que podeu utilitzar per programar molts microcontroladors, per exemple, l'ATMega328p que és el cervell d'un Arduino Uno. Podeu comprar alguna cosa com un USBtinyISP o fins i tot podeu utilitzar un Arduino. Aquesta instrucció us mostrarà com utilitzar un Raspberry Pi com a proveïdor d'Internet.

El programa avrdude, que és el que utilitza l’Arduino IDE sota el capó per flaixar xips, es pot utilitzar amb molts programadors. Una de les seves opcions és utilitzar els pins SPI al port d’expansió del Pi. T’explicaré com fer les connexions adequades, muntar un circuit senzill al perfboard perquè no hagis de refer el cablejat cada vegada que vulguis parpellejar un xip i com instal·lar i utilitzar avrdude. També us mostraré com obtenir programes compilats amb Arduino IDE en un xip AVR com un ATmega o ATtiny mitjançant aquest mètode.

Coses necessàries:

  • Raspberry Pi amb la versió més recent de Raspbian instal·lada
  • Socket de capçal masculí de 40 pins (o de 26 pins si teniu un Pi més antic)
  • Cable IDE per connectar-se al vostre Pi
  • Resonador de cristall de 16 MHz
  • Condensadors de 22 pF (2)
  • LED (1) per indicar l'estat del programador
  • Preses IC de 8, 14 i / o 28 pins, segons la forma de xips que vulgueu parpellejar
  • Alguns perfboard, cables, soldadura

Pas 1: Construir un fitxer adjunt per a sabates

Adjunt per a sabates d’edifici
Adjunt per a sabates d’edifici
Adjunt per a sabates d’edifici
Adjunt per a sabates d’edifici
Adjunt per a sabates d’edifici
Adjunt per a sabates d’edifici

La interfície perifèrica de sèrie (SPI), també anomenada sèrie de quatre fils, és una manera de comunicar-se entre un sol dispositiu mestre i un o més dispositius esclaus. L’utilitzarem per fer flaixar xips, amb el Pi com a mestre i el xip com a esclau. Fareu les connexions següents entre el Pi i el vostre xip (consulteu els pinouts anteriors per a diversos AVR i ports d’expansió Pi per saber quins pins són quins):

  • Connecteu els pins MOSI (master-out-slave-in)
  • Connecteu els pins SCLK (rellotge compartit)
  • Connecteu els pins MISO (master-in-slave-out) juntament amb una resistència de 220 Ohm, per protegir el Pi de qualsevol inesperada tensió alta del xip
  • Connecteu GPIO 25 al Pi directament al pin RESET del xip. El Pi fa baixar aquest pin quan es programa, de manera que fem servir una resistència de 10K per mantenir-lo alt quan no es programa, i un LED amb una resistència de protecció de 1K que funciona a tensió positiva per donar-nos una bona retroalimentació visual quan es programa.

Connectem els pins de terra i de potència (3,3 V) entre el Pi i els xips que volem programar. Per si encara no ho sabeu, els pins del Raspberry Pi no són tolerants a 5V; es deterioraran si hi apareixen més de 3,3V. Si els xips que s’estan programant necessiten alimentació de 5V per alguna raó, podríem utilitzar un xip de canvi de nivell per protegir els pins del Pi, però no he tingut problemes amb l’ús de 3,3V, així que recomano jugar-lo amb seguretat i estalviar-lo en components.

Per últim, connectem un oscil·lador de cristall de 16 MHz a través dels pins XTAL del xip, que també connectem a terra mitjançant un parell de condensadors de 22pF. Els xips AVR es poden configurar per funcionar a diferents freqüències i també es poden configurar per utilitzar una font interna o externa per determinar aquesta freqüència. Si el vostre xip està configurat per utilitzar un cristall extern com a font de freqüència, no podreu reprogramar-lo sense ell. En cas contrari, no importa si hi és.

Podeu utilitzar l’esquema del circuit de la darrera imatge com a guia per muntar l’accessori del sabater a la placa. Podeu tenir tantes o tan poques formes diferents de sòcols IC que vulgueu, només cal que connecteu els pins adequats en paral·lel amb el Pi i el cristall. N. B. si utilitzeu la imatge del meu prototip com a guia, tingueu en compte que he afegit alguns pins i endolls de capçalera addicionals per poder accedir als pins del Pi per motius no relacionats.

Pas 2: Instal·lar i utilitzar Avrdude

Instal·lació i ús d'Avrdude
Instal·lació i ús d'Avrdude
Instal·lació i ús d'Avrdude
Instal·lació i ús d'Avrdude
Instal·lació i ús d'Avrdude
Instal·lació i ús d'Avrdude
Instal·lació i ús d'Avrdude
Instal·lació i ús d'Avrdude

Per instal·lar avrdude al vostre Pi, només cal que escriviu

sudo apt-get install avrdude

Aleshores haureu d’habilitar la interfície SPI, si encara no està activada. Hi ha una manera de fer-ho des de la línia d’ordres, però és molt més fàcil utilitzar l’eina de configuració de Raspberry Pi. Tipus

sudo raspi-config

i aneu a Opcions d'interfície per activar SPI.

Per fer flaixar el vostre xip, connecteu el cable de cinta del Pi al connector del circuit del perfboard i introduïu el xip al sòcol IC adequat (assegureu-vos que estigui orientat de la manera correcta).

Quan parleu un programa, també us heu d’assegurar d’establir correctament els fusibles del xip. Aquests són realment només bits del xip que heu configurat per indicar-li a quina velocitat de rellotge s'executa, si esborreu l'EEPROM en escriure el xip, etc. és molt més fàcil utilitzar la calculadora de fusibles que es proporciona a engbedded.com/fusecalc. Seleccioneu el nom de la peça AVR que utilitzeu i trieu les opcions que vulgueu a l'àrea "Selecció de funcions". Normalment, només m’asseguro que la configuració del rellotge sigui correcta i deixi les altres coses per defecte. Gairebé sempre voldreu deixar "PROGRAMACIÓ SERIAL HABILITADA" COMPROVADA i "RESET DESACTIVADA" NO CONTROLADA; en cas contrari, no podreu reprogramar el xip. Quan tingueu la configuració adequada, podeu desplaçar-vos cap avall a l'àrea "Configuració actual" i copiar els arguments AVRDUDE tal com es mostra a la imatge.

Per configurar els fusibles, introduïu l'ordre

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

on el nom de la peça correspon al xip que utilitzeu. Podeu trobar la llista de noms de peces introduint sudo ardude -c linuxspi -p? Type. Per fer flaixar el programa, assegureu-vos que estigui al directori actual i introduïu-lo

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

Després d’ambdues ordres, el LED s’encendrà mentre es modifica el xip.

Pas 3: Obtenir programes Arduino als AVR

Obtenir programes Arduino als AVR
Obtenir programes Arduino als AVR
Obtenir programes Arduino als AVR
Obtenir programes Arduino als AVR
Obtenir programes Arduino als AVR
Obtenir programes Arduino als AVR

El focus principal d’aquest instructiu és fer passar programes ja compilats a xips, no com escriure-los o compilar-los. Tanmateix, volia explicar com podeu compilar binaris amb l'IDE Arduino i aconseguir-los en xips AVR nus amb aquest mètode, ja que Arduino és relativament fàcil d'aprendre i hi ha tants tutorials i exemples.

En primer lloc, haureu d'afegir informació sobre els xips AVR que us faran parpellejar perquè l'IDE sàpiga com compilar-los. James Sleeman ha ajuntat molt útilment alguns fitxers de configuració, que estan disponibles a github. Per utilitzar-los, obriu el menú "Preferències" a l'IDE d'Arduino i feu clic a la casella situada al costat del camp "URL addicionals del gestor de taulers". Copieu i enganxeu els URL següents al quadre de diàleg que apareix:

A continuació, aneu al menú "Eines" i cerqueu l'opció "Administrador de taulers …" al submenú "Tauler". Desplaceu-vos fins al final de la llista al quadre de diàleg Administrador de taules i instal·leu els taulers DIY ATmega i DIY ATtiny.

Per compilar els vostres programes, primer assegureu-vos que heu seleccionat el xip correcte al menú "Processador", així com la velocitat del processador correcta. Seleccioneu l'opció "Utilitza el carregador d'arrencada: no", ja que carregarem directament amb el Pi i, per tant, podrem utilitzar l'espai extra que normalment prendria el carregador d'arrencada Arduino. Ara feu clic al botó "Verifica" (la marca de verificació). Això compilarà el vostre programa sense intentar penjar-lo (ja que esteu fent aquest pas vosaltres mateixos).

Suposant que tot va bé, ara heu d’aconseguir el programa compilat al vostre Pi. L'IDE els amaga en una ubicació temporal, ja que està dissenyat per carregar programes per si mateix. Al Windows, es troba a AppData / Local / Temp al directori d'usuari, en una carpeta que comença per "arduino_build". Cerqueu el fitxer.hex: aquest és el vostre programa. Envieu-lo al vostre Pi mitjançant FTP o amb una memòria USB, i ja esteu al negoci.

Per fer-ho, cal que tingueu un PC amb Windows o un Mac per compilar els vostres programes, que després envieu al Pi. Seria molt senzill poder fer-ho al mateix Pi, però, malauradament, la versió oficial de l’IDE Arduino disponible al dipòsit Raspbian és bastant antiga i no té el gestor del consell. Sense això, afegir la configuració adequada per compilar per AVR nus és una mica més complicat. Hi ha tutorials per compilar una versió més recent d'Arduino al vostre Pi; si és el que voleu fer, aneu a buscar-los. També crec que hauria de ser possible aconseguir que l'IDE utilitzi el programador linuxspi per fer flaixar un xip des del mateix IDE (és a dir, fent servir el botó "descarregar"), però això està més enllà de la meva paciència i nivell d'habilitat - si en sabeu d'una manera, publiqueu-lo als comentaris. Finalment, només podeu escriure programes directament a AVR-C i compilar-los al Pi amb avr-gcc, cosa que us proporcionarà una plataforma de desenvolupament AVR completa al Raspberry Pi. N’he fet una mica, i si voleu seguir aquesta ruta, us saludo. Poseu-vos intermitents!

Recomanat: