Arduino yu farklı kristal değerlerinde çalıştırma

Başlatan samedkutuk, 16 Mayıs 2019, 03:02:12

samedkutuk

merhabalar
arduino uno nun üzerinde gelen atmega328p yi kendim arduino uno dışında bir devreye bağlayıp rahatlıkla ve sorunsuz kullanabilirken sonradan satın aldığım atmega328p yi programlasam bile örneğin bekleme verdiğim zamanı yanlış alıyorum(10 sn yanması gereken led 8 sn yanıyor).
bu sorunumun kristal seçimi ile ilgili olduğunu anlayıp araştırdım. sanırım arduino da kristal seçimi pıc de ki gibi yazılımsal olmuyor. daha önce bu formda da bu konu ile ilgili açılan konuları okudum faydalı oldu yazan herkese çok teşekkür ederim.
benim sorum;
1)Atmega328p yi uspasp olmadan arduino ile kristal seçimini(16mhz,20mhz) değiştirebilir miyim?
2)eğer arduino ile yapamılamıyor ise nasıl bir yol izlemem gerekiyor yardımcı olur musunuz?
3) son olarak sizce bu sorun konfigrasyon ayarları ile alakalımıdır. sıfır aldığımız atmega neden arduino üzerindeki ile aynı değil?
samedkutuk

Amenofis

8 mhz ve üzeri frekanslar aynı fuse ayarını kullanıyor, yani 16 çıkarıp 20 takabilirsin. Zamanlamalar tabiki değişecek, çalışma hızı değişiyor sonuçta.

Sıfır atmega328 ise usbasp gibi bir programlıyıcı olmadan zaten programlanamaz ve 8 mhz dahili osilatör ile çalışır.

Tagli

Arduino'nun kendisini bir AVR programlayıcıya dönüştürmek mümkün. Normal çalışır haldeki bir Arduino'ya Examples altındaki ISP (ismini unuttum ama buna benzer bir şeydi) sketch'ini yükleyerek bu cihazla diğer AVR çiplerini programlayabilirsin.
Gökçe Tağlıoğlu

samedkutuk

@Amenofis evet zamanlar değişyor
usbasp satın aldım fakat doğru düzgün bişey bulamadım eğer siz daha önce yaptıysanız yardımcı olabilir misiniz?
samedkutuk

samedkutuk

@Tagli  hocam benim fuse ayarlarını değiştirmem gerekiyor sanırım :(
samedkutuk

Tagli

Muhtemelen öyle. AVR'ler ile çok kısa bir süre uğraştım, o yüzden pek bilgi sahibi değilim. Sigortalarda kristalle ilgili ayarlar olduğunu hatırlıyorum, ancak ayrıntılar aklımda değil.

Öte yandan, yukarıda bahsettiğim Arduino programlayıcısı ile (ArduinoISP) herhangi bir AVR'yi programlayabilirsin. Bu şekilde sigorta ayarlarını değiştirmek de mümkün. AVRDUDESS diye bir program var. Bu program sigorta bitlerini seçmene imkan veriyor. ArduinoISP'yi kullanırken birkaç püf noktaya dikkat etmek lazım. İnternette kaynak var. En önemlisi, reset bacağına 22 uF kapasitör takmak.

Yine de problem üzerinde tekrar düşündüm de, aslında bunların hiçbirine gerek kalmaması lazım. Arduino IDE içindeki "Burn Bootloader" özelliği kullanıldığı zaman, bootloader boş AVR'ye yazılırken tahminimce sigorta ayarları da yapılıyor olmalı. Bence sorunu başka bir yerde aramalısın. Ancak "Burn Bootloader" dedikten sonra emin olmak için AVRDUDESS ile sigortaları okuyup kontrol edebilirsin.
Gökçe Tağlıoğlu

Amenofis

Arduino da harici programlayıcı olarak kullanılabilir ama o konuda tecrübem yok. Elinde usbasp varsa nasıl yapacağını anlatayım.

http://www.engbedded.com/fusecalc/

Burada ilk tablodan mikrodenetleyiciyi, osilatörü, diğer ayarları seç. İkinci tabloya dokunma. En altta avrdude ile vereceğin komut yazar. Onu kopyalayıp kullanabilirsin. Mesela ben atmega328p ve kristal osilatör seçtiğimde şu çıktıyı verdi. -U lfuse:w:0x6f:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m

Yani vereceğimiz komut;
avrdude –c usbasp –p m328p -U lfuse:w:0x6f:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m

Fuse ayarları ile oynarken dikkatli olmalısın. Harici osilatör seçili ise programlarken dahi kristal takılı olmalı yoksa cevap vermez. Ayrıca kristali 22pf ile gnd'ye bağlayacaksın.

En önemli fuse biti SPIEN. Bu bit mutlaka seçili olmalı. O biti unprogrammed yapıp o şekilde yazarsan geçmiş olsun, işlemci çöp olur.

samedkutuk

@Tagli  hocam evet bende şuan orayı kullanarak yükleme yapıyorum fakat normal arduino nun üzerinde gelen atmegada çalışan wdt fonksiyonum kendi yükleme yaptığımda çalışmıyor işin içinden çıkamadım malesef
samedkutuk

Amenofis

Sayın moderatör mesajlarım neden onaya düşüyor acaba? Yardım amaçlı bişeyler yazıyorum ama doğal olarak konu sahibi görmüyor çünkü benden sonra yazmış.

samedkutuk

@Amenofis  hocam söylediklerinizi uyguladım fakat ilk tablodan ne seçeceğimi anlamadım
samedkutuk

Endorfin35+

Alıntı yapılan: samedkutuk - 16 Mayıs 2019, 03:02:12merhabalar
arduino uno nun üzerinde gelen atmega328p yi kendim arduino uno dışında bir devreye bağlayıp rahatlıkla ve sorunsuz kullanabilirken sonradan satın aldığım atmega328p yi programlasam bile örneğin bekleme verdiğim zamanı yanlış alıyorum(10 sn yanması gereken led 8 sn yanıyor).
bu sorunumun kristal seçimi ile ilgili olduğunu anlayıp araştırdım. sanırım arduino da kristal seçimi pıc de ki gibi yazılımsal olmuyor. daha önce bu formda da bu konu ile ilgili açılan konuları okudum faydalı oldu yazan herkese çok teşekkür ederim.
benim sorum;
1)Atmega328p yi uspasp olmadan arduino ile kristal seçimini(16mhz,20mhz) değiştirebilir miyim?
2)eğer arduino ile yapamılamıyor ise nasıl bir yol izlemem gerekiyor yardımcı olur musunuz?
3) son olarak sizce bu sorun konfigrasyon ayarları ile alakalımıdır. sıfır aldığımız atmega neden arduino üzerindeki ile aynı değil?

Ayni sorun bende de olmustu. Arduino ile bir proje gelistirmistim. Sonra arduino board u kullanmak yerine 328 satin alarak kendi baski devremi kurdum.arduino uno board u kullanarak arduino ide uzerinde 328 e yukleme yaptim. Dedigin gibi yavas calisti.

Baska bir yazilim programlayici kullanmadan sorunu asmistim ama net hatirlamiyorum islem sirasini. Yanlis hatirlamiyorsam soyle olmasi gerekli. Ben boot loader kullanmadan direkt kodun calismasini istiyordum. Calisti ama yavas... sonra bootlader da yukledim. Hizlandi. Sonra yine bootlader devre disi kalacak sekilde yukleme yaptim. Sanirim bootlader yapiyordu fuse ayarlani vs...

Bende baya bir cevap arayip bulamayinca deneyerek cozmustum. Umarim cozersin.
"İşi bilen yapar, az bilen akıl verir, bilmeyen eleştirir, yapamayan çamur atar."

mehmet

Yeni satın alınmış Atmel ATMegaxx8; dahili
1MHz. (1/1 MIPS) hızına ayarlıdır. Uygun
şekilde gereken hız ayarı ve diğer ayarlar
için gerekli sigorta değerleri girilmelidir.

Eclipse içerisindeki AVR eklentisi veya bir kaç
farklı program ile sigorta ayarlarını düzenlemek
mümkün.
Hatta online olarak yapmak da mümkün.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

samedkutuk

@mehmet  hocam @Endorfin35+  hocam sorunu çözdüm şimdi işilem sıralamamı anlatayım ki aynı sorunu daha sonra yaşayacak olan arkadaşlarımıza yol göstersin.
1-)usbasp güncel olması gerekiyor
2-)usbaspnin kullanılan işletim sistemi ile uyumsuzluk sorununun giderilmnesi gerekli.
3-)avrdudess programı yüklenerek basit kullanıma sahip olan arayüzden bootloader yüklenecek.
dikkat edilmesi gereken:
H,L,E,LB değerlerine uygun sigorta ayarlarını girmelisiniz
engbedded avr calculator sizin yerinize bu değerleri çıkarabiliyor.
ben H=0XDE,L=0XFF,E=0X05,LB=0X3F değerilerini yükleyerek atmega328p yi sorunsuz 16mghz de çalıştırabildim
yardım eden tüm hocalarıma teşekkür ederim :)
samedkutuk