Arduino jako ISP czyli jak wgrać bootloader w ATmega

Często stajemy przed problemem jak wgrać w fabrycznie nowy układ ATmega328 bootloader Arduino. Zawsze można kupić gotowy układ albo programator np USBASP, jednak jeżeli pod ręką mamy działające Arduino, ono nam może posłużyć jako programator.

Programowanie bootloadera w Arduini Pro Mini
Programowanie bootloadera w Arduini Pro Mini

Procedura jest następująca:

  • w działające Arduino wgrywamy szkic ArduinoISP (menu File/Examples/ArduinoISP) tak jak nasze zwykłe programy
  • podłączamy układ ATmega do naszego Arduino (z prawej oznaczenie wyjścia na UNO)
    • zasilanie – 5V (chyba że to układ działający tylko do 3.3V)
    • masa – GND
    • MOSI – D11
    • MISO – D12
    • SCK – D13
    • reset – D10
  • Jeżeli naszym programatorem ma być układ z rodziny Arduino Mega, wówczas piny po stronie Mega wyglądają tak
    • MOSI – D51
    • MISO – D50
    • SCK – D52
    • reset – D53
  • można zaprogramować ATmegę wprost w innym Arduino, ma to znaczenie zwłaszcza, jeżeli jest to układ ze scalakiem wlutowanym na stałe (na zdjęciu programowanie Arduino Pro Mini)
  • W menu wybieramy rodzaj programatora Tools/Programmer/Arduino as ISP
  • W menu Tools/Board wybieramy taką płytkę, jakiej bootloader chcemy wgrać (na zdjęciu jest to Pro Mini 5V, więc wybrany został Arduino Pro or Pro Mini (5V, 16 Mhz) w/ATmega328)
  • Pozostaje tylko Tools/Burn Bootloader i czekać na komunikat o sukcesie

Dla ułatwienia pracy do Arduino działającego jako programator można podłączyć kilka diod (nie zapomnieć o rezystorze ograniczającym prąd), by widzieć wyraźnie co się w danym momencie dzieje. I tak D9 – heartbeat (znak że szkic działa),  D8 – wystąpił błąd, D7 – programowanie w trakcie.