Atmel AVR, Atmel tarafından 1996’da piyasaya sürülen 8 bit RISC mimarili mikrodenetleyici ailesidir. Modifiye Harvard mimarisi kullanır, komutlarının çoğunu tek çevrimde işler ve Arduino kartlarının temelini oluşturan ATmega328P gibi çipleri kapsar. Düşük güç tüketimi ve geniş topluluk desteği sayesinde hobi devrelerinde ve gömülü sistemlerde en çok tercih edilen ailelerden biridir.

Atmel AVR’nin Kısa Tarihçesi
AVR mimarisi, 1990’ların başında Norveç Teknoloji Enstitüsü’nde (NTNU) iki öğrenci, Alf-Egil Bogen ve Vegard Wollan tarafından geliştirildi. Tasarım daha sonra Atmel tarafından satın alındı ve ilk AVR tabanlı çip 1997’de üretime girdi. “AVR” isminin resmi bir açılımı Atmel tarafından hiçbir zaman doğrulanmadı; en yaygın yorum, tasarımcıların adlarına gönderme yapan “Alf and Vegard’s RISC processor” ifadesidir.
2016 yılında Atmel, Microchip Technology tarafından satın alındı. Bu yüzden bugün AVR çiplerini çoğunlukla Microchip markası altında görürsünüz, ancak mimari ve isimlendirme (ATmega, ATtiny) aynı kaldı.
AVR Mimarisi: RISC ve Modifiye Harvard
AVR’yi güçlü kılan, mimarisinin temel tasarım tercihleridir:
- 8 bit RISC: Basit ve az sayıda komuttan oluşan bir set kullanır. Komutların çoğu tek makine çevriminde tamamlanır, bu da yüksek verim sağlar.
- Modifiye Harvard mimarisi: Program belleği (Flash) ile veri belleği (SRAM) ayrı yollar üzerindedir. İşlemci bir komutu çalıştırırken bir sonrakini getirebilir, böylece işlem hızlanır.
- 32 genel amaçlı yazmaç (register): Doğrudan ALU’ya bağlı 32 adet 8 bitlik register, aritmetik işlemleri hızlandırır.
- Dahili çevre birimleri: Zamanlayıcılar, ADC, PWM, UART, SPI ve I2C gibi birimler çipin içinde gelir; harici devreye gerek kalmadan çok iş yapılır.
AVR Aileleri
AVR tek bir çip değil, ihtiyaca göre ölçeklenen bir ailedir:
| Aile | Örnek Çip | Tipik Kullanım |
|---|---|---|
| tinyAVR (ATtiny) | ATtiny85 | Küçük, az pinli, düşük maliyetli projeler |
| megaAVR (ATmega) | ATmega328P | Arduino ve genel amaçlı gömülü sistemler |
| XMEGA | ATxmega128 | Yüksek performans, gelişmiş çevre birimleri |
| 32 bit AVR | AVR32 | Daha ağır işlem gerektiren uygulamalar |
Bellek Yapısı: Flash, SRAM ve EEPROM
Her AVR çipi üç tip belleğe sahiptir ve bunların ne işe yaradığını bilmek programlama sırasında kritiktir:
- Flash (program belleği): Yüklediğiniz kod burada saklanır. Kalıcıdır ve yaklaşık 10.000 yazma döngüsüne dayanır.
- SRAM (çalışma belleği): Program çalışırken değişkenlerin tutulduğu geçici bellektir. Güç kesilince silinir.
- EEPROM: Güç kesilse bile korunması gereken küçük verileri (ayarlar, kalibrasyon değerleri) saklamak için kullanılır.
Örnek olarak Arduino Uno’nun kalbindeki ATmega328P çipinde 32 KB Flash, 2 KB SRAM ve 1 KB EEPROM bulunur ve 16 MHz’de çalışır.
Arduino ile İlişkisi
Arduino’yu popüler yapan şeylerden biri, güvenilir AVR çiplerini kolay bir yazılım katmanıyla birleştirmesidir. Farklı Arduino kartları farklı AVR çipleri kullanır:
- ATmega328P → Arduino Uno ve Nano
- ATmega2560 → Arduino Mega
- ATmega32U4 → Arduino Leonardo ve Micro (dahili USB desteğiyle)
Bu çiplere kodu yükleyebilmemizi sağlayan küçük bir önyükleyici (bootloader) yazılımı vardır. Optiboot, varsayılan olarak Arduino Uno ve Nano’lara yüklenen hafif bir bootloader’dır ve eski mega8, 168 veya 328 tabanlı kartlara da kurulabilir. Optiboot’un wiki’sini ve kaynak kodunu GitHub üzerinden inceleyebilirsiniz.
Neden AVR Tercih Edilir?
- Düşük maliyet: Çipler ucuzdur, hobi ve seri üretim için uygundur.
- Düşük güç tüketimi: Uyku modlarıyla pille çalışan projelerde uzun ömür sağlar.
- Geniş topluluk: Arduino ekosistemi sayesinde sayısız kütüphane, örnek ve rehber mevcuttur.
- Kolay programlama: Basit araçlarla programlanır, öğrenme eşiği düşüktür.
- Zengin çevre birimleri: ADC, PWM, UART, SPI ve I2C tek çipte gelir.
