Mesajlar Etiketlendi ‘bootloader’

ARDUINO Bootloader

Yayınlandı: Ağustos 26, 2016 / Hardware & Software
Etiketler:, , ,

Dün gece Arduino MEGA2560 ile çalışırken, Watchdog timer’ı aktif yapıp denemek istedim.
Kodu yükledikten sonra da, bir daha MEGA’ya program atabilmek mümkün olmadı.
Kart sürekli kendini resetlediğinden, IDE’den veya hex loader’dan erişmek mümkün olmadı.
Hala da bir programlayıcım olmadığından, daha önce 328P’ye yüklediğim gibi, başka bir arduino’dan
kod atıp atamayacağımı araştırdım.
Evde bir tane 328p çipli x-board modülü vardı, bu modül UNO ile hemen hemen aynı.

board

Nette biraz araştırma ve birkaç deneme sonucu Nick Gammon’un sitesinde güzel ve kullanışlı bir kod
buldum.

Bu linkten konuya ve koda ulaşabilirsiniz. (http://www.gammon.com.au/forum/?id=11633)

ilk adım kodları indirmek ve zipten çıkarttığınız klasörü olduğu gibi, arduino/libraries altına atmak.
IDE’yi açıp, “ATMEGA BOARD PROGRAMMER” dosyasını yüklüyoruz.

ide
Bağlantılara gelince;
UNO’nun (veya başka bir model) ICSP pinlerini (MOSI, MISO, SCK) mega’nın ICSP pinlerine, bire bir bağlıyoruz.
MEGA’yı USB’den ayrıca besliyoruz. UNO’nun 10.pinini, MEGA’nın RESET pinine bağlıyoruz.
UNO’ya (ya da ne kullanıyorsanız) kodu yüklüyoruz ve seri monitör penceresini açıyoruz. “G” tuşuna basıyoruz ve
bootloader hex, MEGA’ya yükleniyor. Hepsi bu 🙂

monitor

Biraz zaman kaybetsem de, yeni bir mega almaktan kurtuldum. Çalışmaya devam…

 

Reklamlar

Atmel programlayıcınız yoksa ve bootloader yüklü kontrolcü satın almadıysanız, aşağıdaki yöntemle ATMega168 ve AtMega328 kontrolcülerine bootloader kodunu atabilirsiniz. Tabi bunun için elinizde en azından bir Arduino kartı olması gerekiyor.

UNO kartını bilgisayara takıyoruz ve “Examples” klasöründeki ArduinoISP kodunu IDE’ye yüklüyoruz.


Arduino 1.0 sürümünü kullanıyorsanız bu kod içinde bir değişiklik yapmak gerekiyor.
Bunun için; kod içinde heartbeat fonksiyonunu aratın ve fonksiyon içindeki delay(40) değerini, delay(20) olarak değiştirin.

Bu kodu karta yükleyin ve alttaki devrelerden birini kurun.

Ben ATMega328P-PU için sağdaki devreyi kurdum ancak RESET ucundaki 10k direnci kullanmadım. Bağlantılar aşağıdaki şekilde;

UNO D10  ->  ATmega RESET (1)
UNO D11  ->  ATmega SCK (19)

UNO D12  ->  ATmega MISO (18)
UNO D13  ->  ATmega MOSI (17)
UNO 5V    ->  ATmega VCC (7,20)
UNO GND ->  ATmega GND (8,22)

Bunların dışında; isterseniz UNO’ya status ledlerini de bağlayabilirsiniz. 

D9: Heartbeat         – shows the programmer is running
D8: Error                – Lights up if something goes wrong (use red if that makes sense)
D7: Programming    – In communication with the slave

Seri port seçimini de yaptıktan sonra, Programlayıcı olarak “Arduino as ISP” seçiyorsunuz
ve <Burn Bootloader> ‘ı seçiyorsunuz.  Birkaç saniyede, bootloader kodu yükleniyor.



Uno’nun yeni sürümlerinde deneme şansım olmadı. Yüklemede sorun yaşarsanız, ArduinoISP kodunu attıktan sonra, 
Uno’nun reset ucunu 10uF kondansatör ile şaseye bağlayarak deneyebilirsiniz. 

Arduino sayfasında bu konuyla ilgili detaylı bilgi bulabilirsiniz. link

ATMEGA 328P