ATmega328PB ve ATmega328P Arasındaki Farklar

Bu makalede ATmega328PB mikrodenetleyicisini tanıtmakla beraber öncülü olan ATmega328P arasındaki farkları anlatacağım.

ATmega328PB

Mikrodenetleyiciye baktığımızda özellik bakımından ATmega328P’den eksik kalan tarafının olmadığını ve ATmega328P’de hissettiğimiz bazı eksiklikleri kapadığını görüyoruz. Bana göre bu eksikliklerin başında yetersiz zamanlayıcılar yer almakta. Arduino UNO, Nano, Pro Mini gibi pek çok kartta yer alan bu mikrodenetleyiciyi Arduino’da kullanırken işin aslında zamanlayıcıları asla doğrudan kullanmamakta ve onlardan bihaber program yazmaktayız. Ama ne zaman işin gerçek gömülü yazılım tarafına geçersek o zaman zamanlayıcılarla yapmamız gereken pek çok iş karşımıza çıkıyor. Zamanlayıcı uygulamalarında zamanlayıcı kesmelerini kullanmamız gerektiği gibi zamanlayıcılarla sinyal uzunluğu okuma, frekans okuma, değişken frekansta sinyal üretme gibi işleri yapmamız gerekiyor. Ben şahsen ATmega328P ile çalışırken iki büyük eksiklik hissettim. Bunlardan biri ADC’nin 12-bit yerine 10-bit olması, öteki ise sadece bir adet 16-bit zamanlayıcının bulunmasıydı.

ATmega328PB’de ATmega328P’de bulunan zamanlayıcıların yanı sıra TC3 ve TC4 adında iki adet ilave 16-bit zamanlayıcı olduğunu görmekteyiz. Bu da işimizi oldukça kolaylaştırmakta.

Bu zamanlayıcı sayısının uygulamada yaşatacağı farkları şu şekilde sıralayalım,

  • ATmega328P mikrodenetleyicisinde frekans okumak için 8-bit TC0 zamanlayıcısını ve 16-bit TC1 zamanlayıcısını beraber kullanmamız gerekli. Bu zamanlayıcıları bir uygulamaya atadıktan sonra elde işe yarar başka zamanlayıcı kalmıyor. Ama burada iki adet 8-bit zamanlayıcı ve 2 adet 16 bit zamanlayıcı kullanarak iki ayrı kanaldan frekans okuması yapabiliriz ve aynı zamanda elde bir adet boşta 16-bit zamanlayıcı kalır.
  • ATmega328P mikrodenetleyicisinde hassas frekansta karedalga sinyal üretmek için 16-bit zamanlayıcıyı kullanmamız şarttır. Tek bir 16-bit zamanlayıcı olduğu için sadece tek bir kanala sahip oluruz. Ama burada 3 ayrı zamanlayıcı olduğu için ayrı ayrı frekanslar ve ayaklardan 3 farklı sinyal çıkışı elde edebiliriz.
  • ATmega328P mikrodenetleyicisinde 2 adet 8-bit zamanlayıcı yanında bir adet 16-bit zamanlayıcı olduğu için tek bir kanaldan 16-bit PWM sinyali elde edebiliyorduk. Burada ise 3 ayrı 16-bit PWM sinyalinin yanında 2 adet de 8-bitlik PWM sinyali elde edebiliriz. Bu sayede alacağımız PWM çıkışlarının sayısı artmaktadır.
  • ATmega328P mikrodenetleyicisinde zamanlama uygulamaları için 8-bit ve 16-bitlik zamanlayıcılar kısıtlı bir zamanlama aralığı vermekteydi. Ama burada fazlaca 16-bit zamanlayıcı olduğu için çok daha geniş bir aralıkta zamanlama uygulamaları yapılabilir.
  • Bunun yanında ATmega328PB’deki TC3 ve TC4 zamanlayıcılarının çıkış karşılaştırma modülatörü (Output compare modulator) bulunmaktadır. Böylece sinyaller taşıyıcı frekans ile modüle edilebilmektedir.

Yukarıda saydığımız maddeleri özetlersek bu mikrodenetleyicinin en büyük farkının zengin zamanlayıcı birimleri olduğunu söyleyebiliriz.

Zamanlayıcı birimlerinin yanı sıra iletişim birimleri noktasında da bir zenginlik söz konusudur. Mikrodenetleyicide ATmega328P’deki birimlere göre fazladan USART, SPI ve I2C birimleri bulunamktadır. Özellikle ilave USART birimi pek çok defa yazılımsal olarak çözüm getirilmeye çalışılan bir eksikliği kapatmış bulunmakta.

Fazladan birer adet iletişim birimlerinin bulunması bazen kodlarda sıkıntı yaşatabilmektedir. Yazmaç adları 0 ve 1 olmak üzere ayrıldığından ATmega328P kodlarını doğrudan kullanırsanız hata vermektedir. Bunu çok ufak bir düzenleme yaparak çözmeniz mümkündür. Buradan kodların yüzde yüz uyumlu olmadığını biliniz.

Zamanlayıcılar ve iletişim birimlerinden sonra bu mikrodenetleyicide ilave olarak bir E portunun bulunduğunu görüyoruz. Bu E portu sadece 4 adet ayaktan oluşmaktadır. Bu da çok fazla olmasa da bize fazladan giriş ve çıkış ayağı vermektedir. Giriş çıkış portlarıyla kullanacağımız dokunma denetleyicisi (PTC) de mevcuttur. ATmega328PB Xplained Mini kartında da bu yönde iki adet dokunma alanı mevcuttur.

Dikkat çekici bir nokta ise saat beslemesini tespit eden bir mekanizmanın mikrodenetleyiciye yerleştirilmesidir. Bu sayede bağlı olan harici kristal bir şekilde çalışmaz hale gelince sistem otomatik olarak 1MHz RC saat beslemesine geçmektedir.

En son olarak farklılığı analog karşılaştırıcı biriminde görmekteyiz. ATmega328P’de analog karşılaştırıcı bulunsa da bu karşılaştırıcının bir çıkış ayağı mevcut değildi. Yani bu çıkış bir devreye bağlanamaz, doğrudan mikrodenetleyici okur ve üzerinde yazılım işlemleri yapardı. ATmega328PB’ye analog karşılaştırıcı çıkışı eklenmesiyle tamamen bağımsız bir karşılaştırıcı olarak istediğimiz devrede kullanma imkanına sahibiz.

Sonuç

ATmega328PB, ATmega328P’nin eksik kalan noktalarını kapatan bir mikrodenetleyici olarak oldukça cazip görünmekte. Ayrıca kod uyumluluğu bakımından ATmega328P ile neredeyse tamamen uyumlu olması bir diğer tercih sebebi olarak görünmektedir.

--

--