luni, 4 februarie 2013

placuta pentru programare bootloader folosind Arduino

    Deoarece una din etapele normale in utilizarea unei placi de dezvoltare Arduino este transferarea unui proiect intr-un microcontroler ATmega (8, 168 sau 328) care sa functioneze independent, adica sa fie pe un cablaj separat.
    Dupa ce am vazut articolul Arduino Bootloader Si Transferarea Proiectelor de la roroid.ro si apoi articolul Burning a blank ATmega328 with the Arduino Bootloader al lui John Owen (vwlowen.co.uk) m-am gandit ca ar fi utila o placuta (shield) care sa se conecteze usor si sa apara cat mai putine sanse de conectare gresita.
    Un montaj de scriere a unui bootloader, folosind cablaj tip breadboard si fire de conectare arata cam asa:

    Placuta la care m-am gandit eu, se aseaza peste Arduino, in zoza conectorilor dinspre USB, in stanga fiind partea cu tensiuni, iar in dreapta pinii digitali D13...D8:
Vazuta din alt unghi:
si de sub:

    Corespondenta dintre pinii placii de dezvoltare Arduino si pinii microcontroler-ului de programat sunt:
    Deoarece nu-s obisnuit cu programul Fritzing am redesenat schema cu ajutorul lui CadSoft EAGLE obtinand:
    Montajul vazut dinspre partea plantata, respectiv cablajul dinspre partea cu lipituri:


11.02.2013
   Am depistat o eroare la cablaj, corectata deja pe site.
   Adrian mi-a trimis un cablaj (pe langa alte 2 legate de Arduino: un Severino si un Arduino "de casa" fara interfata de programare):

si o sa corectez mecanic cele 3 trasee gresite initial(intrerupere trasee cu o pila fina si lipire sarmulite conforma traseului corect), ceva in genul:

   Am cautat partea cu cele 3 LED-uri indicatoare, gasind-o in, deja foarte cunoscutul pentru ceilalti, program Fritzing, fiind printe exemple...
   Am redeseant schema in CadSoft EAGLE obtinand:


    Am obtinut si o varianta de cablaj si de montare a pieselor:






18.02.2013
    Revenind la placuta primita de la Adrian, un coleg mi-a dat gauri in cablaj, iar eu am taiat circuitele gresite si le-am corectat, am lipit invers baretele, apoi strapul de sub soclu si rezistenta de 10k pentru autoreset.







    Mentionez ca inca nu am realizat montajul final si pot apare erori, oricum astept comentarii si recomandari.

   Intre timp e bine sa studiati articolul From Arduino to a Microcontroller on a Breadboard:

26.02.2013
    Am reusit sa gasesc soclu, cuart de 16MHz si cele 2 condensatoare de 22pF si le-am pus provizoriu:



28.08.2013
    Dupa aproape 6 luni, am facut rost de un microcontroler ATmega328P-PU fara bootloader si l-am reprogramat cum sunt indicatiile din articolul From Arduino to a Microcontroller on a Breadboard (Burning the Bootloader) 
PS: am schimbat si cuartul de 16MHz cu unul mai "scund"...

    Am facut si un filmulet, care prezinta pasii necesari, deoarece eu am o placa Arduino Uno, iar in exemplu era un Duemilanove... nu-i mare diferenta, dar.. trebuie respectati anumiti pasi pentru a reusi.. vedeti how load a Arduino booloader in a blank uC (ATmega328P-PU)

3.martie.2014 (3.4.2014)
   Incercand sa scriu un bootloader cu un Arduino cu interfata USB de tipul FT232 pe un ATmega328P-PU gol, am avut parte de un mesaj de eroare, dar am gasit o solutie intr-un articol numit Arduino ISP (In System Programming) and stand-alone circuits de pe site-ul www.open-electronics.org.
   Solutia consta in conectarea unei rezistente de 120 ohmi intre +5V si pinul de RESET al placii Arduino, respectiv condensator de 10uF/16V intre pinul RESET al placii Arduinosi masa.
   Mentionez ca nu am apucat s-o testez, dar trebuie luata in calcul...

12.05.2014
   Nu mi-a reusit atunci scrierea bootloader-ului si am renuntat. Intre timp am incercat pe o placaArduino Uno cu interfata USB de tipul 8u2 si am primit mesajul de eroare "Expected signature for ATMEGA328P is 1E 95 14 Double check chip, or use -F to override this ..." ca si cum ar fi un ATmega328-PU nu ATmega328P-PU cum e inscriptionat..
   Solutia am gasit-o in articolul Using your Arduino as an ISP, care face referire la discutia http://forum.arduino.cc/index.php?topic=58670.0 si consta in schimbarea in fisierul avrdude.conf a unei linii dupa ce s-a incarcat fisierul ArduinoISP, inchiderea programului si repornirea lui, scrierea bootloader-ului pe microcontrolerul gol, inchiderea programului Arduino IDE si aducerea liniei la valoarea initiala... 
 


16 comentarii:

  1. se puteau pune si cele 3 leduri de stare ale programatorului :D e hearthbeat-ul, error-ul si celalalt de ok parca :D ca uneori mai apar erori si nu sunt afisate mereu pe interfata IDE

    RăspundețiȘtergere
  2. eu sunt inca in stadiu de invatare, dar o sa completez si cu asta, multumesc pentru sugestie

    RăspundețiȘtergere
  3. am gasit la adresa http://ben0bi.blogspot.ro/2012/10/how-to-program-brandnew-atmega328p-with.html un exemplu care are si cele 3 LED-uri

    RăspundețiȘtergere
  4. e bine sa studiezi si documentatia de la Arduino, deoarece cautand pe undeva dfeparte (http://www.open-electronics.org/arduino-isp-in-system-programming-and-stand-alone-circuits/ ), am constatt ca in sketch-ul 0022 sunt indicatii cum s amontezi celel 3 LED-uri... mde

    RăspundețiȘtergere
  5. am completat si partea cu cele 3 LED-uri, am corectat si cablajul de la prima placuta...

    RăspundețiȘtergere
  6. am mai pus niste poze cu lipirea piesulicilor pe placuta initiala (fara led-uri)

    RăspundețiȘtergere
  7. Mulțumesc pentru postări, Nicu. Aș avea totuși o sugetie. Încearcă să folosești unghiuri de 45 și nu de 90 în design. E o practică recomandată în electronică.

    RăspundețiȘtergere
    Răspunsuri
    1. ok, o sa tin cont de recomandarea ta... eu le-am facut sa fie functionale, nu neaparat estetice...

      Ștergere
    2. Unghiurile alea de 45 de grade nu se folosesc pentru estetica!

      Ștergere
  8. Buna ziua.
    Ultimele postari sunt mai vechi dar cred ca nu este o problema daca resuscitez topicul.
    Am realizat programatorul descris aici de Dvs d-le Nicu, varianta cu leduri, si am incercat sa ard bootloaderul pe un chip ATmega8-PU. Nu am reusit, am primit Error while burning bootloader. Crezand ca eroarea este la realizarea programatorului am verificat inca o data schema si cablajul dar totul este in regula. Am realizat schema pe breadboard si rezultatul a fost acelasi.
    Am urmatoarele nelamuriri:
    - eu am pe Arduino UNO un chip ATmega328 si incerc sa ard bootloaderul pe un ATmega 8-PU. Sa fie asta o problema?
    - apoi, pe data de 28.08.2013 postati un filmulet in care operatiunea reuseste pentru ca ulterior pe 3 martie 2014 si pe 12.05.2014 scrieti ca nu ati reusit si descrieti niste erori.
    Am incercat deja sa pun rezistenta si condensatorul despre care scrieti in postarea din 3.martie.2014, si degeaba. Trebuie sa incerc metoda cu modificarea avrdude.conf? Pentru Atmega8 cum ar trebui sa arate linia modificata?
    Multumesc.

    RăspundețiȘtergere
    Răspunsuri
    1. Nu mai pot corecta mesajul meu. Eu incerc sa programez ATmega8-16PU (am scris eronat ATmega8-PU).

      Ștergere
    2. trebuie sa ai definita placa ca Arduino cu procesorul tau... incat sa apara in lista din Arduino IDE

      Ștergere
  9. Multumesc mult.
    Prin placa intelegeti Arduino UNO sau placa programatorului?
    Cum fac acea definire?
    Eu am definit Tools/Board "Arduino/Genuino UNO" si Programmer "Arduino as ISP", Apoi am incarcat di File/Examples/ArduinoISP si la final Burn Bootloader.
    Trebuia sa mai fac ceva?

    RăspundețiȘtergere
    Răspunsuri
    1. trebuue sa ai definit controlerul pe care pui bootloader... cauta pe net cum se adauga uC-ul de il ai tu in programul Arduino IDE, altfel degeaba incerci.. uita-te pe discutia de la https://forum.arduino.cc/index.php?topic=192595.0 care te duce la una mai stufoasa

      Ștergere
    2. Ok. Daca stiam ca este asa de simplu nu mai intrebam.
      Va multumesc oricum.

      Ștergere