ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Discutii despre placile de dezvoltare compatibile Arduino
User avatar
Levy
Gold User
Posts: 1540
Joined: 02 Oct 2013 15:07
Location: ABSURDISTAN

ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Unread postby Levy » 21 Apr 2022 19:22

Pentru ca am avut putin timp liber, si mi-au sosit doua bucati Arduino UNO R3 varianta DIP, pe care le-am cumparat exclusiv pentru a putea incarca bootloaderul si pentru a incarca cod pe microcontrolere care nu sint pe boarduri Arduino, m-am apucat de treaba. Bineinteles prima data am citit ce am gasit pe celebrul Google si am urmarit si cateva videoclipuri pe Youtube, pentru a nu ma apuca fara o minima documentare.

Am ales varianta asta cu Arduino DIP, din cauza usurintei cu care poti sa inlocuiesti microcontrolerul original din Arduino cu cel blanc neprogramat, astfel in cateva minute poti programa cateva bucati de microcontrolere ATmega328P. Eu am avut disponibile 5 bucati.

Image

Pentru programarea microcontrolerului, avem nevoie de doua boarduri Arduino, se poate si fara al doilea, unde sa avem circuitul unui arduino simplificat ma maxim, insa varianta asta mi s-a parut cea mai accesibila oricui, probabil o sa fac mai incolo si un video cu un arduino home made, dar pe moment nu am atat de mult timp liber.
Image

Unul din boarduri va fi cel care contine microcontrolerul blanc (gol, fara bootloader) iar acesta i-l vom numi TARGET sau tinta, iar celalat programeaza primul board, iar pe al doulea i-l vom numi SURSA.
Pentru a deosebi cele doua boarduri, cel TARGET va fi cel DIP, pentru ca in acesta schimbam foarte usor microcontrolerul, iar al doilea arduino cel SURSA va fi cel care este varianta SMD, astfel sigur nu vom incurca boardurile intre ele in timpul programarii.
Image

Pentru ca deja am pregatit ca sa nu confundam cele doua, ne apucam de treaba. Insa inainte de toate, inca un minim lucru ar trebui sa faceti, o fotografie cu pozitia microcontrolerului original in Arduino TARGET, astfel incat sa nu puneti microcontrolerul invers in board inainte de programare.

Acestea fiind facute, facem legaturile electrice intre cele doua boarduri astfel:

SURSA TARGET
D11 ----- D11
D12 ----- D12
D13 ----- D13
D10 ----- RESET
5V ------ 5V
GND --- GND

Image

Avand legaturile astfel facute, conectam arduino SMD cel SURSDA cu ajutorul unui cablu USB de laptop, dupa care deschidem ARDUINO IDE.

Printre exemplele din Arduino IDE, alegem ARduino ISP.
Setam portul COM corect pe care comunica arduino SURSA (cel SMD, atrag aici atentia, la faptul ca la mine acesta se conecteaza pe COM3, iar al doilea pe COM10, desi au fost conectate la acelasi port al laptopului, dar deocamdata conectam doar cel SMD), dupa care setam boardul ca Arduino UNO, iar ca programer alegem AVRISP mkII.
Foarte important sa aveti acest programer, altfel nu veti obtine nici un rezultat. Cititi cu atentie toata descrierea, pentru ca dupa ce incarcam Arduino ISP pe boar va trebui sa schimbam din nou programerul !!!

Deci, avem portul, boardul si programerul setat, cele doua Arduino conectate electric. In acest moment incarcam Arduino ISP.
Image

Daca totul a decurs corect, schimbam programerul in ARDUINO AS ISP, dupa care BURN BOOTLOADER din meniuri. Daca a-ti facut totul corect, veti avea in Arduino IDE mesajul DONE BURNING BOOTLOADER.
Image

Daca a-ti primit acest mesaj, a-ti reusit sa incarcati corect bootloaderul pe microcontrolerul blanc, care acum poate fi programat cu Arduino IDE.

Desfacem legaturile electrice dntre cele doua Arduino, iar pe cel TARGET i-l conectam de laptop cu ajutorul cablului USB.
Selectam boardul Arduino UNO, portul COM corect, dupa cum v-am scris mai sus la mine acesta (cel DIP) comunica pe alt port decat cel versiunea SMD, dar asta cred ca depinde de controlerul care asigura conexiunea seriala via USB de pe cele doua boarduri, ele find se pare diferite. In mod interesant cel TARGET chiar este recunoscut mai bine, si in dreptul portului corect chiar scrie ca este conectat un Arduino UNO. Dupa ce am setat boardul si portul, setam si programerul in Arduino as ISP iar dintre exemple alegem un exemplu pentru care nu avem nevoie sa facem nici un montaj si totusi putem verifica daca microcontrolerul pe care tocmai am incarcat bootloaderul este in stare sa comunice corect cu laptopul si poate sa functioneze corect dupa incarcarea unui cod. Eu am ales BLINK, pentru ca putem vedea e LED-ul de pe board daca functioneaza ARduino pe care am incarcat exemplu.

Totul a functionat corect, s-a incarcat fara probleme codul pe microcontroler, iar ledul de pe board lumineaza o secunda, dupa care se opreste din iluminat o secunda, de fapt in BLINK chiar asta avem.

Am facut un scurt video cu explicatii in engleza cu felul in care am incarcat bootloaderul.


Dupa ce am reusit primul microcontroler, am programat si urmatoarele 4 microcontrolere. Daca ai facut asta odata, vei vedea ca urmatoarele se fac intr-ul timp relativ scurt si nu necesita cine stie ce cunostinte aprofundate pentru incarcarea unui bootloader.

Trebuie sa atrag atentia, asupra felului in care veti scoate microcontrolerul original din boardul TARGET, cel putin pentru prima data va fi destul de dificil ! :haha:
Dupa ce a-ti scos microcontrolerul pentru prima oara, o sa aveti o mica surpriza, microcontrolerele cumparate nu au distanta dintre cele doua randuri de picioruse identica cu distanta dintre cele doua randuri de picioruse de pe microcontrolerul original.
Pentru a le indoi toate la acelasi nivel (pentru a fi perfect aliniate randurile de picioruse) puneti microcontrolerul pe o suprafata dreapra (pe masa) si cu piciorusele pe masa si microcontrolerul culcal, indoiti de microcontroler, astfel incat distanta dintre cele doua randuri de picioruse sa fie identica cu cel original. Acest lucru trebuie facut cu atentie, ca si scoaterea circuitului original din soclu, pentru ca riscati ca la introducere sa indoiti piciorusele microcontrolerului. La scoaterea din soclu la fel, cu grija fortati pe o parte si pe cealalta parte, astfel sa iasa cat se poate de paralel, altfel aveti surprize destul de interesante, si realinierea lor nu va mai fi atat de usor din moment ce nici distanta dintre picioruse nu va mai fi corecta datorita indoirii picioruselor. Deci atentie mare la aceasta faza !

Daca aveti experienta mai mare cu asa ceva, m-as bucura sa citesc experientele voastre, eu acum am facut prima oara asa ceva, iar daca a-ti citit atent ce am scris veti observa ca am intampinat si cateva dificultati.

Dar totul e bine cand se termina cu bine !
Spor la bricolat !
Dacă ai tăiat și ultimul copac, ai otrăvit și ultimul râu și ai prins și ultimul pește, ai să fi uimit să constați că banii nu sunt comestibili !

Image
User avatar
delta2k2
Site Admin
Posts: 1990
Joined: 11 Sep 2013 15:18
Location: Over the rainbow ...

Re: ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Unread postby delta2k2 » 21 Apr 2022 20:56

Am scris boot-loadere folosind USBASP 2.0, fără nicio problemă pe aproximativ 800 de procesoare ATmega328P.
Am avut acum vre-o 3 ani și ceva un proiect mai mare, în care am folosit și ATmega328P pe niște plăci custom-made. Procesoarele veneau goale, fără nimic pe ele.

Image
User avatar
Levy
Gold User
Posts: 1540
Joined: 02 Oct 2013 15:07
Location: ABSURDISTAN

Re: ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Unread postby Levy » 21 Apr 2022 21:28

Am achizitionat si eu doua asemenea module,
Image

Image

Image

nu sint identice cu cele din fotografia ta, dar cred ca fac acelasi lucru.

Le-am achizitionat pentru a programa direct chipul esp8266 si ESP01s.
Image
Image
Image

Din comoditate si din lipsa de timp, inca nu am testat nici una cum se foloseste pentru a incarca bootloader in ATMega328P si codul in ESP8266 blanc sau ESP01.

Deocamdata mi se par mult mai avantajoase Wemos D1 mini. Au si conectarea la USB si regulatorul de tensiune incluse, fata de versiunile ESP01 sau ESP8266 blanc.
Dacă ai tăiat și ultimul copac, ai otrăvit și ultimul râu și ai prins și ultimul pește, ai să fi uimit să constați că banii nu sunt comestibili !

Image
User avatar
delta2k2
Site Admin
Posts: 1990
Joined: 11 Sep 2013 15:18
Location: Over the rainbow ...

Re: ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Unread postby delta2k2 » 21 Apr 2022 21:54

În primele poze ai adaptoare/convertoare USB to Serial (UART), ce folosesc chip-ul FTDI CH340G. Altfel spus, procesorul Atmega comunică prin pinii RX-TX cu PC-ul. Conexiune serială UART (lentă) la Atmega, USB (rapidă) la PC.

CH340G este folosit pe majoritatea clonelor Arduino. Deși este mult mai ieftin decât chipul folosit pe plăcile originale, adică FT232RL, îți pot spune că e muuult mai rezistent.

Deci, în primele poze ai adaptoare pentru protocolul serial UART. Plăcile USBASP folosesc protocolul SPI, și evident alți pini : MISO, MOSI, SS, CS. Codul (programul) scris de tine ajunge în final tot la procesor, dar în alt mod.
User avatar
Levy
Gold User
Posts: 1540
Joined: 02 Oct 2013 15:07
Location: ABSURDISTAN

Re: ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Unread postby Levy » 21 Apr 2022 22:30

Este interesanta remarca cu chipul CH340G , pentru ca in mediul online este destul de blamat ca stabilitate si durabilitate.
Dar eu pot spune ca nu am deloc experienta in utilizarea in cantitati mari sau utilizarea in timp.
Dacă ai tăiat și ultimul copac, ai otrăvit și ultimul râu și ai prins și ultimul pește, ai să fi uimit să constați că banii nu sunt comestibili !

Image
User avatar
delta2k2
Site Admin
Posts: 1990
Joined: 11 Sep 2013 15:18
Location: Over the rainbow ...

Re: ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Unread postby delta2k2 » 21 Apr 2022 23:16

Evident, fiecare face/crede cum vrea. Stabilitatea ar putea fi afectată și de cristalul de quarț. Chiar o să fac un test să văd ce-i cu ele.

Nu degeaba l-au pus chinezii pe clonele de arduino. Ieftin și suficient de bun. Și mult mai ușor de schimbat (fizic, de pe placă) decât altele. Or fi și situații în care CH340G are probleme/limitări, dar evident... nimic nu e perfect.

Mi s-au ars câteva FT232RL (originale și clone, că și aici e o poveste lungă) în niște situații în care CH340G nu a avut nicio problemă ani de zile.

Mai sunt și CP2102/CP2104; am văzut că ar mai fi și CH340C (are clock-ul încorporat), despre care se zice că ar fi mai bun, dar cu care nu am lucrat.
User avatar
delta2k2
Site Admin
Posts: 1990
Joined: 11 Sep 2013 15:18
Location: Over the rainbow ...

Re: ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Unread postby delta2k2 » 21 Apr 2022 23:52

Spuneam că stabilitatea ar putea fi afectată și de cristalul de quarț.
M-am uitat cu osciloscop-ul la niște quarț-uri ce funcționează non-stop de cel puțin 5 ani. Cel de 12MHz e clock-ul pentru CH340G, iar cel pe 16 MHz e pentru clona de arduino.
Pozele vorbesc de la sine...

Image

Image
User avatar
Levy
Gold User
Posts: 1540
Joined: 02 Oct 2013 15:07
Location: ABSURDISTAN

Re: ATmega328P microcontroller - How to burn bootloader using Arduino Uno R3 DIP

Unread postby Levy » 22 Apr 2022 08:50

Multumiri pentru informatii. :drink2:
Ar trebui sa ne scrii mai des pe aici :D Bineinteles in limita timpului disponibil :hat:
Dacă ai tăiat și ultimul copac, ai otrăvit și ultimul râu și ai prins și ultimul pește, ai să fi uimit să constați că banii nu sunt comestibili !

Image

Return to “Arduino”

Who is online

Users browsing this forum: No registered users and 6 guests