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, Atmega48Atmega168 ve Atmega328‘e de kendilerine uygun bootloader yükleyebilirsiniz.

İyi çalışmalar…

Kaynaklar:

Gerekli Olabilecek Bağlantılar:

 

İsmail

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

41 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.

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

*



Sosyal Ağlar