Atmega8’e Arduino Uno Kullanarak Arduino NG Bootloaderı Yükleme

Ufak boyutlu iÅŸlerde kullanmak için ucuz, Arduino uyumlu bir mikroiÅŸlemci arıyorsanız Atmega8 sanırım en uygunu. Attiny serisine de bootloader yüklenebiliyor fakat Atmega8’den tbiraz daha pahalılar ve daha az pine sahipler. Bu yazıda Atmega8’e Arduino Uno kullanarak nasıl Arduino NG bootloaderı yükleneceÄŸini elimden geldiÄŸince anlatacağım.

Malzeme Listesi:

  1. Arduino Uno
  2. 1 adet 10?F kondansatör(16V kullandım ben.)
  3. 1 adet Atmega8 (16PU)
  4. 1 adet 16Mhz kristal
  5. 2 adet 22pF kondansatör
  6. 1 adet 10K direnç
  7. 1 adet led
  8. Bağlantılar için kablo

Atmega8’e Arduino NG bootloaderı yüklemek için öncelikle Arduino Unomuza Arduino ISP kodlarını yüklememiz gerekiyor. AÅŸağıdaki adımları izleyerek iÅŸlemi gerçekleÅŸtiriyoruz.

  • Arduino ile bilgisayarımız arasındaki baÄŸlantıyı kurduktan sonra Arduino programında File>Examples>ArduinoISP‘yi seçiyoruz.
  • Açılan pencerede Tools menüsünde Boards>Arduino Uno, Serial Port>Arduino Takılı Port, Programmer>AVRISP mkII seçimlerini yapıp, Upload’a tıklayarak sketchi yüklüyoruz.

Arduino Unomuz iÅŸlem için hazır. İkinci aÅŸamamız Atmega8 ve Arduino Uno arası baÄŸlantıları kurup bootloaderı yüklemek. Arduino programıyla gelen orjnal Arduino NG bootloaderında yüklediÄŸiniz sketchler yaklaşık 10sn sonra çalışmaya baÅŸlıyor. Bu sorunu çözmek için 1 dosyayı deÄŸiÅŸtirmek gerekiyor. Arduino Klasörü>hardware>arduino>bootloaders>atmega8 klasöründeki “ATmegaBOOT.hex” dosyasını şuradaki dosya ile deÄŸiÅŸtiriyoruz. Daha sonra aÅŸağıdaki adımları uyguluyoruz.

  • AÅŸağıdaki baÄŸlantı ÅŸemasını kullanarak gerekli baÄŸlantıları kuruyoruz.
  • Arduino Uno ile bootloader yüklerken reset sorunu oluÅŸtuÄŸu için Arduino unomuzun Reset ve GND pinleri arasına 10?F 16v kondansatörümüzü takıyoruz. (Arduino Duemilanove kullanıyorsanız böyle bir sorun olmadığı için kondansatöre gerek olmadığı söyleniyor, elimde olmadığı için deneme imkanım olmadı.)
  • Arduino programında Tools menüsünden Boards>Arduino NG or older w/ Atmega8 Serial Port>Arduino Takılı Port, Programmer>Arduino as ISP seçimlerini yapıyoruz.
  • Tools menüsünden Burn Bootloader’ı seçiyoruz.
  • Durum çubuÄŸunda ?Done burning bootloader? yazısını gördüğümüzde iÅŸlem tamamlanmıştır.

Arduino NG bootloader yüklü Atmega8inizi Arduino unonuzda hiçbir değişiklik yapmadan Atmega328 yerine takıp sketch yükleyebilirsiniz. Tabi yüklerken Boards>Arduino NG or older w/ Atmega8 seçmeniz gerekiyor.

O kadar uğraştık da nedir bu Arduino NG diye soracak olursanız kısaca onu da anlatayım. Arduino NG(Nuova Generazione) Atmega8 veya Atmega168 bulunduran eski sürüm bir Arduino kartıdır. Tıpkı Arduino uno gibi 14 dijital I/O pini, 6 analog girişi bulunmakta. Atmega8 versiyonunda bootloader yükleme işlemi sonrası programlanabilir hafızası 7 Kb (7168 byte) tır.

Bu yazıdaki uygulamayı yapabilmeniz için Atmega8’in 16Mhz destekleyen tipini (Atmega8-16PU) kullanmanız gerekmekte. 

Aynı baÄŸlantı ÅŸemasını kullanarak Atmega88, Atmega48, Atmega168 ve Atmega328‘e de kendilerine uygun bootloader yükleyebilirsiniz.

Ä°yi çalışmalar…

Kaynaklar:

Gerekli Olabilecek Bağlantılar:

 

Ä°smail

Üniversite öğrencisi, Arduino meraklısı.

50 comments

  1. Selcuk Demiray dedi ki:

    Merhaba, Bu sayfadaki yöntemle bugün satın aldığım atmega168-20pu chip’ine bootlader yükleyebildim. Åžu anda chip’e Uno kartım üzerinden sketch’leri yükleyebiliyorum. TeÅŸekkürler.

  2. Hasan dedi ki:

    ATMEGA 88PA-PU bu ürünede boatloader yükleyebilirmiyiz ? Kaç mhz kristal kullanmamız gerek ?

  3. Hasan dedi ki:

    Atmega8’de denedim çalışıyor fakat atmega88 de baÅŸarılı olamadım…
    TeÅŸekkür ederim, maliyeti düşürmek istiyorsanız iÅŸe yarayabilir…

  4. İsmail Buçgün dedi ki:

    Merhaba Hasan bey, kusura bakmayın sınavlarım nedeniyle cevap veremedim. Atmega88 ‘e de Arduino bootloader’ı yükleyebilirsiniz. Tabi fazladan birkaç iÅŸlem daha gerekiyor rutinde pek kullanılmadığı için. http://www.morethantechnical.com/2012/04/04/bootloading-an-atmega88-for-arduino-w-code/ Şöyle bir anlatım buldum. Vaktiniz olduÄŸunda bir deneyip sonucu bildirirseniz sevinirim. Sorun yaÅŸarsanız forumda bir baÅŸlık açarsanız oradan çözmeye çalışırız. Ä°yi çalışmalar.

  5. Güneş dedi ki:

    mrb. ustam,

    sorum ÅŸu; kendimce bir kart yapıyorum, atmega328p iÅŸlemciyi aldım ft232 usb adaptör ile pc’yle bu iÅŸlemcimi rx/tx baÄŸladım, arduino edit programı ek olarak bize derlediÄŸimiz dosyayı hex. olarak kaydetmemize imkan veriyor, ben bu hex dosyasını direk olarak atmega328p iÅŸlemcime usb/232 adaptörden baÅŸka ara devre olmadan sadece ana iÅŸlemcide yer alan bootloader ile hazırladığım hex. dosyasını yükleyebilirmiyim?

    bu sorumla alakalı pek bir kaynak bulamadım size danışmak isterim hocam…

  6. İsmail Buçgün dedi ki:

    Merhaba,
    Yalnızca USB-Serial dönüştürücü ile doğrudan .hex dosyası yüklenemiyor bildiğim kadarıyla. AVR programlayıcı olması gerekiyor yapmak istediğiniz işlem için. Şu adreste anlatılan gibi bir programlayıcı yapabilirsiniz. http://tuxgraphics.org/electronics/200510/article05101.shtml

  7. Reyhan dedi ki:

    Merhaba,
    Atmega8 e Bootloader yüklemeye çalışıyorum ve anlattığınız adımları teker teker uygulamama raÄŸmen ÅŸu hatayla karşılaşıyorum ” avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
    avrdude: stk500_cmd(): programmer is out of sync ”
    Neden bu hatanın oluştuğunu söyleyebilirseniz çok sevinirim.

    • Ä°smail Buçgün dedi ki:

      Merhaba,
      RST-GND arası kondansatör mevzusu önemli, verdiğim değerdeki kondansatörden mi kullanıyorsunuz? Son olarak bu hatayı tam olarak nerede veriyor? Bu yazıyı yazdığımda Arduino programının 1.0 sürümünü kullanmıştım, onunla da deneyebilir misiniz?

  8. Reyhan dedi ki:

    10 microF 50 V capacitor kullandım. 16 V bulamadım zaten o deÄŸer max taşıyabileceÄŸi deÄŸer olduÄŸu önemli olduÄŸunu düşünmedim. Arduino’nun 1.0 sürümüyle de denedim Burn bootloader dediÄŸimde bu hatayı veriyor.

  9. emre dedi ki:

    merhabalar tarif ettğiniz bağlantıları yapıp bootloaderi atmega8 e yükledim ama sorunum şu ki atmegaboot.hex dosyasını değiştirmeme rağmen boot yüklediğim atmega8 elektirik verildikten yaklaşık 9 saniye sonra çalışmaya başlıyor bu sorunu nasıl çözebilirim

  10. Türker dedi ki:

    Merhaba,
    Funduino Mega 2560 ve Atmega8 ile yaptım, başarılı. Teşekürler.
    Mega’da pinler deÄŸiÅŸiyor, 10 mikrofarad’a da gerek olmadı.

    // pin name: not-mega: mega(1280 and 2560)
    // slave reset: 10: 53
    // MOSI: 11: 51
    // MISO: 12: 50
    // SCK: 13: 52
    //
    // Put an LED (with resistor) on the following pins:
    // 9: Heartbeat – shows the programmer is running
    // 8: Error – Lights up if something goes wrong
    // 7: Programming – In communication with the slave

  11. Önder YILMAZ dedi ki:

    Merhaba arkadaÅŸlar, atmega328P için bootloader’ı 1.0.5 için sorunsuz çözülüyor. yardıma ihtiyacı olan olursa yardımcı olabilirim.. Yaptığım aÅŸamaları fotoÄŸraf yada video ÅŸeklinde hazırlayacağım ilk fırsatta..

    • Ahmet dedi ki:

      Hocam bende de atmega328p-pu chip var buna bootloader nasıl yüklerim üstteki
      devreyi kursam tools>board menüsünden neyi seçmem gerekir yardımcı olursanız duacınız olurum 2 haftadır bunla uğraşıyorum.Şimdiden teşekkür ederim

  12. Önder YILMAZ dedi ki:

    Hocam onder.yilmz@gmail.com bana ulaş mailden konuşalım ama yukarıdaki malzeme ile board uzerınde kurdugunda yapabılıyor olman lazım yapamaz ısen ulas bana maılden tekrar konusalım

  13. özay YILMAZ dedi ki:

    elinize sağlık güzel örnek olmuş atmega8 boot attıktan sonra yaptığımız herhangi bir uygulamayı atmega8 yüklerken nasıl yapıyoruz basit bir örnekle anlatabilir misiniz.

  14. Malik dedi ki:

    Merhaba… Örnek gayet açıklayıcı olmuÅŸ. Ben aynı ÅŸekilde yaptım ve sürekli hep aynı hatayı alıyorum. Bazen hata deÄŸiÅŸiyor anlamıyorum.
    Forumdada sordum ama bir arkadaş dışında pek ilgilenen olmadı. Madem siz bu konuyu açmışsınız iki yıl önce 😀 ozaman bende bu konuda deney yapan birisi olarak sorularımı sorayım.
    Arduino Uno R3 ile bir arduino8a.pu yada 168a.pu cipe bootload yapmak istedim. Önce kristal yoktu arduino sitesindeki yönlendirmeler ile o şekilde denedim. O olmadı gittim kristal aldım o da olmadı. Ben bu işte çok yeniyim. Ama başa gelen çekilir. İstesem gidip bootload yüklü bir cipte alırım ama bunu yapamıyorsam bunca masrafa neden girmiş olayım diye sinirim bozuluyor.
    Normalde çoğu örnekte Atmega8-16pu kullanılıyor bootloader için. Bendeki çip 168A-Pu bu bir sorunmu. Çipi araştırırken her çipin kendine ait bir imzası olduğunu gördüm yada öyle diyeyim çünkü hata bunla alakalı.

    ”Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.” Diye bir hata alıyorum.
    Fuse ayarları olduÄŸunu gördüm. Ama dedim ya daha yeniyim Fuse nedir bilmiyorum. Ardunio IDE’sinin içerisinde Board isimli bir txt var. Bu txt içerisinde fuse ile alaklı bir ayar var. Low bit High bit. Bu low ve high bit leri hesaplayan bir calculator var. Yani bunları neden söylüyorum okadar çok ÅŸey varki. Bootload edememin sebebi bunlarmı. Çipin sonunda A takısı olması imzayı ve fuse ayarlarını deÄŸiÅŸtirirmi. Arduino ide’si bize Atmega8 ile ilgili bootloader verirken 8A.Pu da kapsıyormu ?
    Elimde 168A-Pu da var onunlada denedim oda aynı hatayı verdi. Ya çipin sonundaki takı ile alaklı bir durum var ya da ben bu işi beceremiyorum.
    Ayrıca bu çipleri aldığım yer bana ” Bunlara kesinlikle bir ÅŸey yüklenmemiÅŸtir” dedi. daha önce boot edilmemiÅŸler. Lütfen yardımcı olunuz yok sa deliricem 🙂

  15. Osman Akkaya dedi ki:

    Merhaba… Benim sorunum ÅŸu ÅŸekilde Ä°lk aldığım Arduino Uno kartımı geçenlerde bozmayı baÅŸardım.Adaptör giriÅŸinin yanında sanırım voltaj regülatörü mevcut ve o regülatör yandı galiba kartı elime aldığımda voltaj regülatörünü altı adeta yanıyordu her neyse … bende madem böyle oldu atmega 328 entegresini alayım diÄŸer arduino kartımla programlarım diye düşündüm bu makalenize göz attım.Sorum ise Şöyle: “Atmega328 entegresini bir aduinodan söktüğüm için bootloader yüklü olması gerekir bu entegrede Acaba buentegreye tekrar bootloader yüklememe gerek var mı? ” yardımlarınız için ÅŸimdiden teÅŸekkürler…

  16. aknc03 dedi ki:

    Merhaba İsmail Hocam vereceğiniz bilgiler için şimdiden teşekkür ederim.
    Sayın Hocam elimde iki tane arduino mega 2560 var bir tanesi R3 versiyonu bir taneside R2 versiyonu r3 versiyonunun bootloader büyük bir ihtimalle çöktü R2 sağlam ben R3 ün bootloderini tekrar nasıl yüklüyebilirim cevaplandırırsanız sevinirim. Saygılarımla aknc03

  17. Onur94 dedi ki:

    Uno üzerindeki 328i breadboarda taşıdım. Zaten içinde bootloader var. Kart = Arduino Duemilanove or Diecimila w/ ATmega328, programlayıcı = Arduino as ISP seçili halde iken blink programını upload ettiğimde hata veriyor. Nerede hata yapıyorum? Bağlantım bu şekilde; http://arduino.cc/en/uploads/Tutorial/ArduinoUSBSerial.png

    • Ömer Koman dedi ki:

      onur94 sadece boş atmega328a ya bootloader yuklemek için bu bağlantı, led blink için ftdi kablosu ile serial portundan normal program yukler gıbı yuklemen lazım.

  18. Fatih Dursun dedi ki:

    mega 2560 da
    avrdude: stk500v2_getsync(): timeout communicating with programmer
    hatası alıyorum acil yardım edebilir misiniz?

  19. Merhabalar. Benim projem Fall Detection Radio Control Unit. Accelerometer ile bir cihazın düşüp düşmediğini, düştüğü anda düştüğünü farkedip sistemi kapatmasını yapmaya çalışıcam. Bunun için Arduino kullanmak istiyorum ama hangisini seçeceğime karar veremedim. Hocam, Arduino pro mini kullan dedi ama onun USB girişi yok anladığım kadarıyla. ayrıca SD karta diğer hareketlerin sinyallerini kaydedip ayrım yapmam lazım. ADXL345 3-5 V arası çalışıyor. SD Kart Modülü de 3.3 V da çalışıyor. Ben ise Arduino nano kullanmak istiyorum ama onlar 5V ile çalışıyor anladığım kadarıyla. Materyallerin yanma durumu var. acaba bu soruna nasıl çözüm bulabilirim. yardımcı olursanız sevinirim.

  20. Batuhan dedi ki:

    Merhaba Çok güzel bir paylaşım. Bir iki sorum olacak :
    -Bu işlemi gerçekleştirirken Arduino üzerinde buluan Atmega328p kalıyor mu yoksa çıkartıyor muyuz?
    -Ben tekrar 328p ye bootloader yüklemek istiyorum onun için ne yapmam gerekiyor

  21. Ömer Koman dedi ki:

    yukarıdaki gibi bir düzenek kurduğınızda unodaki işlemci kalıyor çünkü uno isp prpgramlayıcı olarak kod çalıştıracak. diğer devredeki atmel işlemci de kalacak çünkü ona boot kodu atılıyor.

  22. onur yıldız dedi ki:

    iyi gunler sorum su ardunıo uno nun(atmega328) entegresını söküp taktım su an yzdıgım kodlrı kodlrı ve ınternneten buldum hazır kodlrı çlıstırmıyor yardımcı olurmusunuz simdiden teşşekurler

    • Ömer Koman dedi ki:

      takarken bir bacağı arkaya katlanmış olabilir dikkatli şekilde çıkarıp düzelttikten sonra yerine tekrar takıp deneyim iyice yerine oturması lazım. ters yönde de takmış olablirsiniz. entegrenin ustunde çentik li kısım la bordun uzerındekı işaret aynı yonde olmalı

  23. abdullah dedi ki:

    arkadaÅŸlar merhaba elimde 16 mhz kristal osilatör yok üzerinde 26000, 24000 ,4000 yazan osilatörler var bunların herhangi birini kullansam sorun çıkarırmı…

    • Ömer Koman dedi ki:

      tum arduino programları ve zamanlamaları 16mhz ye gore yapılmıştır sen 16mhz kristal bul kullan 1 tl bişe zaten. 4000 olanı kullanma şansın var ancak arduino içinde bir çok yeri modifiye etmen lzım uğraşma boşuna

      • abdullah dedi ki:

        mevzu parası değil hocam bulunduğum yerde o malzemelerin temini oldukça zor internetten sipariş verecem mecbur sağolasın.. eski devrelere 13875x yazan buldum bi tane onunla yapma ihtimalim nedir..

  24. taner dedi ki:

    hocam ben arduino uno alacam fakat usb chip 340 ile diger klon arasında büyük çapta bi fark var mı öğrenciyim ve aşırı kısıtlı bütçem var lütfen bi yardım

    • Ömer Koman dedi ki:

      klon ürünlerde sadece chip sorunun olmayabilir genelde calısıp calısmadıgı test edilmeden dırek suruyorlar piyasaya bu nedenle ucuzlar. ch340 chip drıverları artık sorun degıl normal kullanılabılıyor. klon olup orjinal şema ile bırebır aynı urun de var direnc.net e bir bakın. yerli firmalardan run alırsannız bozuk çıkarsa değiştirme fırsatınız olur.

  25. Yasemin dedi ki:

    Merhaba hocam, ben bos olan ATmega328 chip’e avr isp ile bootloader ve ardindan Sketchimi flashlamak istiyorum. Arduino uno üzerindeki chipi cikartip yerine yeni aldigim bos chipi yerlestirdim.PC ile baglantiyi kurduktan sonra Tools>>Board>> Arduino Uno secenegini tikladim. Ardindan Programmer>> Avrisp mkII sectim. Son olarak Bootloader flashlamayi tikladim ama hata veriyor. Bana yardimci olabilirmisiniz acaba? Simdiden cok tesekkürler..

    • Ömer Koman dedi ki:

      arduino isp çalıştırma için sağlam tam çalışır bir uno ya ihtiyaç var. diğer boştaki yada bootloader yuklenecek arduinoya gerekli boğlantıları jumper atlamalarını yaptıktan sonra bootloader yukleyebılırsın.
      şunlardan faydalanın https://www.arduino.cc/en/Tutorial/ArduinoISP

      avr flash programlayıcı ıle yapacam dersen herhangi bir arduinoya ıhtıyacın yok bord uzerındekı ısp pinlerinden program atılabılır kendı ayrıcana aldıgın isp programlayhıcının programı ıle bootlader hex kodunu yukleyeceksin

  26. Yasemin dedi ki:

    Forumdan hic cevap alamadim.

  27. Yasemin dedi ki:

    Zannedersem sorunu cözdüm, baska bi sorum daha vardi. Flashladigim bu chipi breadbord üzerinde denemek isiyorum, gerckten flaslanip flashlanmadigini. Extern Quarz kullanmak zorundamiyim, yoksa bu Atmel Studio ile ayarladigim Fusus larda Quarz da intern olarak ayarlandimi?
    Tesekkürler simdiden

    • Ömer Koman dedi ki:

      internal clock kullandığınızda pll ayarlarından 16mhz ye denk gelecek şekılde ayar yapmanız lazım. daha düşük clock hızında program zamanlama hataları alırsınız.

  28. Metin dedi ki:

    Merhaba,
    atmega328p çip’e elimde olan 3 dosyayı yüklemek istiyorum code.hex data.hex config.hex ne yapmam lazım.

    • Ömer Koman dedi ki:

      bu dosyaları size veren kişi bilgi vermedi mi? usbasp atmel programlayıcı ile yuklemeyi deneyın ama sadedece hex dosyayı yuklemek çözum olmayabılır donanım da bırenır olması gerekır. foruma gelin

  29. murat dedi ki:

    merhaba, arduino 328 için yazılı sketch i 168 için nasıl çevirebilirim ?
    ikiside 16 mhz 5 v

    • Ömer Koman dedi ki:

      arduino ide de araçlar/tools altında bord olarak Duemilanove olanı seçin daha sonra bordu seçtiÄŸinizde yine aynı yerde iÅŸlemci/processor seçeneÄŸi belirecek orada atmega168 i seçin. programı compile edin ve yukleyin. iÅŸlemci farkı oldugu ıcın kodun her yeri çalışacak diye bir ÅŸey yok tabi bolcana test yapmanız lazım…

  30. servet bayar dedi ki:

    merhaba ,,
    paylaşımlarınız iiçin teşekkür ederim ,,elimde mevcut atmega 8 var bunu farklı bir devrede kullanmam gerekiyor usbasp aldım kurdum lakin ,uspasp set sck için uyarıyor sonrada -F override check diyor sürücü güncellendi ,,nasıl bir hata olabilir ,,avrdude usb yi görüyor avr burn o mat de görüyor ,,anlayamadım yardımcı olabilirmisiniz saygılar kolay gelsin ,

    • Ömer Koman dedi ki:

      atmega8 e kuracağınız programı arduino ide ile yazdıysanız atmega 8 için gerekli clock ayarlarını inceleyin. dahili clock mu harici kristalmi nedir onları hep bilmeniz lazım.

  31. […] Atmega8’e Arduino Uno Kullanarak Arduino NG Bootloaderı Yükleme […]

  32. Metin dedi ki:

    Merhaba Hocam ,
    Öncelikle size sonsuz teşekkürlerimi sunarım beni büyük bir dertten kurtardınız 🙂
    Söylediğiniz gibi herşey yaptım, sketch yüklüdim ve atmega8 çalışıyor. Ancak verdiğiniz boot.hex dosyasını gerekli yerlere kopyalamama rağmen sketch 10 sn sonra çalışıyor. hex dosyası yanlış olabilir mi? konu ile ilgili yardımcı olabilir misiniz?

    • Ömer Koman dedi ki:

      sistem clock hızı ayarları düzgün yapılandırılmamış gibi görünüyor.

E-posta adresiniz gösterilmeyecek. Gerekli alanlar * ile işaretlidir.

*



Sosyal AÄŸlar