AVR, Atmel şirketi tarafından tasarlanıp 1996’dan beri piyasaya sunulan mikro denetleyici ailesinin adıdır. Atmega328 de bu AVR ailesi içinde yer alır. Bu mikrodenetleyiciler modifiye edilmiş Harvard mimarisi üzerine RISC komutu kümesiyle tasarlanmıştır. RISC (Reduced Instruction Set Computer), basit komutlar kullanan ve komutları daha hızlı işleten bir işlemci mimarisidir. RISC mimarisinde karmaşık komutlar kullanılmadığından dolayı komutlar daha hızlı işletilir. RISC mimarisini kullanan işlemcilere şunlar örnek verilebilir:
• Alpha
• ARC
• ARM
• SUN SPARC
• MIPS R2000
• INTEL i860
• MOTOROLA 8800
• IBM RS/6000
• MOTOROLA 8800
Atmega mikrodenetleyicilerde program ile veriler farklı belleklerde saklandığı için bunlara farklı veri yolları ile erişilmektedir. Böylelikle program ve verilere aynı anda erişimin mümkündür. Bu da hızı artırmaktadır. Geleneksel mikrodenetleyicilerde verilere ve programa tek veri yolu üzerinden erişilirdi.
Atmega mikrodenetleyiciler 8-bit olup istisna olarak bir dönemde 32-bit olan modelleri de üretilmiştir. Birçok gömülü sistemlerde ve özellikle hobi devrelerinde en çok kullanılan mikro denetleyicilerden olup Arduino’nun da temelini oluşturur.
ATmega328 ile ATmega328P arasında ne fark var?
Atmega328 ve Atmega328P aynı mimari yapıya sahiptir. Atmega328P, Atmega328’e göre daha az enerji tüketir. Datasheet’lere bakıldığında 328P’nin 60nm, 328’in ise 90nm olduğu görülür.
Atmega çipi, yüksek performanslı, düşük güç tüketimine sahip 8 bitlik bir mikro denetleyicidir. Değişik boyutlarda EEPROM, SRAM ve FLASH belleğe sahiptir. Atmega uyku modunda ise 0.1 uA değere sahip bekleme akımı çeker.
Program Belleği(Flash Memory): Program komutlarının tutulduğu hafıza türüdür. Defalarca silinip tekrar programlanabilir. Arduino Uno’da Flash Bellek yaklaşık 10.000 kez yeniden yazılabilir. Ayrıca enerji kesildiğinde içindeki veriler saklanmaktadır.
SRAM(Static Random Access Memory): Sistemdeki verilerin ve bilgilerin geçici olarak saklandığı bellektir. Genel ve özel amaçlı kayıtların bulundu hafızadır. Elektrik kesildiği zaman veri belleğinde tutulan veriler kaybolmaktadır. Örneğin; int a=1 gibi genel amaçlı, bir portun durumu giriş mi çıkış mı olacağı gibi özel amaçlı bilgiler tutulur.
Burada dikkat edilmesi gereken husus SRAM belliğin fazla olmamasıdır. Eğer yazılan programda çok fazla değişken varsa hafıza yetmeyebilir. Bunu önlemek için; tablo veya uzun diziler için en küçük veri yapısı kullanılabilir. Örneğin; int tipi 2 byte yer kaplarken, byte tipi ise 1 byte yer kaplar. Bu da yeterli gelmezse değişkenleri SRAM yerine EEPROM’da tutabilirsiniz.
EEPROM: Bilgilerin uzun süreli saklanabildiği bölümdür. Elektrik beslemesi kesildiğinde içerisinde saklanan veriler silinmez. Bir nevi bilgisayarlarda kullanılan hard disk gibi düşünebiliriz. Mikro denetleyici içerisinde dâhili bulunan EEPROM olduğu gibi, gerekli olursa harici olarak da dışardan EEPROM bağlanabilmektedir. Arduino Uno’da EEPROM yaklaşık 100.000 kez yeniden yazılabilir.
8,16, 32, vb. Bit Mikroişlemci Neyi İfade Eder?
Mikroişlemcinin tek seferde işleyebileceği veri sayısını ve mikroişlemcinin veri yolu sayısını ifade eder.
Veri sayısı, mikroişlemci ya da mikro denetleyicinin bir saat darbesi süresinde işleyebileceği veri miktarını ifade eder. 16 bitlik bir veriyi 8 bitlik mikro denetleyici 2 çevrimde işleyebilirken 16 bitlik mikro denetleyici bir çevrimde işler.
Veri yolu ise, denetleyici içerisindeki işlemciden çevre birimlerine giden hatlardır. 8 bit mimarisinde veri yolu 8 hattan oluşurken, 16 bit mimarisinde 16 hattan oluşur.
Bit sayısının artması işlem hızının da artması anlamına gelir. Yapılan işlem kapasitesinin artması beraberinde güç tüketiminin artmasını meydana getirir. Dolayısıyla 8 bit mikrodenetleyiciler, 16 bit mikro denetleyicilere göre düşük güç tüketimine sahiptir.
Atmega328P Teknik Bilgiler
• 131 adet, çoğunluğu tek çevrimde çalışan güçlü bir komut seti.
• 32 adet 8 bitlik genel amaçlı kayıtçı.
• 16 Mhz çalışma hızı.
• 32 KB Flash bellek.
• 1Kbayt EEPROM.
• 2Kbayt dahili SRAM.
• Yazma/silme döngüleri: 10.000 Flash Bellek / 100.000 EEPROM.
• Yazılım güvenliği için programlama kilidi.
• 2 adet 8 bitlik sayıcı/zamanlayıcı.
• 1 adet 16 bitlik sayıcı/zamanlayıcı.
• 6 adet PWM çıkışı.
• TQFP ve QFN/MLF paketinde 8 kanallı 10 bitlik ADC.
• Programlanabilir seri USART.
• SPI iletişim desteği.
• I2C iletişim desteği.
• Programlanabilir Watchdog Timer.
• Dahili ve harici kesmeler.
• Uyku modu ve sinyal girişi olduğunda uyanma özelliği.
• 23 adet programlanabilir giriş-çıkış portu.
Block Diagramı
__________________________________________________________________________________