Mikrodenetleyiciler ve elektronik dünyasında pek çok farklı tür bulunmaktadır. En popüler mikrodenetleyici türlerinden biri de AVR ailesidir. Bu mikrodenetleyiciler, çok sayıda kullanım alanı ve işlevi olduğundan çeşitli projelerde veya ürünlerde kullanılabilir.
Bir Arduino projesine başlamak istiyorsanız ancak AVR mikrodenetleyiciyi Arduino ile nasıl programlayacağınızı bilmiyorsanız endişelenmeyin! Bu blog yazısında tüm seçenekleri ele alacağız!
AVR mikrodenetleyici nedir?
AVR mikrodenetleyici, AVR komut setini kullanan bir mikrodenetleyicidir. AVR, 1996 yılında Atmel tarafından geliştirilen, değiştirilmiş Harvard mimarisine sahip 8 bitlik bir RISC tek çipli mikrodenetleyicidir. AVR mikrodenetleyiciler genellikle Arduino kartlarında kullanılır ve Arduino kartları için programlama yaparken AVR mikrodenetleyicisini kullanacaksınız.

AVR mikrodenetleyicisinin tam adı
AVR mikrodenetleyicisinin tam adı Atmel AVR'dir. Bu mikrodenetleyici türü, başlangıçta otomobiller, cep telefonları, ev aletleri, ev izleme sistemleri ve daha pek çok gömülü cihaz için tasarlanmıştır! AVR mikrodenetleyicileri genellikle Arduino kartlarında kullanılır ve Arduino kartları için programlama yaparken AVR mikrodenetleyicisini kullanacaksınız.
AVR mikrodenetleyicinin özellikleri
– Düşük güç tüketimi – AVR mikrodenetleyicilerin en önemli özelliklerinden biri, düşük güç tüketimidir. Cihazla yaptığınız işlere bağlı olarak, güç tüketimi ihmal edilebilir düzeyden birkaç watt'a kadar değişebilir.
– Geniş sıcaklık aralığı – Sıcaklık cihazın hızını etkileyebilse de, AVR mikrodenetleyiciler -40 santigrat derece ile 85 santigrat derece arasındaki sıcaklıklara dayanabilir.
– 8 bit mimari – AVR mikrodenetleyicilerin bir diğer özelliği de 8 bit mimaridir. Bu, cihazınızın daha fazla belleğe ve daha fazla işlem gücüne sahip olmasını sağlar.
– Programcı dostu – Son olarak, AVR mikrodenetleyiciler programcı dostudur. Bu da onları, kendi projelerini oluşturmak isteyen yeni başlayanlar ve hobi meraklıları için mükemmel bir seçim haline getirir.
AVR mikrodenetleyici mimarisi
AVR mimarisi, azaltılmış komut seti bilgisayar (RISC) mimarisine dayanmaktadır. RISC mimarileri, programlama sürecini çok daha basit ve verimli hale getirir; bu da AVR’nin bu kadar popüler olmasının nedenlerinden biridir.
– Komut seti – Mimarinin komut seti de azaltılmıştır. Bu, programlamayı zorlaştıracakmış gibi gelebilir, ancak daha az komut, daha az karmaşık komut anlamına geldiği için programlamayı kolaylaştırır.
– 8 bit veri yolu – 8 bit mimari, aynı zamanda 8 bit veri yoluna sahip olduğu anlamına gelir; bu da bir seferde daha fazla veri işleyebileceği anlamına gelir.
– Program belleği – Program belleği, tüm programlarınızın depolandığı yerdir. Cihazınız için bir sabit disk gibidir.
– Veri belleği – Veri belleği, verilerinizin depolandığı yerdir. Örneğin, cihaza bir sayı kaydetmek isterseniz, bu sayı veri belleğinde depolanır.
AVR mikrodenetleyici pin şeması
AVR mikrodenetleyicilerin farklı türleri vardır ve pin şeması, türe göre değişiklik gösterir. Bununla birlikte, ATmega328P gibi birçok AVR mikrodenetleyici türünde ortak olarak görülen birkaç pin şeması bulunmaktadır.
ATmega328P Pin Yapılandırması
– RESET – RESET, cihazınız sıfırlandığında devreye giren bir hattır. İkisi birbirine bağlıysa, bu durum programınızı etkileyebilir.
– GND – GND, topraklama anlamına gelir. Bu, cihazınızın devreyi tamamlamak için kullanacağı bağlantıdır.
– VCC – VCC, cihazınıza güç sağlamak için kullanılan voltajdır.
– RX – RX, başka bir cihazdan veri alan bir giriş pini.
– TX – TX, başka bir cihaza veri gönderen bir çıkış pini.
AVR mikrodenetleyici blok şeması
AVR mikrodenetleyicinin blok şeması, mikrodenetleyicinin tüm iç bileşenlerini gösteren şemadır. Farklı modellerde farklı bileşenler bulunabilir, ancak her model işlevsellik açısından genel olarak aynıdır.
– Program belleği – Program belleği, programınızın depolandığı yerdir. Bu, cihaz için bir sabit disk gibidir.
– Veri belleği – Veri belleği, verilerinizin depolandığı yerdir.
– Program sayacı – Program sayacı, programınızda hangi noktada olduğunuzu takip eder.
– Komut kaydı – Komut kaydı, yürütülecek bir sonraki komutu tutar.
– ALU – ALU, aritmetik mantık birimi anlamına gelir. Bu, programınızdaki tüm matematiksel işlemleri gerçekleştirir.
– Kayıt dosyası – Kayıt dosyası, ALU'nun kayıtlarının bir koleksiyonudur. – Zamanlayıcı/sayaç – Zamanlayıcı/sayaç, zamanı ölçmek veya çeşitli olayları saymak için kullanılır.
Arduino nedir?
Arduino, programlama deneyimi çok az olan veya hiç olmayan kişilerin elektronik projeler tasarlayıp hayata geçirmelerini kolaylaştıran açık kaynaklı bir platformdur. Arduino kartları, çeşitli ışıkları, sensörleri ve diğer cihazları kontrol edebilir. Arduino kartlarının programlanması için özel yazılımlar kullanılır. AVR mikrodenetleyicisini Arduino ile programlamak istiyorsanız, bunun için özel olarak tasarlanmış bir kart kullanmanız gerekir.
Arduino ile AVR mikrodenetleyici programlama
AVR mikrodenetleyicisini Arduino ile programlamak istiyorsanız, AVR mikrodenetleyicileri için tasarlanmış bir Arduino kartı kullanmanız gerekir. Bu kartlar, AVR mikrodenetleyicisinin programlanmasını gerçekleştirmek üzere özel olarak tasarlanmıştır. AVR mikrodenetleyiciyi Arduino ile programlamak, kart üzerine bir program yüklemek kadar kolaydır. Programı yükledikten sonra, Arduino kartını sıfırlamanız ve ardından güç kaynağını çıkarmanız gerekir. Güç kaynağını tekrar taktığınızda, AVR mikrodenetleyici Arduino ile programlanmış olacaktır.
1. Programlayıcıyı Arduino ile yapılandırın
Öncelikle, "programmer-Arduino"yu (programlayıcı olarak yapılandırdığınız Arduino'yu) ISP olarak yapılandırmanız gerekir. Varsayılan olarak, eskizler (kodlar) Arduino IDE'nin Dosya menüsündeki Örnek Kodlar bölümünde bulunur. Arduino ISP eskizi, Programmer-Arduino'ya gerekli komutları ileterek onu programlama moduna geçirir.

2. LED'i Arduino'ya bağladım
İkinci adım olarak, Programmer-Arduino'nun durumu, gösterildiği gibi bağlı LED'ler aracılığıyla izlenebilir. Arduino ISP kodu, bu işlev için önceden programlanmıştır.

LED Notları:
Pin 7 = programlama (programlama sırasında yanar)
Pin 8 = Hata (programlama hatası olduğunda yanar)
Pin 9 = Normal (programlayıcı çalıştırıldığında yanar)
Programlayıcı-Arduino yapılandırıldıktan sonra, Programlayıcı-Arduino ile Arduino hedefi arasındaki bağlantı kurulur. Pin yapılandırması, Arduino ISP kodunda açıklanan şekilde tam olarak yapılmalıdır.
3. SPI iletişimini yapılandırın
Arduino ISP, AVR mikrodenetleyicisini programlamak için Seri Çevresel Arayüz (SPI) protokolünü kullanarak iletişim kurar. SPI iletişimi 4 mantık sinyali kullanır: MOSI, MISO, SCLK ve SS. I2C’nin yanı sıra, SPI de mikrodenetleyiciler için en yaygın kullanılan iletişim modlarından biridir. SPI, master-slave mimarisini izler; bu, bir master cihazın aynı veri pinlerini kullanarak birden fazla slave cihazla iletişim kurabileceği ve hedef slave cihazın slave seçme hattı kullanılarak seçilebileceği anlamına gelir.
Bir hafıza kartı varsa, select, birden fazla yonga arasından belirli bir yongayı seçmek için kullanılır. Ancak, Arduino'yu bir programlama aracı olarak kullanırken, slave select sinyali yalnızca mikrodenetleyiciyi sıfırlamak için kullanılır. Mikrodenetleyiciyi, programlayıcının Arduino'sundan komutları kabul eden bir duruma sıfırlayın.
Programlayıcı-Arduino'da 10, 11, 12 ve 13 numaralı pimler veri pimi olarak kullanılır. Yapılandırma şu şekildedir:
pin 10 = sıfırlama
11 numaralı pin = MOSI
Pin 12 = MISO
13 numaralı pin = SCK
4. ICSP başlık pimlerini yapılandırın
Devre İçi Seri Programlama (ICSP), devreyi kesintiye uğratmadan bir mikrodenetleyiciyi programlama yeteneğidir. ICSP başlığı, Arduino kartında 6 pimli olarak bulunur. Hedef Arduino'nun 11, 12 ve 13 numaralı pinlerini programlayıcı Arduino'nun 11, 12 ve 13 numaralı pinlerine bağlayın. Programlayıcı Arduino'nun 10 numaralı pininin hedef Arduino'nun sıfırlama pinine bağlanması gerektiğini unutmayın. Alternatif olarak, ICSP başlığı pinleri SPI iletişimi için kullanılabilir.

5. Arduino'yu ISP olarak yapılandırın
Yukarıdaki tüm bağlantıları yaptıktan sonra, ana bilgisayarda Programcı modunu kullandığınızı belirtmeniz gerekir. Menüden Araçlar'a gidin ve "Programcı" seçeneğinden "Arduino as ISP" seçeneğini seçin.

6. Bootloader'ı Arduino'ya yükleyin
Ardından, önyükleyiciyi hedef Arduino'nun belleğine yükleyin ve "fuse" ayarını yapın. Arduino dünyasında "fuse", mikrodenetleyicide çeşitli işlevleri tanımlamak için kullanılan bir dizi komuttur. Örneğin, yonga frekansı ve saat kaynağı fuse'larda tanımlanır. Mikrodenetleyiciler çalışma gerilimlerine duyarlıdır ve gerilim seviyeleri belirtilen değerin altında kalırsa arıza verebilirler. Minimum çalışma gerilimi de fuse içinde tanımlanır.

Önlemler
#1. Mikrodenetleyici veya Arduino kartı Arduino IDE programıyla iletişim kurabiliyorsa, çalışma sırasında sonuçları kontrol etmek için Arduino IDE'nin seri monitörünü kullanabilmek gibi çeşitli avantajlar ortaya çıkar. (Seri Monitör ayrı bir pencerede açılır ve seri verileri alıp göndermek için ayrı bir terminal görevi görür.)
#2. Mikrodenetleyiciye önyükleyici yüklenmezse, Arduino'nun işlevlerini kullanamaz ve Arduino IDE ile iletişim kuramaz. Önyükleyici, belleğin bir kısmını kaplar. Bazı durumlarda Arduino IDE'yi kullanmak gerekmediğinden, önyükleyicinin programlanmasına gerek yoktur. Bootloader programlanmazsa, ana program taslağı için daha fazla bellek boşaltılabilir. Örneğin, Arduino UNO'da toplam bellek boyutu 32 KB'dir ve 0,5 KB bellek bootloader için ayrılmıştır. Bootloader yüklenmezse, ana program taslağı için kullanılabilir toplam bellek daha fazla olur.
Özet
AVR mikrodenetleyici, çok çeşitli uygulamalar için programlanabilen, kullanımı kolay ve güçlü bir yongadır. Mikrodenetleyiciler ve elektronik alanına giriş yapmak isteyen yeni başlayanlar için harika bir yongadır. Arduino platformu, mikrodenetleyicilerle çalışmaya başlamak için mükemmel bir yoldur ve özellikle yeni başlayanlar düşünülerek tasarlanmıştır.




