PIC16F84 Nedir? PIC16F84 Özellikleri ve Çeşitleri | Not Mekanı
Perşembe , Mayıs 28 2020
Ana Sayfa / Ana Sayfa / PIC16F84 Nedir? PIC16F84 Özellikleri ve Çeşitleri

PIC16F84 Nedir? PIC16F84 Özellikleri ve Çeşitleri

PIC16F84 Nedir?

CMOS teknolojisi ile üretilmiş olan PIC16F84 çok az enerji harcar. Flash belleğe sahip olması nedeniyle clock girişine uygulanan sinyal kesildiğinde registerleri içerisindeki veri aynen kalır. Clock sinyali tekrar verildiğinde PIC içerisindeki program kaldığı yerden itibaren çalışmaya başlar. RAO-RA3 pinleri ve RBO-RB7 pinleri I/O portlandır. Bu portlardan girilen dijital sinyaller vasıtasıyla PIC içerisinde çalışan programa veri girilmiş olur. Program verileri değerlendirerek portları kullanmak suretiyle dış ortama dijital sinyaller gönderir. Dış ortama gönderilen bu sinyallerin akımı yeterli olmadığı durumda yükselteç devreleri (röle, transistör v.s) ile yükseltilerek kumanda edilecek cihaza uygulanır. Portların maksimum sink ve source akımlan aşağıda verilmiştir. Bu akımlar genellikle bir LED sürmek için yeterli olduğundan, bu kitapta verilen uygulama devrelerinde herhangi bir yükseltme işlemi yapılmamıştır.

                                            I/O pini

Sink akımı                           25 mA

Source akımı                       20 mA

Hatırlatma amacıyla sink ve source akımlarının ne olduğudan bahsedelim. Sink akımı, gerilim kaynağından çıkış potuna doğru akan akıma, source akımı ise 1/0 pininden GND ucuna doğru akan akıma denir.

PIC 16F84 Dış Görünüşü

PIC16F84’ün çektiği akım, besleme gerilimine, clock girişine uygulanan sinyalin frekansına ve l/O pinlerindeki yüke bağlı olarak değişir. Tipik olarak 4 MHz’lik clock frekansında çektiği akım 2 mA’ kadardır. Bu akım uyuma modunda (Sleep mode) yaklaşık olarak 40 ^A’ e düşer. Bilindiği gibi CMOS entegrelerdeki giriş uçları muhakkak bir yere bağlanır. Bu nedenle kullanılmayan tüm girişler besleme geriliminin +5V luk ucuna bağlanmalıdır.

PIC16C84 ve PIC16F84 özellikleri tamamen aynısı olan PIC’lerdir. Her ikisi de FLASH belleğe sahip olmalarına rağmen Microchip ilk ürettiği EEPROM bellekli PIC’ler “C” harfi (C harfi CMOS’dan gelmektedir.) ile tanımlarken, son zamanlarda ürettiği EEPROM bellekli PIC’leri “F” harfi (FLASH) ile tanımlamaktadır. Bizim bu kitapta örneklerini verdiğimiz programlar için her iki PIC de kullanılabilir. PIC16F84A ile PIC16F84 arasında da herhangi bir fark yoktur. PIC’i tanımlayan bu harf ve rakamlardan sonra yazılan 10/P, 04/P clock girişine uygulanacak maksimum frekansı belirtir. Örneğin 10 MHz’e kadar frekanslarda PIC16F84-10/P kullanılırken, 4 MHz’e kadar frekanslarda PIC16F84-04/P kullanılabilir.

Besleme Gerilimi

PIC’in besleme gerilimi 5 ve 14 numaralı pinlerden uygulanır. 5 numaralı Vdd ucu +5 V’a, 14 numaralı Vss ucu da toprağa bağlanır. PIC’e ilk defa enerji verildiği anda meydana gelebilecek gerilim dalgalanmaları nedeniyle istenmeyen arızaları önlemek amacıyla Vdd ile Vss arasına 0.1 mF lık bir dekuplaj kondansatörü bağlamak gerekir. PIC’ler CMOS teknolojisi ile üretildiklerinden çok geniş besleme gerilimi aralığında (2 ~ 6 V) çalışmalarına rağmen 5 V luk gerilim deneyler için ideal bir değerdir.

Clock Uçları ve Clock Osilatörü Çeşitleri

PIC belleğinde bulunan program komutlarının çalıştırılması için bir kare dalga sinyale ihtiyaç vardır. Bu sinyale clock sinyali denilir ve Türkçe’de “klok” olarak okunur. PlC16F84’ün clock sinyal girişi için kullanılan iki ucu vardır. Bunlar OSC1(16 pin) ve OSC2 (15.pm) uçlarıdır. Bu uçlara farklı tipte osilatörlerden elde edilen clock sinyalleri uygulanabilir. Clock osilatör tipleri şunlarıdır:

RC – Direnç/kondansatör (Resistor/Capacitor).

XT – Kristal veya seramik resonatör (Xtal).

HS – Yüksek hızlı kristal veya seramik resonatör (High Speed ).

LP – Düşük frekanslı kristal (Low Power).

Seçilecek olan osilatör tipi PIC’in kontrol ettiği devrenin hız gereksinimine bağlı olarak seçilir. Aşağıdaki tablo hangi osilatör tipinin hangi frekans sınırları içerisinde kullanılabileceğini gösterir.

Osilatör tipi                                           Frekans sınırı

RC                                                      0 – 4 MHz

LP                                                       5 – 200 KHz

XT                                                      100 KHz – 4 MHz

HS (-04)                                             4 MHz

HS (-10)                                             4 – 10 MHz

HS (-20)                                             4 – 20 MHz

PIC’e bağlanan clock osilatörünün tipi programlama esnasında PIC içerisinde bulunan konfigürasyon bitlerine yazılmalıdır. Osilatör tipini belirten kodları (RC, XT, HS ve LP) kullanarak konfigürasyon bitlerinin nasıl yazılacağı programlama örnekleri verilirken detaylı olarak incelenecektir.

RC clock osilatörü, PIC’in kontrol ettiği elektronik devredeki zamanlamanın çok hassas olması gerekmediği durumda kullanılır. Belirlenen değerden yaklaşık %20 sapma gösterebilirler. Bir direnç ve kondansatörden oluşan bu osilatörün maliyeti oldukça düşüktür. OSC1 ucundan uygulanan clock frekansı R ve C değerlerine bağlıdır. Şekilde RC osilatörün clock girişine bağlanışı ve çeşitli R, C değerlerinde elde edilen osilatör frekansları örnek olarak verilmiştir.

RC osilatörün PIC’e bağlantısı ve örnek R, C değerleri

OSC1 ucundan uygulanan harici clock frekansının 1/4’ü OSC2 ucunda görülür. Bu clock frekansı istenirse devrede kullanılan diğer bir elemanı sürmek için kullanılabilir.

Kristal kontrollü clock osilatörleri zamanlamanın çok hassas olması gerektiğinde kullanılır. Bu tip clock osilatörleri metal bir kutu görünümündedir ve şekilde görülmektedir. Bu tip osilatörlere kondansatör bağlantısı gerekmez. PIC assembly programlama dili ile yazılan zaman geciktirme (Time delay) döngülerinde yapılacak hesaplamaları kolaylaştırmak için genellikle 4 MHz’lik kristal clock osilatörleri kullanılması tavsiye edilir. Bu durumda harici clock frekansı (OSC1) 4’e bölündüğünde, dahili clock frekansı 1 MHz olur (OSC2). Çoğu PIC assembly komutu bir komut saykılı süresinde (dahili clock) çalıştığından, bir komutun işlevini gerçekleştirme süresi 1 mikro saniye olur. Bu süre ise deneysel çalışmalar için oldukça uygundur.

Kristal ve kondansatör kullanılarak yapılan osilatörler de zamanlamanın önemli olduğu yerlerde kullanılır. Kristal osilatörlerin kullanıldığı devrelerde kristale bağlanacak kondansatörün seçimine özen göstermek gerekır. Aşağıda hangi frekansta kaç (mF lık kondansatör kullanılacağını gösteren tablo görülmektedir.

Seçilen kondansatör değerlerinin yukarıdaki değerlerden yüksek olması, elde edilen kare dalgaların bozuk olmasına ve PIC’in çalışmamasına neden olur. C1 ve C2 kondansatörlerin değerleri birbirine eşit olmalıdır.

Seramik   resonatörler,   içerisinde   kondansatörleri   hazır  bulunan osilatörlerdir. Fiyatları ucuz ve hassastırlar (+/- %1.3 ). Küçük bir seramik kondansatöre benzeyen resonatörlerin üç ucu vardır.   Bu uçlardan ortadaki toprağa, diğer iki ucu da OSC1 ve OSC2 uçlarına bağlanırlar. Hangi ucun OSC1’e bağlanacağı önemli değildir, her ikisi de bağlanabilir.

Reset Uçları ve Reset Devresi

PIC16F84’ün besleme uçlarına gerilim uygulandığı anda bellekteki programın başlangıç adresinden itibaren çalışmasını sağlayan bir reset devresi vardır. Bu reset devresi PIC içerisindedir ve “Power-on-reset” denir.

MCLR ucu ise kullanıcının programı kesip, kasti olarak başlangıca döndürebilmesi için kullanılır. PIC’in 4 numaralı MCLR ucuna uygulanan gerilim 0 V olunca programın çalışması başlangıç adresine döner. Programın ilk adresten itibaren tekrar çalışabilmesi için reset ucuna uygulanan gerilimin +5 V olması gerekir. Bir buton aracılığı ile reset işlemini yapan devre şekilde görülmektedir.

I/O Portları

PIC16F84’ün 13 adet giriş/çıkış portu vardır. Bunlardan 5 tanesine A portu (RAO-RA4), 8 tanesine de B portu (RBO-RB7) denir. 13 portun her biri giriş ya da çıkış olarak kullanılabilir. PIC içerisinde adına TRIS denilen özel bir data yönlendirme registeri vardır. Bu register aracılığı ile portların giriş/çıkış yönlendirmesinin nasıl yapılacağı hakkında detaylı bilgiyi programlama konusunda bulacaksınız. I/O portlarından geçebilecek 25 mA lik bir sink akımı veya 20 mA lik source akımı LED’leri doğrudan sürebilir. Bu akımlar aynı zamanda LCD, lojik entegre ve hatta 220 V luk şehir şebekesine bağlı bir lambayı kontrol eden triyakı bile tetiklemeye yeterlidir. Çıkış akımı yetmediği durumda yükselteç devreleri kullanarak daha yüksek akımlara kumanda etmek mümkün olabilir.

B portunun 8 ucu, PIC içerisinde dahili olarak 50 KQ luk dirençlerle pull-up yapılmış gıbı etkı gösterir. Bu durum Şekilde temsili olarak görülmektedir PIC’in içerisinde gerçekte bir pull-up direnci değil, farklı bir mantıksal devre vardır.

Bu 8 pull-up direncinin tamamı option register içerisindeki yazılım aracığıyla iptal (Disable) edilebilir veya geçerli (Enable) kılınabilir. Port uçlarından herhangi birisi çıkış olarak yönlendirildiğinde o uçtaki pull-up direnci otomatik olarak iptal olur. PIC’e enerji verildiğinde (Power-on-reset) ise tüm pull-up’lar iptal edilir

A portunun 4. biti, TOCKI adı verilen harici timer/counter giriş ucu ile ortaklaşa kullanılır. Bu nedenle 16F84’ün pin görünüşü üzerinde 3 numaralı pin ucuna RA4/TOCKI yazılmıştır. RA4 ucu çıkış otarak yönlendirildiğinde açık kollektör ozellıgınden dolayı harici olarak muhakkak bir pull-up direncine bağlanmalıdır RA4 ucundan sadece sink akımı geçebilir, kaynak (source) akımı vermesi mümkün değildir.

PIC16F84’ün Belleği

PIC16F84 mikrodenetleyicisinin belleği, program ve RAM belleği olmak üzere iki ayrı bellek bloğundan oluşur. Microchip’in kataloglarında PIC denetleyicilerin RISC işlemci olarak tanıtılmasının nedeni de budur. Çünkü Harvard Mimarisi ile üretilen RISC işlemcilerde program belleği ile data belleği birbirinden aynıdır. Oysa PC’lerde kullanılan çoğu mikroişlemci mimarisinde böyle bir ayrım yoktur. Bu da demektir ki; burada ayrıntısına girmeye gerek görmediğimiz nedenlerden dolayı mikroişlemciler, mikrodenetleyicilere göre komut işlemede daha yavaştırlar.

Program Belleği

PIC16F84’ün 1 Kbyte’lık program belleği vardır. Her bir bellek hücresi içerisine 14 bit uzunluğundaki program komutları saklanır. Program belleği flash (elektriksel olarak yazılıp silinebilir.) olmasına rağmen, programın çalışması esnasında sadece okunabilir.

PIC16F84’ün program belleği içerisinde sadece assembly komutları saklanır. Bu komutlar dışında RETLW komutu ile birlikte kullanılan sınırlı miktarda data da yüklenilebilir.

NOT: Yukarıda PIC16F84’ün program bellek haritasındaki adresler gösterilirken sol tarafta heksadesimal notasyon kullanılmıştır. PIC programlama esnasında da bellek adresleri bu şekilde yazılır. 0xXX heksadesimal notasyonunda X’ler 0~F arasındaki herhangi bir sayıyı, “0x” ise bu sayıların heksadesimal olduğunu belirtir. Örneğin 0x0F, heksadesimal OF sayısı demektir. 0x3FF ise 3FF heksadesimal sayısını gösterir. PIC16F84’ün program belleğine 14 bit uzunluğunda toplam 1024 tane komut yazılabilir. Bellek haritasında son bellek adresinin 0x3FF=1023 gösterilmesinin nedeni, adresin 0’dan başlamasındandır. Adres 1’den başlasaydı son adres 0x400=1024 olacaktı.

RAM Bellek

PIC16F84’ün 0x00~0x4F adres aralığında ayrılmış olan RAM belleği vardır. Bu bellek içerisindeki file registerleri içerisine yerleştirilen veriler PIC CPU’sunun çalışmasını kontrol ederler. File registerlerin bellek uzunluğu 8 bit’tir. Sadece PCLATH registeri 5 bit uzunluğundadır. File register adı verilen özel veri alanlarının dışında kalan diğer bellek alanları, normal RAM bellek olarak kullanılırlar. Yani bu alanlarda programda içerisindeki değişkenler için kullanılır.

PIC16F84’ün RAM belleği iki sayfadan (Bank’tan) meydana gelir. Bank0’daki registerlerin adresleri 0x00~0x4F arasında, bank1’deki registerlerin adresleri de 0x80~0xCF arasındadır. Toplam 80 tane file register olmasına rağmen programlamaya yeni başlayanlar bank1’de 80, bank 2’de 80 olmak üzere 160 register alanı olduğunu sanırlar. Oysa, dikkat edilirse bazı özel amaçlı registerler her iki bank’ta da görülür. Örneğin PCL, STATUS, PCLATH, INTCON gibi. Ayrıca 0x0C adresinden sonra RAM (data belleği) olarak kullanılan bölgedeki veriler 0x8C adresinden itibaren gölgelendirilmiştir(shadowed). Gölgeleme, otomatik kopyalama işlemi olarak algılandığında anlaşılması daha kolay olacaktır. örnekle izah edecek olursak: 0x8C adresine yazılan bir veri 0x00 adresinde de görülür. İşte bu sebeplerden dolayı 160 değil toplam 80 file register alanı vardır.

Bir bank’taki registeri kullanabilmek için o bank’a geçmek gerekir. Bank değiştirme işlemi programlama örnekleri verilirken detaylı olarak işlenecektir. Yalnız burada bir şeyden daha bahsetmek gerekir. Bazı özel registerlerin her iki bank’ta da görülmesinin nedeni, bank değiştirme işlemine gerek duyulmaksızın kullanılabilmesi içindir.

NOT: File register haritası üzerinde adresleri verilmiş olan özel registerlerin işlevini ve nasıl kullanıldığını bu aşamada anlamaya çalışmanız yararsız olacaktır. Programlama örnekleri verilirken çok daha kolay anlayacağınız düşünceyim.

W register

PIC16F84’ün RAM bellek alanında görülmeyen bir de W registeri vardır. W register bir akümülatör veya geçici depolama alanı olarak düşünülebilir. W registerine direkt olarak ulaşmak mümkün değildir. Ancak diğer registerlerin içerisindeki verileri aktarırken erişmek mümkündür. Bir PIC’te gerçekleşen tüm aritmetik işlemler ve atama işlemleri için W register kullanma zorunluluğu vardır. Örneğin iki register içindeki veriler toplanmak istendiğinde, ilk olarak registerlerden birinin içeriği W registere aktarılır. Daha sonra da diğer registerin içerisindeki veri W registeri içerindekiyle toplanır. Bu registerin kullanım özellikleri yine programlama konusunda detaylı olarak ele alınacaktır.

Hakkında Admin

Blog Yazarı - Araştırmacı - Öğrenci

Bunları da Beğenebilirsin

Önemli Bilgilendirme

Anlaşmalı yönlendirme sitesine (asupload.com) teknik bir problemden dolayı erişim sağlanamamaktadır. Problemi en kısa sürede çözmeye …

Bir Yorum Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.