Cuprins:

AVR / Arduino intermitent cu Raspberry Pi: 3 pași (cu imagini)
AVR / Arduino intermitent cu Raspberry Pi: 3 pași (cu imagini)

Video: AVR / Arduino intermitent cu Raspberry Pi: 3 pași (cu imagini)

Video: AVR / Arduino intermitent cu Raspberry Pi: 3 pași (cu imagini)
Video: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, Iulie
Anonim
AVR / Arduino intermitent cu Raspberry Pi
AVR / Arduino intermitent cu Raspberry Pi

Un programator în sistem (ISP) este un dispozitiv pe care îl puteți utiliza pentru a programa multe microcontrolere, de exemplu ATMega328p, care este creierul unui Arduino Uno. Puteți cumpăra ceva de genul USBtinyISP sau chiar puteți folosi un Arduino. Această instrucțiune vă va arăta cum să utilizați un Raspberry Pi ca ISP.

Programul avrdude, care este ceea ce Arduino IDE folosește sub capotă pentru a bloca cipuri, poate fi utilizat cu mulți programatori. Una dintre opțiunile sale este de a utiliza pinii SPI pe portul de expansiune Pi. Vă voi explica cum să faceți conexiunile adecvate, să montați un circuit simplu pe perfboard, astfel încât să nu trebuie să refaceți cablajul de fiecare dată când doriți să luminați un cip și cum să instalați și să utilizați avrdude. De asemenea, vă voi arăta cum să obțineți programe compilate folosind Arduino IDE pe un cip AVR, cum ar fi ATmega sau ATtiny, folosind această metodă.

Lucruri necesare:

  • Raspberry Pi cu cea mai recentă instalare Raspbian
  • Soclu pentru antet de sex masculin cu 40 de pini (sau 26 de pini dacă aveți un Pi mai vechi)
  • Cablu IDE pentru a vă conecta la Pi
  • Rezonator de cristal de 16 MHz
  • Condensatori 22 pF (2)
  • LED (1) pentru a indica starea programatorului
  • Socluri IC de 8, 14 și / sau 28 de pini, în funcție de ce formă de jetoane doriți să luminați
  • Unele panouri, fire, lipire

Pasul 1: Construirea atașamentului Cobbler

Atașament pentru clădire
Atașament pentru clădire
Atașament pentru clădire
Atașament pentru clădire
Atașament pentru clădire
Atașament pentru clădire

Interfața periferică serial (SPI), numită și serial cu patru fire, este un mod de comunicare între un singur dispozitiv master și unul sau mai multe dispozitive slave. Vom folosi acest lucru pentru a clipi cipuri, cu Pi ca stăpân și cip ca sclav. Veți efectua următoarele conexiuni între Pi și cipul dvs. (consultați pinouturile de mai sus pentru diverse porturi de expansiune AVR și Pi pentru a afla care sunt pinii care):

  • Conectați pinii MOSI (master-out-slave-in)
  • Conectați pinii SCLK (ceas partajat) împreună
  • Conectați pinii MISO (master-in-slave-out) împreună cu un rezistor de 220 Ohm, pentru a proteja Pi de orice tensiuni mari neașteptate de la cip
  • Conectați GPIO 25 de pe Pi direct la pinul RESET de pe cip. Pi trage acest pin scăzut atunci când programăm, așa că folosim un rezistor de 10K pentru al menține ridicat atunci când nu programăm și un LED cu un rezistor de protecție de 1K care funcționează la tensiune pozitivă pentru a ne oferi un feedback vizual frumos atunci când programează.

Conectăm pini de masă și putere (3,3 V) între Pi și cipurile pe care dorim să le programăm. În cazul în care nu știți deja, pinii Raspberry Pi nu sunt toleranți la 5V - vor fi deteriorați dacă pe ei apar mai mult de 3,3V. Dacă cipurile programate au nevoie de alimentare de 5V dintr-un motiv oarecare, am putea folosi un cip de schimbare a nivelului pentru a proteja pinii lui Pi, dar nu am întâmpinat probleme cu utilizarea 3.3V - așa că vă recomand să îl jucați în siguranță și să economisiți pe componente.

În cele din urmă, conectăm un oscilator de cristal de 16 MHz pe pinii XTAL de pe cip, pe care îl conectăm și la masă prin intermediul a doi condensatori de 22pF. Cipurile AVR pot fi setate să ruleze la diferite frecvențe și pot fi, de asemenea, setate să utilizeze o sursă internă sau externă pentru a determina acea frecvență. Dacă cipul dvs. este setat să utilizeze un cristal extern ca sursă de frecvență, nu veți putea reprograma fără acesta. Altfel nu contează dacă este acolo.

Puteți utiliza schema circuitului din ultima imagine ca un ghid pentru asamblarea atașamentului tău de cizmă pe perfboard. Puteți avea oricâte sau atât de puține forme diferite de prize IC doriți, conectați doar pinii corespunzători în paralel cu Pi și cristal. N. B. dacă folosiți imaginea prototipului meu ca ghid, rețineți că am adăugat niște pini și prize suplimentare pentru antet, astfel încât să pot accesa pini de pe Pi din motive fără legătură.

Pasul 2: Instalarea și utilizarea Avrdude

Instalarea și utilizarea Avrdude
Instalarea și utilizarea Avrdude
Instalarea și utilizarea Avrdude
Instalarea și utilizarea Avrdude
Instalarea și utilizarea Avrdude
Instalarea și utilizarea Avrdude
Instalarea și utilizarea Avrdude
Instalarea și utilizarea Avrdude

Pentru a instala avrdude pe Pi, trebuie doar să tastați

sudo apt-get install avrdude

Apoi, va trebui să activați interfața SPI, dacă nu a fost deja activată. Există o modalitate prin linie de comandă pentru a face acest lucru, dar este mult mai ușor să utilizați instrumentul de configurare Raspberry Pi. Tip

sudo raspi-config

și accesați Opțiuni interfață pentru a activa SPI.

Pentru a clipi cipul, conectați cablul panglică de la Pi la conectorul de pe circuitul perfboard și introduceți cipul în mufa IC corespunzătoare (asigurați-vă că este orientată corect).

Când luminați un program, trebuie să vă asigurați, de asemenea, că setați siguranțele în cip corect. Acestea sunt într-adevăr doar biți din cip pe care i-ați setat să-i spuneți la ce viteză de ceas să ruleze, dacă să ștergeți EEPROM când scrieți cipul etc. Ați putea citi specificațiile complete ale AVR pentru a afla cum să setați fiecare bit, dar este mult mai ușor să folosiți calculatorul de siguranțe furnizat la engbedded.com/fusecalc. Selectați numele piesei AVR pe care îl utilizați și alegeți opțiunile dorite în zona „Selecție caracteristică”. De obicei, mă asigur că setările ceasului sunt corecte și las celelalte lucruri în mod implicit. Aproape întotdeauna veți dori să lăsați „Programare serial activată” VERIFICAT și „Resetare dezactivată” NEBECAT - altfel nu veți putea reprograma cipul. Când aveți setările corecte, puteți derula în jos zona „Setări curente” și puteți copia argumentele AVRDUDE așa cum se arată în imagine.

Pentru a seta siguranțele, introduceți comanda

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

unde numele piesei corespunde cipului pe care îl utilizați. Puteți găsi lista numelor pieselor introducând sudo ardude -c linuxspi -p? Pentru a bloca programul, asigurați-vă că este în directorul curent și introduceți

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

După ambele comenzi, LED-ul se va aprinde în timp ce cipul este modificat.

Pasul 3: Obținerea programelor Arduino pe AVR-uri

Obținerea programelor Arduino pe AVR-uri
Obținerea programelor Arduino pe AVR-uri
Obținerea programelor Arduino pe AVR-uri
Obținerea programelor Arduino pe AVR-uri
Obținerea programelor Arduino pe AVR-uri
Obținerea programelor Arduino pe AVR-uri

Accentul principal al acestui instructable este intermiterea programelor deja compilate pe cipuri, nu cum să le scrieți sau să le compilați. Cu toate acestea, am vrut să explic cum puteți compila binare folosind Arduino IDE și să le obțineți pe cipurile AVR goale folosind această metodă, deoarece Arduino este relativ ușor de învățat și există atât de multe tutoriale și exemple.

Mai întâi, va trebui să adăugați informații despre cipurile AVR pe care le veți clipi, astfel încât IDE să știe cum să le compileze. James Sleeman a reunit foarte util câteva fișiere de configurare, care sunt disponibile pe github. Pentru a le utiliza, deschideți meniul „Preferințe” în IDE-ul Arduino și faceți clic pe caseta de lângă câmpul „Adrese URL suplimentare ale managerului de plăci”. Copiați și lipiți următoarele adrese URL în caseta de dialog care apare:

Apoi, accesați meniul „Tools” și găsiți opțiunea „Boards Manager …” în submeniul „Board”. Derulați în jos până la partea de jos a listei din caseta de dialog Boards Manager și instalați plăcile DIY ATmega și DIY ATtiny.

Pentru a compila programele, asigurați-vă mai întâi că ați selectat cipul corect în meniul „Procesor”, precum și viteza corectă a procesorului. Selectați opțiunea „Utilizați Bootloader: Nu”, deoarece vom încărca direct cu Pi și astfel vom putea folosi spațiul suplimentar care ar fi ocupat în mod normal de bootloader-ul Arduino. Acum, faceți clic pe butonul „Verificați” (bifa). Aceasta vă va compila programul fără a încerca să-l încărcați (deoarece faceți acest pas singur).

Presupunând că totul merge bine, acum trebuie să duceți programul compilat la Pi. IDE le ascunde într-o locație temporară, deoarece este conceput pentru a încărca singur programe. Pe Windows, se află în AppData / Local / Temp în directorul dvs. de utilizator, într-un folder care începe cu „arduino_build”. Căutați fișierul.hex - acesta este programul dvs.! Trimiteți-o către Pi prin FTP sau cu un stick USB și sunteți în afaceri.

Pentru a face acest lucru, aveți nevoie de un computer Windows sau un Mac pentru a compila programele, pe care apoi le trimiteți către Pi. Ar fi foarte plăcut să poți face acest lucru pe Pi în sine, dar, din păcate, versiunea oficială a IDE-ului Arduino disponibil în depozitul Raspbian este destul de veche și nu are Board Manager. Fără aceasta, adăugarea setărilor adecvate pentru a compila pentru AVR-uri goale este puțin mai complicată. Există tutoriale acolo pentru a compila o versiune mai recentă a Arduino pe Pi - dacă asta vrei să faci, găsește-le! De asemenea, cred că ar trebui să fie posibil ca IDE să folosească programatorul linuxspi pentru a bloca un cip din IDE în sine (adică folosind butonul „descărcare”), dar acest lucru depășește nivelul meu de răbdare și abilitate - dacă știți într-un fel, postează-l în comentarii! În cele din urmă, puteți scrie doar programe direct în AVR-C și le puteți compila pe Pi cu avr-gcc, oferindu-vă o platformă completă de dezvoltare AVR în Raspberry Pi. Am făcut puțin din asta și, dacă vrei să mergi pe acel traseu, te salut. Începeți să clipiți!

Recomandat: