Cum să vă transformați Arduino într-un ISP - Programarea ATmel ATtiny85
Publicat: 2017-06-13Bytes scurti: Uneori, utilizarea unei plăci Arduino pre-construite într-un proiect este exagerată sau pur și simplu supradimensionată. ATtiny85 este un microcontroler ieftin, dar surprinzător de capabil, care poate ajuta la reducerea amprentei proiectului dumneavoastră. Iată cum puteți programa un ATtiny pentru a fi utilizat în proiectul dvs.
Platforma Arduino este un instrument uimitor pentru învățare, dar uneori plăcile Arduino acceptate nu se potrivesc acolo unde aveți nevoie. Cu Arduino Uno (cel mai comun model) măsurând aproximativ 65 mmx50 mm, este ușor de văzut cum ar putea fi cea mai mare componentă în unele proiecte. Există și alte plăci, cum ar fi Nano, care sunt mult mai mici (knockoff-ul meu Nano este de 43 mm pe 17 mm, de 4,5 ori mai mic) , dar chiar și atunci, uneori, este prea mare. Ce se întâmplă dacă, să zicem, doriți să construiți un dispozitiv portabil, poate că este doar un LED intermitent pe care câinele dvs. îl poate purta noaptea. Odată ce luați în considerare o baterie și așa mai departe, aceasta poate deveni destul de mare.Indicați linia ATtiny, eroul problemei noastre. Omonimul lui ATtiny este evident. Îl puteți găsi într-un pachet DIP-8 (pachet dual inline – 8 pini) , care are aproximativ 9 mm pătrat. În adevărata natură a omonimului său, ATtiny este minuscul, dar în mai multe moduri decât dimensiunea sa fizică. ATtiny85, care este folosit pentru acest articol, are doar 8 KB de stocare flash de program, 512 octeți de RAM și 512 octeți de EEPROM (stocare permanentă în afara stocării programului) .
Acum problema este programarea unuia dintre acești tipi mici. Există câteva tutoriale online pentru asta, dar mi s-a părut că sunt puțin incomplete sau lipsite de instrucțiuni.
ISP – In System Programmer
Un programator în sistem (ISP) nu este atât de elegant pe cât pare. De obicei, un ISP pentru un cip ATmel constă dintr-un dispozitiv cu un cablu USB cu conector cu șase pini. Pinii ISP sunt foarte ușor de identificat pe Arduinos, de obicei sunt localizați vizavi de conectorul USB. Cipurile ATmel sunt destinate să fie programate prin pinii ISP, dar platforma Arduino a implementat un adaptor USB la serial pe placă pentru a elimina necesitatea dispozitivului ISP. În ciuda acestui fapt, au lăsat pinii ISP disponibili pe multe, dacă nu pe majoritatea modelelor.
Deoarece cipurile noastre ATtiny nu au dispozitivul USB la serial pe care îl au Arduinos, este necesar ca acestea să fie programate folosind un ISP. Dispozitivele ATmel ISP sunt destul de scumpe, cel puțin în comparație cu costul unui Arduino în sine, așa că ne vom economisi banii și timpul de livrare prin programarea unui Arduino să se comporte ca un ISP.
Facem acest lucru deschizând Arduino IDE și selectând ArduinoISP din schițele eșantionului.
La deschiderea fișierului schiță, veți vedea câteva informații despre comportamentul așteptat al codului. În acest fișier, trebuie să facem o modificare rapidă pentru ca ISP-ul nostru să comunice corect cu Arduino IDE.
La linia 220 găsim funcția setup() .
void setup() { SERIAL.begin(BAUDRATE); pinMode(LED_PMODE, OUTPUT); puls(LED_PMODE, 2); pinMode(LED_ERR, OUTPUT); puls(LED_ERR, 2); pinMode(LED_HB, OUTPUT); impuls (LED_HB, 2); }
Trebuie să schimbăm BAUDRATE la 19200, astfel încât linia se citește
SERIAL.begin(19200);
Din câte am citit, IDE-ul Arduino a primit o actualizare care a întrerupt compatibilitatea cu acest firmware ArduinoISP. Arduino și IDE-ul încercau să comunice la viteze de transmisie diferite, ceea ce a dus la eșecul utilizării Arduino ca ISP, în ciuda faptului că firmware-ul clipea corect.
Biblioteci ATtiny
Arduino IDE acceptă o varietate de microcontrolere și plăci diferite, dar, din păcate, seria ATtiny nu este inclusă. Aceasta înseamnă că trebuie să obținem sprijin pentru ei înșine.
Modul care a funcționat pentru mine a fost să adaug adresa URL de mai jos la URL-urile Managerului de plăci suplimentare din preferințele Arduino IDE,
reporniți IDE-ul, deschideți Boards Manager sub Tools -> Board -> Boards Manager și apoi căutați pachetul ATtiny și instalați-l.
Odată ce ați terminat, puteți începe să vă construiți circuitul pentru programarea ATtiny.
Construirea ISP-ului dvs
Există mai multe moduri în care vă puteți construi ISP-ul. Îl puteți construi într-o placă fără lipire, astfel încât să puteți reutiliza piesele, sau puteți face o soluție semi-permanentă lipindu-le pe toate împreună, așa cum am făcut eu. Dacă le lipiți cu atenție, atunci puteți reutiliza Arduino pentru un alt proiect dacă doriți.
Privind primele treizeci de rânduri ale schiței ArduinoISP, putem găsi următoarele informații despre configurarea Arduino pentru a funcționa ca ISP.
Pinul 10 | Pentru a reseta PIN pentru Microcontroler țintă |
Pinul 11 | SPI Master Out Sclav In |
Pinul 12 | SPI Master In Sclav Out |
Pinul 13 | Ceas serial SPI |
Opțional, puteți conecta LED-urile la următorii pini pentru a indica starea
- Pin 9 – Heartbeat – Indică ISP-ul rulează
- Pin 8 – Eroare – Indică că a apărut o eroare
- Pin 7 – Programare – Indică comunicare activă cu ținta
Rețineți că aceste LED-uri vor necesita rezistențe.
Aici putem vedea pinout-ul pentru ATtiny85 și conexiunile corespunzătoare pe care trebuie să le facem înapoi la Arduino. Este un desen destul de grosolan, dar am etichetat pinii de pe ATtiny85 pentru comoditate. Trebuie remarcat, totuși, că pinii nu sunt adresați la 1,2,3..8 așa cum sunt în diagramă, ei sunt desemnați în Arduino IDE așa cum au fost etichetați în textul diagonală.
Aceasta este o diagramă mult mai detaliată a diferitelor conexiuni. Toate LED-urile sunt opționale, dar sunt utile pentru depanare, pe lângă cele trei LED-uri de stare care au fost recomandate în fișierul de schiță ArduinoISP, există unul care se conectează pur și simplu de la 5V la masă (cu un rezistor, desigur) și apoi există unul conectat la al doilea pin (Pinul 3 din IDE) pentru a testa ATtiny cu testul de clipire. Observați condensatorul care conectează pinul de resetare la masă, acesta este necesar pentru ca Arduino să funcționeze ca ISP.
Acesta este ISP-ul Arduino pe care l-am construit pentru microcontrolerele ATtiny. Puteți vedea că am folosit mufa DIP-8 pentru a ține ATtiny-ul în timp ce este programat. De asemenea, am lăsat suficient spațiu în dreapta pentru a instala o priză DIP-28 pentru programarea cipurilor ATmega precum ATmega328P. Actualizarea va fi foarte simplă, necesitând doar ca pinii necesari pentru cipurile Atmega să fie conectați așa cum am făcut-o cu ATtiny.
Odată ce v-ați asamblat ISP-ul Arduino, cu siguranță veți dori să-l încercați. Asigurați-vă că selectați setările corespunzătoare pentru programare prin Arduino conectat și nu programați Arduino în sine.
Pentru placă alegem opțiunea ATiny 25/45/85, apoi selectăm ATtiny85 în selecția procesorului și, în final, selectăm Arduino ca ISP de la programatori. Aceasta îi spune IDE-ului tot ce trebuie să știe despre sistemul țintă, inclusiv modul în care va comunica cu acesta. Acum suntem gata să afișăm schița Blink (sau să o scrieți singur, dacă sunteți atât de hardcore) și să o încercăm, doar asigurați-vă că comutați pinul folosit pentru a clipi LED-ul pe cel pe care l-ați folosit în dvs. circuit, acesta este pinul 3 dacă utilizați schema pe care am furnizat-o. În cele din urmă, compilam și încărcăm schița făcând clic pe Schiță -> Încărcați folosind programator.
void setup() { pinMode(3, OUTPUT); } void loop() { digitalWrite(3, HIGH); întârziere (1000); digitalWrite(3, LOW); întârziere (1000); }
În total, ISP-ul meu Arduino care este lipit împreună costă probabil în jur de trei sau patru dolari. Chipsurile ATtiny pot fi, de asemenea, extrem de ieftine, de obicei doar aproximativ un dolar bucata. Recomand să cumpărați prize DIP-8 dacă intenționați să puneți cipuri ATtiny în proiecte, deoarece s-ar putea să doriți să actualizați un cod sau să reutilizați cip-ul. Lipirea unui circuit integrat este posibilă, dar îl puteți deteriora cu ușurință, în special cu expunerea repetată, așa cum ar fi cazul dacă ați actualiza codul de câteva ori.
A mai făcut cineva așa ceva? Doriți să vedeți mai multe lucruri despre Arduino? Spune-ne în comentariile de mai jos.
Citește și: Raspberry Pi sau Arduino - Care placă este cea mai bună pentru un începător?