Uno'dan Uno'ya Bootloader...

Merhaba herkese… Bugün kadıköye gittim ve bir kaçtane Atmega168, Atmega8 entegre aldım. Elektronik malzemesi satan arkadaş istediğimhalde 8 mhz ve 16 mhz cristalleri koymamış. Eve geldim hüsran. Sonra baktım internetten Ardunio resmi sitesinde kristal olmadanda unonun kendi osilatörü ile çalışabiliyoruz. Çalışabiliyormuşuz desem daha doğru olacak. Olmadı yapamadım saçlarımı yoldum resmen. Beni aşan bazı konularda var. Doğru bağladığıma eminim yüzkere kontrol ettim. Yikes! Invalid device signature. Hatası veriyor. Bu hatayı Atmega168 ile de Atmega8 ile de veriyor. Sanırım osilatör ile alakalı bir durum var. Çalışma saatini yüklenecek entegreye göre ayarlayamıyorum. Sizce böyle bir durum ne yapmak gerekir ?

selam şu linkte http://arduino.cc/en/Tutorial/ArduinoToBreadboard detaylı anlatılmış, son 5.maddede minimum arduino kısmında. arduinoya bootloader yuklerken “ATmega328 on a breadboard (8 MHz internal clock)” seçeneği ile yukleme yapmanıs lasım, bunun için başka bir una ya daha ihtiyaciniz olacak. ayrıca o yazının 1. maddesindeki http://arduino.cc/en/uploads/Tutorial/Breadboard.zip dosyasını arduino altındaki sketchbook folder altına hardware klasörü açıp kopyalamak gerekiyor. işlemlerı adım adım yaparsanız sorun çıkmaz.

Teşekkürler Okoman. Ancak anlayamadım neden ikitane unoya ihtiyaç duyayımki. Ardunio’nun kendi web sitesinde gösterdiği ISP’de şemada kullandığı sadece Atmega8 yada 168 bu iki işlemciye breadboard üzerinden yükleme yaparken genelde xtal capacitör kullanıyorlar. Ben olmadığı için ardunionun web sitesinde gösterdiği gibi denedim. Ama olmadı. Şimdi bootlad yapmak için gidip bir tane dahamu uno almam gerek? Elimde bir Due var ama onada ISP yüklenemiyor. Düzeltmeleri yapıyorlar sanırım DUE için. Şimdi gidip bir de XTAL alarak deneyeceğim bakalım ne olacak… İki entegreyi sync edemedim ya ona üzüldüm :frowning:

Birde şöyle bir konu var. Herkesin bir ayar çektiği ama benim kafamın basmadığı.Avardude olayı hakkında fikri olan varmı. Hatta Avr Fuse calculator diye birşey var. Sanırım bunla alakalı bir durumda olabilir. Hiç forumda Macosx sistem ile yada hadi Pc’de olur atmega8 ve ya 168’e bootloader yükleyen yokmu var sa bir yardımcı olsun.

atmega işlemcileri avrdude veya benzeri programlayıcı ile programlayabilirsiniz. arduinoda işler kolaylaştırılarak butip ek donanıma ihtiyaç olmadan atmega içine bir bootloader yüklenır, bu bootloader işlemciye voltaj verılır verılmez çalışır ve serıporta bakar eğer hehangi bir program yuklenmeyecekse ilk adresten itibaren içine onceden yuklu olan programı çalıştırır. arduino bordlarda bu bootloader yuklu olduğu için sıkıntı duymadan istedgınız kadar programı yuklersınız. piyasadan aldığınız işlemciler tamamen boştur içinde bootloader filan yoktur bunları programlamak için veya bootloader yukleyıp arduino halıne getırmek için avrdudeye veya başka bir arduinoyu programlayıcı moduna getırıp onunla programlamanız gerekıyor. kristal ve diğer register ayarları ise her işlemcidekı setupları ayarlamaya yarar ılerı duzey kullanıcılar ıcın gereken bırsey ama bilmekde fayda var. arduino tum bu teferruattan ve hesap kıtaptan bizi kurtarır bırsey bılmemıze gerek kalmadan yıllarını muhendıslıkle harcamıs programcılar gibi iş yapmanızı saglar

atmega8 ve atmega168 de program hafızası daha kucuktur bu nedenle o işlemciler ıcın hazırlanmış bootloaderlerı yuklemenız lazım. şurada detayları var http://arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader http://playground.arduino.cc/Learning/Burn168#.UzFYXaK0vdY

Okoman üstadım. Ozaman sen diyorsunki bir atmega cipe unoyu programlayıcı yapıp isp için gerekli pinleri takıp şip şak bootload yapamayız. İlla bir dünya ayarlama yapmak gerek. Peki Youtube ve vimeo da insanların ardunio web sitesindeki yönlendirmeleri ile bootload ettikleri çiplere daha önceden bootloader yüklenmiş mi? Ozanan bu kadar uğraşacqğıma bootload edilmiş atmega alayım derdim ama bana göre bir iş değil, İllede kendim bootload etmem gerek. Daha ben bunu başaramadım kafamdaki projeleri nasıl yaparım?

elinde uno varsa onu kullanarak başka bir boş atmega cpu ya bootloader yukleyebılırsın. avrdude gibi programlayıcısı varsa onlarla da bootloader yuklayebılırsın, o boş atmeganın kristalli veya internal osc ile çalışmasını ise yukledıgın bootloaderle alakalı bir şey. yukarıda linkını verdığım sayfada bunu anlatıyor.

Internal osc derken boş cpu’nun uno dan clock almasından bahsediyorsun sanırım. Bunun içinde breatboard diye bir txt dosyası var. Hardwaree klasörüne atıyoruz board seceneklerınden ınternal clok atmega328 8mhz isimli bir board çıkıyor onu seçip burn bootloader diyoruz. Diyoruz’da gene olmuyor. Bu arada ben osx kullanıyorum. arduino IDE’sinden arduino as isp ile bootload etmeye çalışıyorum. Benim anladığım önce Arduino ya Arduino ISP yükleyip sonra old ardunio board seçerek, processor den 168 ya da 8 atmega hangisini kullanıyorsak onu seçip, programmer menüsünden Arduino as ISP seçip, Burn bootloader diyoruz. Genel anlatım bu bootloader yüklemek için. Extra yapılması gereken bitşey varmı ? Açıkçası çok tarzanca bir ingilizcem var. Zaten ingilizcem iyi olsaydı bu kadar saçımı yolmazdım :slight_smile: Bu arada ilgilendiğin için çok teşekkür ederim. Koca forumda bir kişinin bir şeyler söylemesi de enteresan.

hayır onu kastedmıyorum. xtal kullanmak istemezsen internel clock kullanabılıyorsun arduinoda. işlemci içinde rc osilator var kullanabılırsın normal olarak. ama bootloader yuklemek için krıstale fılan gerek yok zaten. gereklı baglantıları yaparsanız zaten ISP denen programlama bacakları uzerınden dırek programlanmış olur.

Okoman bilmiyorum seni sıkıyormuyum. Kristalsiz internal clock yöntemini denedim. http://arduino.cc/en/Tutorial/ArduinoToBreadboard ‘‘Minimal Circuit (Eliminating the External Clock’’ başlığı altında anlatıldığı gibi. Linkteki solda olan breadboard bağlantılarını kurdum. Ve http://arduino.cc/en/Tutorial/ArduinoISP bu linkte Using an ‘‘Arduino as an AVR ISP (In-System Programmer)’’ başlığı altındaki tüm yönlendirmeleri uyguladım. Fakat boodloader yükleyemedim. Bana verdiği hata mesajı ise ‘‘avrdude: Yikes! Invalid device signature. Double check chip, or use -F to override this check.’’ bunu söylüyor. Yani gerçekten çok sinir bozucu. Kusura bakma bu bootloader yapmazsam içim rahat etmiyecek. Gidip hazır bootlader yüklenmiş bir cipide almam daha bu saatten sonra, çünkü iş inada bindi baya.

hangi chipi kullanıyorsan ona ait bootloaderi yuklemen lazım. bırde şunlara bak bizden http://arduinoturkiye.com/atmega8e-arduino-uno-kullanarak-arduino-ng-bootloaderi-yukleme/ http://arduinoturkiye.com/arduino-ile-attiny-programlama-1/

Evet bunuda denedim. Bendeki Atmega8A-Pu chip. Yazının sonunda arkadaş Atmeganın 16mhz destekleyen cipi demiş. Bu fark yüzünden yapamıyor olabilirmiyim. Gerçi baktım datasheet e Max 16mhz yazıyor benim aldığım modeldede. Atmega8-16PU olmazsa olmuyor olabilirmi ? Bence alakası yok gibi ama sen daha iyi biliyorsun okoman.

Resimleri göndermek isterim ama buraya resim asamıyoruz sanırım… Şimdi Vmware a atmel studio indiriyorum. Paralel desktop ile sıkıntı olurmu acaba ?

atmega8.name=Arduino NG or older w/ ATmega8 atmega8.upload.protocol=arduino atmega8.upload.maximum_size=7168 atmega8.upload.speed=19200 19200 Dogrumu ====================================== atmega8.bootloader.low_fuses=0xdf atmega8.bootloader.high_fuses=0xca Bunlar Standart Ayarlar 8A-Pu icin extra degisiklik gerekirmi ====================================== atmega8.bootloader.path=atmega8 atmega8.bootloader.file=ATmegaBOOT.hex atmega8.bootloader.unlock_bits=0xFF atmega8.bootloader.lock_bits=0x0F atmega8.build.mcu=atmega8 atmega8.build.f_cpu=16000000L Atmega8A-Pu Dogru Clock atmega8.build.core=arduino atmega8.build.variant=standard Bir de her işlemcinin kendi imzası var. Bu imza Atmega8A için farklı Atmega20-Pu için farklı acaba buralardamı problem yaşıyorum. Ya da siz Atmega8 için tüm ayarlar ardunioda standartmıdır dersiniz.

bootloader yuklerken yada programlanırken işlemcinin iç clok veya dış clock kullanmasının veya hızının bir onemı yok. başka bır hata yapıyor olabılırsınız. bu işlemlerı direk bir pcde yapsanız belkı sorunların bır kısmını aşmış olursunuz sanırım mac uzerınden bır sanal pc ile donanıma ulaşıyorsunuz belkı seri port desteğindeki gecikmelerden veya uyum sorunlarından dolayı işlemcıye ulaşamıyorsunuz. mac de arduino versiyonunda denemdım bu yontemlerı mac uzerınde serıport erişimi ayrı bir device olarak tanımlı belkıonda bır sorun vardır. siz bu işlemciyi programlama için bir uno uzerınden mı yapıyorsunuz yoksa arada bır programlayıcı avrdude gibi bir şey varmı. elinizde mutlaka çalışırdurumda işlemcili uno ve programlayacagınız atmega cpu olması lazım.

Direk mac üzerinden denesemde aynı sonucu veriyor. Sanal olarak linux kurdum ondada aynı sonucu verdi. Ben de Uno var daha önce de söylemiştim. Orjinal uno. Programlamaya çalıştığım cip Atmega 168A-pu ve Atmega8A-pu. Uno yu Robotistandan aldım. Çipleri ise kadıköyden aldım. Due de var ancak due ye ISP yüklenemiyo nedenini bilmiyorum direk olarak hata veriyor IDE. Dediğim gibi ingilizcem çok iyi değil çat pat anlıyorum. Arduino forumunda Atmege8A için başkalarıda problem yaşadığını belirtmiş. Birisi 8mhz kristal ile dene yazmış forum da öylede denedim. Board ayarlarını değiştirip gene olmadı. Sizce aldığım çipin tamamen boş olmasından kaynaklanıyor olabilirmi. Hani bir tane almış olsam neyse 5 tane Atmege8a aldım 5 tane atmega 168a aldım hiç birinde olmadı. Hepsi bozuk olamaz herhalde çiplerin. Bağlantıları doğru yaptığıma kesinlikle eminim. Arduniolar genelde sonu 168 p 328p gibi işlemciler kullanıyor. BendekilerA sorun burda olabilirmi ?

Ardunio 1.5.6r2 IDE ile 8 MHZ kristal ile deneyince bana böyle bir hata verdi. :smiley: Çok sevindim sonunda hata kodu değişti demekki birşeyler doğru gidiyorki başka hatalara neden oluyorum :stuck_out_tongue: Şaka bir yana sanırım şimdi Atmega8a için fuse ayarı gerekiyor. avrdude: verifying … avrdude: 1 bytes of lock verified “efuse” memory type not defined for part “ATMEGA8” avrdude: Send: Q [51] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] avrdude done. Thank you.

Tüm geri dönen kodu gönderiyorum… İki parça halinde… avrdude: Version 5.11, compiled on Sep 2 2011 at 18:52:52 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is “/Applications/Arduino1.5.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf” User configuration file is “/Users/possessor/.avrduderc” User configuration file does not exist or is not a regular file, skipping Using Port : /dev/tty.usbmodemfd121 Using Programmer : stk500v1 Overriding Baud Rate : 19200 avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] AVR Part : ATMEGA8 Chip Erase delay : 10000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 4 20 128 0 no 512 4 0 9000 9000 0xff 0xff Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- flash 33 10 64 0 yes 8192 64 128 4500 4500 0xff 0x00 Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00 Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : STK500 Description : Atmel STK500 Version 1.x firmware avrdude: Send: A [41] . [80] [20] avrdude: Recv: . [14] avrdude: Recv: . [02] avrdude: Recv: . [10] avrdude: Send: A [41] . [81] [20] avrdude: Recv: . [14] avrdude: Recv: . [01] avrdude: Recv: . [10] avrdude: Send: A [41] . [82] [20] avrdude: Recv: . [14] avrdude: Recv: . [12] avrdude: Recv: . [10] avrdude: Send: A [41] . [98] [20] avrdude: Recv: . [14] avrdude: Recv: . [00] avrdude: Recv: . [10] Hardware Version: 2 Firmware Version: 1.18 Topcard : Unknown avrdude: Send: A [41] . [84] [20] avrdude: Recv: . [14] avrdude: Recv: . [00] avrdude: Recv: . [10] avrdude: Send: A [41] . [85] [20] avrdude: Recv: . [14] avrdude: Recv: . [00] avrdude: Recv: . [10] avrdude: Send: A [41] . [86] [20] avrdude: Recv: . [14] avrdude: Recv: . [00] avrdude: Recv: . [10] avrdude: Send: A [41] . [87] [20] avrdude: Recv: . [14] avrdude: Recv: . [00] avrdude: Recv: . [10] avrdude: Send: A [41] . [89] [20] avrdude: Recv: . [14] avrdude: Recv: . [00] avrdude: Recv: . [10] Vtarget : 0.0 V Varef : 0.0 V Oscillator : Off SCK period : 0.1 us avrdude: Send: A [41] . [81] [20] avrdude: Recv: . [14] avrdude: Recv: . [01] avrdude: Recv: . [10] avrdude: Send: A [41] . [82] [20] avrdude: Recv: . [14] avrdude: Recv: . [12] avrdude: Recv: . [10] avrdude: Send: B [42] p [70] . [00] . [00] . [01] . [01] . [01] . [01] . [02] . [ff] . [00] . [ff] . [ff] . [00] @ [40] . [02] . [00] . [00] . [00] [20] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] avrdude: Send: E [45] . [05] . [04] . [d7] . [c2] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] avrdude: Send: P [50] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] avrdude: AVR device initialized and ready to accept instructions Reading | avrdude: Send: V [56] 0 [30] . [00] . [00] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [1e] avrdude: Recv: . [10] avrdude: Send: V [56] 0 [30] . [00] . [01] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [93] avrdude: Recv: . [10] ################avrdude: Send: V [56] 0 [30] . [00] . [02] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [07] avrdude: Recv: . [10] ################################## | 100% 0.07s

avrdude: Device signature = 0x1e9307 avrdude: Send: V [56] . [a0] . [01] . [fc] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [ff] avrdude: Recv: . [10] avrdude: Send: V [56] . [a0] . [01] . [fd] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [ff] avrdude: Recv: . [10] avrdude: Send: V [56] . [a0] . [01] . [fe] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [ff] avrdude: Recv: . [10] avrdude: Send: V [56] . [a0] . [01] . [ff] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [ff] avrdude: Recv: . [10] avrdude: erasing chip avrdude: Send: V [56] . [ac] . [80] . [00] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [00] avrdude: Recv: . [10] avrdude: Send: A [41] . [81] [20] avrdude: Recv: . [14] avrdude: Recv: . [01] avrdude: Recv: . [10] avrdude: Send: A [41] . [82] [20] avrdude: Recv: . [14] avrdude: Recv: . [12] avrdude: Recv: . [10] avrdude: Send: B [42] p [70] . [00] . [00] . [01] . [01] . [01] . [01] . [02] . [ff] . [00] . [ff] . [ff] . [00] @ [40] . [02] . [00] . [00] . [00] [20] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] avrdude: Send: E [45] . [05] . [04] . [d7] . [c2] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] avrdude: Send: P [50] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] avrdude: reading input file “0x3F” avrdude: writing lock (1 bytes): Writing | avrdude: Send: V [56] X [58] . [00] . [00] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [ff] avrdude: Recv: . [10] ################################################## | 100% 0.02s avrdude: 1 bytes of lock written avrdude: verifying lock memory against 0x3F: avrdude: load data lock data from input file 0x3F: avrdude: input file 0x3F contains 1 bytes avrdude: reading on-chip lock data: Reading | avrdude: Send: V [56] X [58] . [00] . [00] . [00] [20] avrdude: Recv: . [14] avrdude: Recv: . [ff] avrdude: Recv: . [10] ################################################## | 100% 0.02s avrdude: verifying … avrdude: 1 bytes of lock verified “efuse” memory type not defined for part “ATMEGA8” avrdude: Send: Q [51] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] avrdude done. Thank you.