Pic programlama kitabı

I. PIC16C84/PIC16F84
I. 1 – Mikroişlemci : Ön belleğine yazılan programı işleterek istenilen çıkışlara yönlendiren birimdir. Mikroişlemci veya sayısal bilgisayarlar üç temel kısımdan (CPU-Merkezi işlem ünitesi, I/O ve bellek) ve bunlara ek olarak bazı destek devrelerden oluşur. Her bir temel kısım en basitten en karmaşığa kadar çeşitlilik gösterir. 1.1.2 I/O (Giriş/Çıkış-Girdi/çıktı): Sayısal anolog ve özel fonksiyonlardan oluşur. Mikroişlemcinin dış dünya ile ilişkisini sağlar. Mikroişlemciye verilen ve işlemlerden alınan veriler bu hat üzerinden sağlanır. 1.1.3 CPU (Central Proccesing Unit-Merkezi işlem birimi): Sistemin kalbidir. Birim hesapları yapmak ve verileri idare etmek için 4.8 veya 16 bitlik veri formatında çalışır. Bir mikroişlemcide temelde kullanılan üç yol vardır.
1-) Veri yolu : Bu yol ; işlemci, bellek ve çevre birimleri arasında veri iletmek için kullanılır.
2-) Adres yolu : Bu yol, işlemcinin program komutlarına ve veri saklama alanlarına erişimi sağlayan bellek adreslerini, ROM ve RAM belleklerine göndermek için kullanılır.
3-) Denetim yolu: Bu yol Ram belleğine veri yazıldığı veya ondan veri okunduğuna dair bilgi vermek gibi, denetim amaçları için kullanılır. Bu yol aynı zamanda kesmelerin kullanımına olanak tanıyan bağlantıları da içerir. Tipik bir mikroişlemci komutunun yürütülmesi her üç yolunda kullanımını gerektirebilir. Böylelikle kullanılan ek devreler artarak maliyet yükselir ve tasarım çok karmaşık hal alır. İşlemci ilk olarak komuta, komut adresini adres yoluna koyarak erişir. İkili kodlardan oluşan bu adres, buna karşılık gelen bellek konumu tarafından tanınır ve bu konum istenen komutu veri yolundan işlemciye gönderir. Örneğin eğer bu komut verinin işlemciden gönderilmesini ve bir RAM konumunda saklanmasını gerektiriyorsa işlemci, adres yolunu istenen konumu belirtmek, veri yoluna veriyi iletmek ve denetim yoluna da RAM a yazıyor olduğunu belirtmek için kullanılır.
I. 2 – MİKROKONTROLÖRLER
Mikrokontrolcü : Bir yazılım olmadan hiçbir işe yaramayan bir plastik metal ve temizlenmiş kum yığınıdır. Mikrokontrolcüyü kontrol eden bir yazılım olduğundaysa neredeyse sınırsız bir uygulamaya sahiptir.
Mikrokontrolcünün Avantajları : Mikrokontrolörler’ in mikroişlemcilere olan üstünlükleri oldukça fazladır. Örneğin mikroişlemcili bir sistem yapıldığında mikroişlemcinin yanısıra hafızalar (RAM, ROM veya EPROM) , I/O giriş çıkış birimi ve buna benzer birçok sistem kullanılmaktadır. Bu karışık sistemin hem tasarlanması ve yapımı zordur hem de maliyeti oldukça yüksektir. Mikrokontrolcüler de bir sistemin çalıştırılabilmesi için yalnızca bir mikrokontroller ve osilatör devresi kafi gelmektedir. Sistemde gerekli olan ön bellek ve I/O birimi mikrokontroller içinde bir yonga halindedir.
I. 3 – PIC MİKROKONTROLÖRLERİNE GİRİŞ
PIC’ in kelime anlamı PERIPHERAL INTERFACE CONTROLLER giriş-çıkış işlemcisidir. İlk olarak 1994 yılında 16 bitlik ve 32 bitlik büyük işlemcilerin , giriş ve çıkışlarındaki yükü azaltmak ve denetlemek amacıyla çok hızlı ve ucuz bir çözüme ihtiyaç duyulduğu için geliştirilmiştir.
I. 3. 1 – PIC İKROKONTROLERLERİNİN TERCİH SEBEBEPLERİ :
a) Lojik uygulamalarının hızlı olması
b) Fiyatının oldukça ucuz olması
c) 8 bitlik mikrokontroller olması ve bellek ve veri için ayrı yerleşik bus’ ların kullanılması
d) Veri ve belleğe hızlı olarak erişimin sağlanması
e) PIC’ e göre diğer mikrokontrolcülerde veri ve programı taşıyan bir tek bus bulunması, dolayısıyla PIC’ in bu özelliği ile diğer mikrokontrolörlerden iki kat daha hızlı olması.
f) Herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 kondansatör ve bir direnç ile çalışabilmeleri.
g) Yüksek frekanslarda çalışabilme özelliği
h) Standby durumunda çok düşük akım çekmesi.
i) İntterrupt kapasitesi ve 14 bit komut işleme hafızası.
j) Kod sıkıştırma özelliği ile aynı anda birçok işlem gerçekleştirebilmesi PIC mikrokontrolörlleri çeşitli özelliklerine göre PIC16C6X, 16C7X, 16C5X gibi gruplara ayrılırlar.
I. 3. 2 – PIC’ İN KULLANIMI İÇİN GEREKLİ AŞAMALAR
I. 3. 2. 1 – I/O (Giriş / Çıkış) : Mikrokontrolcünün dış dünya ile ilişkisini sağlayan, girdi ve çıktı şeklinde ayarlanabilen bir bağlantı pinidir. I/O çoğunlukla mikrokontrolcünün iletişim kurmasına, kontrol etmesine veya bilgi okumasına izin verir.
I. 3. 2. 2 – Yazılım : Mikrokontrolcünün çalışmasını ve işletilmesini sağlayan bilgidir. Başarılı bir uygulama için yazılım hatasız (bug) olmalıdır. Yazılım C, Pascal veya Assembler gibi çeşitli dillerde veya ikilik(binary) olarak yazılabilir.
I. 3. 2. 3 – Donanım : Mikrokontrolcü, bellek, arabirim bileşenleri, güç kaynakları, sinyal düzenleyici devreler ve bunları çalıştırmak ve arabirim görevini üstlenmek için bu cihazlara bağlanan tüm bileşenlerdir.
I. 3. 2. 4 – Simülatör : PC üzerinde çalışan ve mikrokontrolcünün içindeki işlemleri simüle eden MPSIM gibi bir yazılım paketidir. Hangi olayların ne zaman meydana geldiği biliniyorsa bir simülatör kullanmak tasarımları test etmek için kolay bir yol olacaktır. Öte yandan simülatör, programları tümüyle veya adım adım izleyerek bug’lardan arındırma fırsatı sunar. Şu anda en gelişmiş simülatör programı Microchip firmasının geliştirdiği MPLAB programıdır.
I. 3. 2. 5 – ICE : PIC MASTER olarak da adlandırılır. (In- Circuit Emulator / İç devre takipçisi) PC ve Mikrokontrolcünün yer alacağı soket arasına bağlanmış yararlı bir gereçtir. Bu gereç yazılım, PC de çalışırken devre kartı üzerinde bir mikrokontrolcü gibi davranır. ICE, bir programa girilmesini, mikro içinde neler olduğunu ve dış dünyayla nasıl iletişim kurulduğunun izlenilmesini mümkün kılar.
I. 3. 2. 6 – Programcı : Yazılımın mikrokontrolcü belleğinde programlamasını ve böylece ICE’ nin yardımı olmadan çalışmasını sağlayan bir birimdir. Çoğunlukla seri port ’a (örneğin PICSTART, PROMASTER) bağlanan bu birimler çok çeşitli biçim, ebat ve fiyatlara sahiptir.
I. 3. 2. 7 – Kaynak Dosyası : Hem asembler’ in hem de tasarımcının anlayabileceği dilde yazılmış bir programdır. Kaynak dosya mikrokontrolör’ ün anlayabilmesi için önceden assemble edilmiş olmalıdır.
I. 3. 2. 8 – Assembler : Kaynak dosyayı bir nesne dosyaya dönüştüren yazılım paketidir. Hata araştırma bu paketin yerleşik bir özelliğidir. Bu özellik assemble edilme sürecinde hatalar çıktıkça programı bug’lardan arındırırken kullanılır. MPASM, tüm PIC ailesini elinde
tutan Microchip’ in son assemble edicisidir.
I. 3. 2. 9 – Nesne dosyası (object file) : Assembler tarafından üretilen bu dosya; programcı, similatör veya ICE’ nin anlayabilecekleri ve böylelikle dosyanın işlevlerinin çalışmasını sağlayabilecekleri bir dosyadır. Dosya uzantısı assemble edicinin emirlerine bağlı olarak , .OBJ veya .HEX olur.

I . 4 – PIC MİKROKONTROLÖRLERİNİN ÖZELLİKLERİ

I. 4. 1 – Güvenirlik: PIC komutları bellekte çok az yer kaplarlar. Dolayısıyla bu komutlar 12 veya 14 bitlik bir program bellek sözcüğüne sığarlar. Harward mimarisi teknolojisi kullanılmayan mikrokontrollörler de yazılım programının veri kısmına atlama yaparak bu verilerin komut gibi çalıştırılmasını sağlamaktadır. Bu da büyük hatalara yol açmaktadır. PIC’ ler de bu durum engellenmiştir.
I. 4. 2 – Hız : PIC oldukça hızlı bir mikrokontrolör’ dür. Her bir komut döngüsü 1µsn’ dir. Örneğin 5 milyon komutluk bir programın 20Mhz’ lik bir kristalle işletilmesi yalnız 1sn sürer. Bu süre 386SX33 hızının yaklaşık 2 katıdır. Ayrıca RISC mimarisi işlemcisi olmasının hıza etkisi oldukça büyüktür.
I. 4. 3 – Komut seti : PIC’ in 16C5X ailesinde bir yazılım yapmak için 33 komuta ihtiyaç duyarken 16CXX araçları için bu sayı 35’ tir. PIC tarafından kullanılan komutların hepsi yazmaç (register) temellidir. Komutlar 16C5X ailesinde 12 bit, 16CXX ailesindeyse 14 bit uzunluğundadır. PIC’ te CALL, GOTO ve bit test eden BTFSS ve INCFSZ gibi komutlar dışında diğer komutlar 1 saykıl çeker. Belirtilen komutlar ise 2 saykıl çeker.
I. 4. 4 – Statik İşlem : PIC tamamıyla statik bir işlemcidir. Yani saat durdurulduğunda da tüm yazmaç içeriği korunur. Pratikte bunu tam olarak gerçekleştirebilmek mümkün değildir. PIC mikrosu programı işletilmediği zaman uyuma (sleep) moduna geçirilerek micronun çok düşük akım çekmesi sağlanır. PIC uyuma moduna geçirildiğinde , saat durur ve
PIC uyuma işleminden önce hangi durumda olduğunu çeşitli bayraklarla ifade eder. (elde bayrağı, 0 (zero) bayrağı … vb.) PIC uyuma modunda 1µA’den küçük değerlerde akım
çeker. (Standby akımı).
I. 4. 5 – Sürme özelliği (Sürücü kapasitesi): PIC yüksek bir çıktı kapasitesine sahiptir. Tek bacaktan 40mA akım çekebilmekte ve entegre toplamı olarak 150mA akım akıtma kapasitesine sahiptir. Entegrenin 4mHz osilatör frekansında çektiği akım
çalışırken 2mA, stand-by durumunda ise 2µA kadardır.
I. 4. 6 – Seçenekler : PIC ailesinde her türlü ihtiyaçların karşılanacağı çeşitli hız, sıcaklık, kılıf, I/O hatları, zamanlama (Timer) fonksiyonları, seri iletişim portları, A/D ve bellek kapasite seçenekleri bulunur.
I. 4. 7 – Çok yönlülük : PIC çok yönlü bir mikrodur ve ürünün içinde, yer darlığı durumunda birkaç mantık kapısının yerini değiştirmek için düşük maliyetli bir çözüm bulunur.
I. 4. 8 – Güvenlik : PIC endüstride en üstünler arasında yer alan bir kod koruma özelliğine sahiptir. Koruma bitinin proglamlanmasından itibaren, program belleğinin içeriği, program kodunun yeniden yapılandırılmasına olanak verecek şekilde okunmaz.
I. 4. 9 – Geliştirme: PIC program geliştirme amacıyla proglamlanabilip tekrar silinebilme özelliğine sahiptir. (EPROM, EEPROM) Aynı zamanda seri üretim amacıyla bir kere programlanabilir (OTP) özelliğine sahiptir.
I. 4. 10 – Liste dosyası : Assembler tarafından yaratılan ve kaynak dosyadaki tüm komutları hexadecimal sistemdeki değerleri ve tasarımcının yazmış olduğu yorumlarıyla birlikte içeren bir dosyadır. Bir programı bug’lar dan arındırırken araştırılacak en yararlı dosya budur. Çünkü bu dosyayı izleyerek yazılımlarda neler olup bittiğini anlama şansı kaynak dosyasından daha fazladır. Dosya uzantısı .LST dir.
I. 4. 11 – Diğer dosyalar : Hata dosyası ( Error file: uzantısı .ERR) hataların bir listesini içerir ancak bunların kaynağı hakkında hiç bir bilgi vermez. Uzantısı .COD olan dosyalar emülatör tarafından kullanılırlar.
I. 4. 12 – Bug ‘ lar : Tasarımcının farkında olmadan yaptığı hatalardır. Bu hatalar, basit yazılım hatalarından, yazılım dilinin yanlış kullanımına kadar uzanır. Hataların çoğu derleyici tarafından bulunur ve bir .LST dosyasında görüntülenir. Kalan hataları bulmak ve düzeltmek te geliştiriciye düşer.

II. PIC MİKROKONTROLÖRLERİNİN DONANIMSAL İNCELENMESİ
II. 1 – PIC MİKROKONTROLÖRLERİNİN İÇ YAPISI
CPU bölgesinin kalbi ALU dur. (Aritmetic Logic Unit-Aritmetik mantık birimi) ALU, W (Working-Çalışan) adında bir yazmaç içerir. PIC, diğer mikroişlemcilerden, aritmetik ve mantık işlemleri için bir tek ana yazmaca sahip oluşuyla farklılaşır. W yazmacı 8 bit genişliğindedir ve CPU’da ki herhangi bir veriyi transfer etmek üzere kullanılır.
CPU alanında ayrıca iki katagoriye ayırabileceğimiz Veri Yazmaç dosyaları (Data Regıster Files) bulunur. Bu veri yazmaç dosyalarından biri, I/O ve kontrol işlemlerinde kullanılırken, diğeri RAM olarak kullanılır.
PIC’ ler de Harward Mimarisi kullanılır. Harward mimarisi mikrokontrolcülerde
veri akış miktarını hızlandırmak ve yazılım güvenliğini arttırmak amacıyla
kullanılır. Ayrı bus’ ların kullanımıyla veri ve program belleğinde hızlı bir
şekilde erişim sağlanır.
Şekil 2.1: Temel PIC blok diyagramı
PIC mikrokontrolör’ lerini donanımsal olarak incelerken PIC 16C84 veya yeni adıyla PIC 16F84 üzerinde durarak bu PIC’ i temel alıp donanım incelenecektir. Bellek ve bazı küçük farklılıklar dışında burada anlatılanlar bütün PIC’ ler için geçerlidir.
II. 2 – GENEL TANIMLAMA
PIC 16C84 veya F84 düşük maliyetli, yüksek performanslı, CMOS, full-statik, 8 bit mikrodenetleyicidir. Tüm PIC 16/17 mikrodenetleyiciler RISC mimarisini kullanmaktadır. PIC16CXX mikroları birçok esas özelliklere sahiptir. 8 seviyeli, derin küme ve çoklu iç ve dış kesme kaynaklarına sahiptir. Harward Mimarisinin ayrı komut ve veri taşıyıcısıyla ayrı 8 bitlik geniş veri taşıyıcılı, 14 bitlik geniş komut kelimesine imkan vermektedir. 2 aşamalı komut hattı tüm komutların tek bir saykıl’ la (çevrimle) işlenmesini sağlamaktadır. Yalnızca bazı
özel komutlar 2 saykıl çekerler. Bu komutlar dallanma komutlarıdır. PIC16CXX Mikrodenetleyicileri tipik olarak 2:1 oranında kod sıkıştırmasına erişmektedir ve sınıflarındaki 8 bit mikrodenetleyicilerden 2:1 oranında hız arttırılmasına olanak sağlanmaktadır. (10MHZ) PIC16C84 microchip’ i 36 bitlik RAM belleğine, 64 bayt EEPROM belleğine ve 13 I/O pin’ ine sahiptir. Bunun yanı sıra, timer ve sayaç ta mevcuttur.
PIC16CXX ailesi dış elemanları azaltacak spesifik özelliklere sahiptir ve böylece maliyet minimuma inmekte, sistemin güvenirliği artmakta, enerji sarfiyatı azalmaktadır. Bunun yanı sıra tüm PIC ler de 4 adet osilatör seçeneği mevcuttur. Bunlarda tek pin li RC osilatör, düşük maliyet çözümünü sağlamakta (4 MHZ) , LP osilatör (Kristal veya seramik rezonatör) , enerji sarfiyatını minimize etmekte (asgari akım) (40 KHZ), XT kristal veya seramik rezonatör osilatörü standart hızlı ve HS kristal veya seramik rezonatörlü osilatör çok yüksek hıza sahiptir (20 MHZ). PIC mikrokontrolörlerinin en büyüközelliği sleep modu özelliğidir..
Bu mod ile PIC işlem yapılmadığı durumlarda uyuma moduna geçerek çok düşük akım çeker. (5m A). Kullanıcı bir kaç iç ve dış kesmelerle PIC’ i uyuma modundan çıkarabilmektedir. Yüksek güvenilirlikli Watchdog Timer kendi bünyesindeki chip üstü RC osilatörü ile yazılımı kilitlemeye karşı korumaktadır. PIC16C84 (16F84) EEPROM program belleği , aynı aygıt paketinin orjinali ve üretimi için kullanılmasına olanak vermektedir. Yeniden programlanabilirliği mikroyu uygulamanın sonundan kaldırmadan kodu güncelleştirmeye izin vermektedir. Bu aygıtın kolayca erişilemediği, fakat prototipinin kod güncelleştirmesi gerekli olduğu durumlarda, bir çok uygulamanın geliştirilmesinde yararlıdır. Bunun yanı sıra bu kodun güncelleştirilmesi diğer ayrı uygulamalarda da yararlıdır. Aşağıda tablo 2.1 de PIC16C8X’ ailesinin özellikleri ve şekil 2.1’ de de basitleştirilmiş iç yapısı gösterilmektedir.

Tablo 2.1 : PIC16C8X ailesi özellikleri

Daha ayrıntılı görmek için mouse un sağ tuşundan “view image” i seçin.

Şekil 2.2 : PIC 16C84’ ün basitleştirilmiş iç yapısı
PIC’ ler özellikle de PIC16C84 yüksek hızlı otomobillerden, motor kontrolü uygulamaları, düşük enerji sarfiyatlı uzaktan çalışan sensörler, elektronik kilitler, güvenlik aygıtları ve akıllı kartlara kadar bir çok uygulamalarda kullanılırlar. EEPROM teknolojisi uygulama programların
(Transmitter kodları, motor hızları, alıcı frekansları, güvenlik kodları vb.) uygulamasını son derece hızlı ve uygun hale getirmektedir. Küçük boyutlarıyla bu mikrodenetleyiciler alan sınırlaması bulunan uygulamalarda kusursuzdur. Düşük maliyet, düşük enerji sarfiyatı,
yüksek performans, kullanım kolaylığı ve I/O esnekliği özellikle de PIC 16C84 mikrosunun daha önce kullanılması hiç düşünülmeyen alanlarda kullanılmasını sağlamaktadır. (Bunlar ; timer fonksiyonları, seri kominikasyon, PWM fonksiyonları ve birlikte işlemci uygulamaları) Seri sistem içi programlama özelliği (iki pinin üzerinden) ürünün tamamen toplanması ve test edilmesinden sonra ürünün alıştırılmasının esnekliğine olanak vermektedir. Bu özellik sayesinde ürün serileştirilebilmekte ve veriler saklanabilmektedir.
II. 3 – GELİŞME DESTEĞİ
PIC16CXX sınıfı tam özellikli mikrobirleştirici, yazılım simülatörü, devre içi emülatör, düşük maliyetli program geliştirme ve tam özellikli programlayıcı ile desteklenmiştir. PIC 16F84 PIC16C5X mikrokontrolerlerinin geliştirilmiş halidir. PIC16C5X için yapılan devrelerde kolaylıkla PIC16C84 (16F84) kullanılabilir.
II. 4 – ELEKTRİKLE SİLİNEBİLEN MİKROKONTROLÖRLER
Bu mikrolar, programının silinip yeniden yazılabilme özelliğine sahiptir ve oldukça düşük maliyetli plastik ambalajlar halinde bulunmaktadır. Aynı zamanda bu tip mikroların üretimi kadar prototipinin geliştirilmesi ve pilot programlar için kullanılmasına olanak sağlamaktadır. Bunun daha ötesindeki avantajlarından biri, bunların devre içi veya Microchip’s PICSTARTÒ plus veya PROMATE II programlayıcıları tarafından silinebilmesi ve yeniden programlanabilmesidir.
II. 5 – MİMARİ OLARAK İNCELENMESİ
PIC16CXX sınıfının üstün performansı genellikle RISC mikroçiplerinde bulunan birçok mimari özelliklere sahiptir. Başlangıç olarak PIC16CXX Harward mimarisini kullanmaktadır. Bu mimari ayrı belleklerden erişilen program ve verilere sahiptir. Böylece PIC mikrosu program belleği ve veri belleği taşıyıcılarına sahipken programların ve verilerin aynı bellekten getirilen geleneksel Von Neuman mimarisi üzerinde bant genişliği iyileştirilmektedir. Programların ve veri belleklerinin ayrılması komutların 8 bitlik geniş veri kelimesinden farklı boyutlandırılmasına olanak vermektedir. PIC16CXX mikroları tekli kelimeye imkan veren 14 bit taşıyıcı üzerinden 14 bit komutu tek bir süreçte uygulamaktadır. İki aşamalı hat komut sürecini ve yürütülmesini biraraya getirmektir. (örnek 3-1). Bunun sonucu olarak, program bölünmeleri dışında tüm komutlar tek bir süreçle yürütülmektedir (400ns @ 10MHZ).
PIC 16CXX aygıtları,kayıt dosyalarına ve veri belleğine doğrudan veya dolaylı olarak yönlenebilmektedir. Program Sayacı dahil bütün özel fonksiyon kayıtları veri belleğine yerleştirilmiştir. Adres modunu kullanarak herhangi bir kaydın üstüne herhangi bir işlemin gerçekleşmesini mümkün kılan Ortogonal (simetrik) komutlarda kurulmuştur. Simetrik özelliği ve “özel optimal durumların”eksikliği PIC 16CXX ile programlamayı daha da etkin kılmaktadır.
İlaveten enformasyon eğrisi önemli ölçüde azaltılmıştır. PIC16CXX mikroları 8 bitlik ALU ya ve W(working) registerine sahiptir. W registerindeki veri ile herhangi bir kayıt dosyası arasında aritmetik ve boolean fonksiyonları uygulanmaktadır. ALU 8 bit enindedir ve toplama, çıkarma , değiştirme ve çeşitli lojik işlemleri içerir. İki bilgili komutlarda bir bilgi tipik olarak W registeridir diğer bilgi ise dosya kaydı veya hazır sabit değerdir. Tekli komutlarda bilgi ya W kaydı ya da dosya kaydıdır. Yürütülen komutlara dayanarak ALU, STATUS kaydındaki Caryy(C), Digit Caryy(DC) ve Zero(Z) bitlerini etkileyebilmektedir. C ve DC bitleri, çıkarmalarda, nispeten çıkarma işleminde ödünç alan ve sayısal ödünç alan bit olarak işlemektedir.
II. 6 – SAAT ÖLÇÜM ŞEMASI / KOMUT SÜRECİ
Saat girişi (OSC1 den) içten dörde bölünmüştür ve Q1, Q2, Q3 ve Q4 olarak gelmeyen 4 kare dalga sinyali ortaya çıkar. İçten olarak, program sayacı (PC) her Q1 de bir arttırılmakta ve komutlar program belliğinde sürece sokularak Q4 sürecinde komut kaydına katılmaktadır.
Komutlar Q1 ve Q4 aralığı boyunca decode edilir ve yürütülür. Saat palsi ve komut yürütme akımı şekil 2.3 de görülmektedir.

Şekil 2.3: Saat palsi ve komut yürütme akımı

II. 7 – KOMUT AKIMI / BİLGİ İLETİMİ
‘Komut süreci’ dört Q sürecinden oluşmaktadır. (Q1, Q2, Q3 ve Q4). Komut devri ve yürütülmesi şöyle iletilmektedir. Devir bir komut sürecini üstlenirken decode ve yürütme diğer komut sürecini üstlenmektedir. Bununla birlikte bilgi iletim nedeniyle , her bir komut etkin olarak bir süreçte yürütülür. Eğer komut program sayacının değişmesine neden olmuşsa ( örn. GOTO komutu) o zaman komutun tamamlanması için iki süreç gereklidir. Devir süreci her Q1 e değeri bir artan program sayacı (PC) ile başlar. Yürütme sürecinde işleyen komut Q1 sürecindeki
‘Komut kaydı’na gönderilir. Daha sonra bu komut Q2, Q3 ve Q4 süreçleri boyunca decode edilir ve yürütülür. Veri belleği Q2 boyunca okunur (Bilgi okunması) ve Q4 boyunca yazılır ( Yazım hedefi).

II. 8 – BELLEK ORGANİZASYONU
PIC16C84` de 2 bellek bloğu mevcuttur. Bunlar program belleği ve veri belleğidir. Her bir bellek kendi taşıyıcısına sahiptir; böylece her bir bloğa erişim aynı osilatör süreci boyunca meydana gelebilmektedir. Bunun ötesinde, veri belleği genel amaçlı RAM ve özel fonksiyon kayıtları (SFRS) olmak üzere ikiye bölünür. . SFR`ler her bir bireysel özelleşmiş modülü ele alan bölümde açıklanan özel modülleri kontrol etmek için kullanılmaktadır. Veri belleği EEPROM veri belleğini de içermektedir. Bu bellek, direkt veri belleğine planlanmamış, fakat indirekt olarak planlanmıştır; ve indirekt adres göstergeleri okumak/yazmak için EEPROM belleğinin adresini belirlemektedir. EEPROM belleği 64 bayt ve 10h-3Fh. adres enine sahiptir.

Şekil 2.4: Program hafızası ve küme(Yığın)

II. 9 – VERİ BELLEK ORGANİZASYONU
Veri belleği ikiye ayrılır. Birincisi özel fonksiyon kayıt alanı (SFR), diğeri ise genel amaçlı kayıt alanıdır. SFR’ ler aygıtın işlemini kontrol eder. Veri belleğinin bölümleri kümelenmiştir. Bu kümeler BANK adını alırlar. Bu hem SFR alanı hem de GPR alanı içinde geçerlidir. GPR alanı genel amaçlı RAM`in 16 bayt` ından daha fazlasına olanak sağlanabilmesi için kümelenmiştir. SFR` nin kümelenmiş alanı özel fonksiyonları kontrol eden kayıtlara aittir. Kümeleme küme seçimi için kontrol bitleri gerektirmektedir. Bu kontrol bitleri STATUS kaydında yer almaktadır. Şekil 2.4 veri belleği haritası organizasyonunu göstermektedir. Veri belleğin tümüne ya direkt her kayıt dosyasının mutlak adreslerini kullanarak, yada, dolaylı yoldan dosya seçim kaydı (FSR) üzerinden erişilebilir. Dolaylı adresleme, veri belleğinin kümelenmiş alanına
erişmek için RP1: RPO` un şimdiki değerlerini kullanmaktadır. Veri belleği genel amaçlı kayıt ve özel fonksiyon kaydını içeren iki kümeye bölünmektedir. RPO bitinin (STATUS <5>) (Yani 5. Bit RPO bitidir.) silinmesiyle BANK 0 seçilir. RPO` in kurulması BANK 1`i seçer.
Her bir BANK (küme) 7Fh (128 bytes) kadar uzanır (genişler). Her bir kümenin ilk on iki yerleşimi özel fonksiyon kaydı için rezerve edilmiştir. Kalanı ise statik RAM olarak genel amaçlı kayıt yürütebilmektedir.
II. 9. 1 – GENEL AMAÇLI KAYIT DOSYASI
Bütün aygıtlar belirli bir miktarda genel amaçlı kayıt (GPR) alanına sahiptir. Her bir GPR 8 bit enindedir ve dolaylı yada doğrudan FSR üzerinden erişilmektedir. BANK 1` deki GPR adresleri BANK 0`daki adreslere planlanır. Örnek olarak, 0Ch veya 8Ch adresleme yerleşimi aynı GPR` ye erişecektir
II. 9. 2 – ÖZEL FONKSİYON KAYITLARI
Özel fonksiyon (Şek 2.5 ve Tablo2.1) kayıtları, aygıtın işlemini kontrol etmek için CPU ve özel fonksiyonlar tarafından kullanılmaktadır. Bu kayıtlar statik RAM`lerdir.

II. 10. – PORTB ve TRISB KAYITLARI
PortB 8 bit eninde iki yönlü porttur. Buna uygun veri yönlendirici kaydı TRISB`dir. TRISB kaydındaki herhangi bir bit “1” ise, buna uygun çıkış sürücüsü yüksek direnç moduna getirilecektir. TRISB kaydındaki herhangi bir bitin “0” olması, çıkış mandalının
içeriğini seçilen pinin üzerine getirir. Her bir PORTB pini iç direnç düşürücü engellere sahiptir.
Tekli kontrol biti tüm engelleri devreye sokabilir. Bu RBPU(OPTION – REG<7) bitinin silinmesiyle yapılır. Düşürücü engeller, port pini çıkış olarak konfigüre edildiği zaman otomatik olarak kapanmaktadır. Engeller güç reset üzerinde etkinsizleştirilmektedir. Dört PORTB pini, RB7: RB4 değişim özelliklerinde kesmelere sahiptir. Yalnızca giriş olarak konfigüre edilen pinler kesmenin meydana gelmesine sebep olabilirler. (yani, herhangi bir çıkış olarak şekillendirilen RB7:RB4 pini değişim ilişkisi üzerindeki kesmeden hariç tutulmuştur. ) Giriş modundaki pinlerin değeri PORTB` nin önceki okunmasındaki eski değeri ile karşılaştırılır. Pinlerin “uyuşmayan” kısımları RB port değişim kesmesini üretmek için birlikte OR’lanır. Bu kesme aygıtı SLEEP` ten çıkarabilir. Kullanıcı, kesme servis programında, kesmeyi aşağıdaki metotlarla temizleyebilir. a PORTB`yi okuma (veya yazma). Bu uyuşmazlık durumuna son verir. b RBIF bayrak bitini temizler. Uyuşmazlık durumu RBIF bitini kurmaya devam edecektir. PORTB'nin okunması bu uyuşmazlık durumuna son verecek ve RBIF bitinin temizlenmesine olanak verecektir. Bu uyuşmazlık özelliğindeki kesme bu pindeki şekillendirilebilir yazılı engelleri ile birlikte anahtar depresyonundan çıkmaya olanak sağlamaktadır. Not 1: Eğer I/O pininde, PORT B` nin okuma işlemi yürütüldükten sonra (Q2 sürecinin başlaması ile) değişme meydana geliyorsa, RBIF kesme bayrak biti kurulmayabilir. Şekil 2.11 : RB3:RBO Pinlerinin Blok Diyagramı Değişme özelliklerindeki kesmeler anahtar depresyon işlemlerinde kalkma ve PROTB` nin yalnızca değişim özelliklerinde kesmeler için kullanıldığında tavsiye edilmektedir. Değişim özelliklerinde kesmeler kullanılırken, PORTB` nin ayrılması tavsiye edilmemektedir. Tablo 2.4 : PortB kaydedicileri II. 10. 1- I/O PROGRAMLAMA DEĞERLERİ Herhangi bir okuduğu gibi yazan ve içten çalışan komutun arkasından yazma işlemi gelmektedir. Örneğin BCF ve BSF komutları CPU için kayıtları okumakta, bit işlemini yürütmekte ve sonuçları tekrar kayda yazmaktadır. Bu önlem, komutların hem girişi hem de çıkışı tanımlanan portlara uygulandığından kullanılmalıdır. Örneğin, PORTB` nin 5. bitindeki BSF işlemi PORTB'nin tüm sekiz bitinin CPU içine yönelik okunmasına neden olur. Daha sonra, BSF işlemi bit 5 üzerinde yer alır ve PORT B çıkış mandallarına yazılır. Eğer diğer bir PORT B` nin biti iki yönlü I/O pini olarak kullanıldıysa ve bu zamanda giriş olarak tanımlandıysa, pindeki giriş sinyali CPU` yu okuyacaktır ve daha önceki içeriğin üzerine yazılmak suretiyle belirli pinlerin veri mandallarına yeniden yazacaktır. Pin, giriş modunda olduğu sürece hiçbir problem çıkmayacaktır. Bununla birlikte eğer o pin çıkış modunda açıldıysa, veri mandalının içeriği bilinmeyen olacaktır. Port kaydının okunmasıyla port pinlerinin değerleride okunur. Port kaydına yazmada ise port mandalına yazılır. Eğer portla bu düzenle yaz komutu kullanıldıysa (yani BCF, BSF) port pinlerinin değerleri okunur, istenen işlem port pinlerinin değerine kadar yerine getirilecek ve ondan sonra bu değer port mandalına yazılacaktır. Aktif olarak yüksek ve düşük çıkış yapılan pinler aynı zamanda dış aygıtlarından çıkarılmamalıdır. Sonuçta yüksek çıkış akımı çipe zarar verebilir. II. 10. 2 - I/O PORTLARINDAKİ ARDIŞIL İŞLEMLER I/O portuna fiili yazımı, komut sürecinin sonunda geçerli olurken, okuma da komut sürecinin başında geçerli olması gerekmektedir. (şek 2.12) Böylelikle, okuma tarafından takip edilen yazma aynı I/O portunda yürütüldüyse, tedbirleri mutlaka alınmalıdır. Komutların ardışıklığı öyle olmalıdır ki, pin voltajları, sıradaki komuttan daha erken stabilize olmalıdır.(yükleme bağımlılığı) Bunun yanı sıra bu pinin daha önceki hali, yeni haline nispeten CPU'ya okunabilir. Örnek 2.1 I/O portundaki iki ardışık oku-düzenle-yaz komutunun etkileri gösterilmektedir. Örnek 2.1: OKU-DÜZENLE-YAZ KOMUTLARI (I/O Portu üzerinde) ; Başlangıç Port Ayarları : PORT B<7:4> girişler
PORT B<3:0> çıkışlar

; PORT<7;6> dış engellere sahiptir ve diğer devrelere bağlı değildir. ; Kullanıcı pin değerini 00pp ppp olarak da bekleyebilir. 2.nci BSF RB7` nin pin değeri (yüksek) olarak gönderilmesine
sebep olmaktadır.
II. 11 TİMER0 MODÜLÜ VE TMR0 KAYDI
Timer0 modül, timer/sayaç aşağıdaki özelliklere sahiptir.
• 8 bitlik timer/sayaç Okunabilir ve yazılabilir
• 8 bitlik programlanabilir prescaler.
• İçten veya dıştan saat ayarı
• FFh` tan 00h` ye taşma üzeri kesme
• Dış saatin sınır seçimi

Timer modu, TOCS bitinin (OPTION<5>) temizlenmesiyle seçilir. Timer modunda Timer0 modülü her bir komut sürecini uzatır. (Prescaler olmaksızın) (Şek 2.11) Eğer TMR0 kaydı yazılıysa, uzama takip eden 2 süreci engeller. (şek 2.12 ) Kullanıcı ayarlanan değeri TMR0 kaydına yazarak, bunun etrafından çalışabilir. Sayaç modu TOCS bitinin (OPTION<5>) ayarlanmasıyla seçilir. Bu modda, TMR0, RA4/TOCK1 pininin sınırlarının herbir artışında ya da düşüşünde artacaktır. Genişleyen sınır, TO kaynak sınır seçim biti tarafından, TOSE (OPTION<4>) tarafından belirlenmektedir. TOSE bitinin temizlenmesi artan sınırları seçecektir.
Prescaler, Timer0 modülü ile Watchdog Timer arasında paylaşmaktadır. Prescaler ataması, yazılımda PSA biti kontrolü tarafından denetlenmektedir. (OPTION<3>) PSA
bitinin temizlenmesi, prescaler’ ı Timer0 modülüne atayacaktır. Prescaler okunabilir veya yazılabilir değildir. Prescaler Timer0 modülüne atandığında prescaler değeri (1:2, 1:4 …; 1:256) yazılım tarafından seçilebilirdir.
Şekil 2.13 :TMR0 blok diyagramı

II. 11. 1 – TMR0 KESMESİ
TMR0 kesmesi, TMR0 kaydı FFH`dan 00h`ye akışında üretilmektedir. Bu fazla akım TOIF bitini ( INTCON<2>) kurar (ayarlar). Kesme, aktif TOIE bitinin (INTCON<5>) temizlenmesi ile gizlenebilir. (INTCON<5>) TOIF biti, Timer0 modülü tarafından, bu kesmenin yeniden aktifleştirilmesinden önce yazılımdan silinmelidir. TMR0 kesmesi (şek.2.13) işlemciyi SLEEP` ten çıkaramaz, çünkü, SLEEP boyunca timer kapalıdır.
II. 11. 2 – TMR0’ NUN DIŞTAN SAAT İLE KULLANIMI
Dıştan saat girişleri TMR0 için kullanıldığında, bazı ön şartların gerçekleştirilmesi gerekir. Dıştan saat gereksinimi , içten faz saati senkronizasyonundan kaynaklanmaktadır. Bunun yanısıra, TMR0 kaydının senkronize edilmesinden sonra, fiili artmada gecikme mevcuttur.
II. 11. 2. 1 – Dıştan saat senkronizasyonu Hiç bir prescaler kullanılmadığı taktirde , dıştan saat girişi prescaler çıkışındaki gibidir. RA4/TOCKI pininin içten faz saati ile senkronize edilmesi iç faz saatlerinin Q2 ve Q4 süreçlerindeki prescaler çıkışını örneklemek yoluyla yerine getirilir. (Şekil 2.13) . Bunun için , TOCKI’ nin düşük değerinin en azından 2TOSC (artı ufak RC gecikmesi) olması gerekir. Prescaler kullanıldığında, dış saat girişi asenkron sayıcı tipi prescaler’ a bölünür ve böylece prescaler çıkışı simetrik olur. Dış saatin örnekleme gereksinmelerini karşılamak için sayaç(counter) dikkate alınmalıdır. Böylece prescaler değerine bölünen en azından 4 TOSC peryot uzunluğuna sahip olmalıdır.
II. 11. 2. 2 – TMR0 gecikme uzatılması
Prescaler çıkışı , iç saat ile senkronize edildiği için, dış saat sınırlarının meydana gelmesindeki zamandan TMR0 modülünün fiili olarak uzatılması zamanına kadar küçük bir gecikme vardır.
Şekil 2.14 dış saat sınırından Timer uzamasına kadar gecikmeyi göstermektedir.
II. 12 – PRESCALER( BÖLÜCÜ)
8 Bitlik sayaç Timer0 modülünde veya Watchdog timer’ında bulunur. Prescaler dışarıdan verilen sinyali 256 ya kadar bölmeye yarar. Timer0 modülü ile Watchdog timer’ı arasında
karşılıklı istisna tutulan yalnızca birtek prescaler mevcuttur. Böylece Timer0 modülüne prescaler ataması, watchdog timer’ın prescaleri olmadığı anlamına gelmektedir.
PSA ve PS2 : PSO bitleri (option <3:0>) prescaler atamasını ve prescaler oranını belirlemektedir.
Timer0 modülüne yazılan bütün komutlar, timer0 modülüne atandığında prescaler’i ölçecektir. WDT ye atandığında , CLRWDT komutu Watchdog Timer boyunca prescaler’ i temizleyecektir. Prescaler yazılabilir veya okunabilir değildir.

II. 13. – EEPROM VERİ BELLEĞİ
EEPROM veri belleği normal işlem boyunca okunabilir ve yazılabilirdir. Bu bellek direkt olarak kayıt dosya boşluğuna planlanmamıştır. Bunun yerine bu bellek, özel fonksiyon kaydı üzerinden dolaylı olarak adreslenir. Burada bu belleği okuyan ve yazan 4 özel kaydedici (SFR) mevcuttur.
Bu kayıtlar : EECON1 EECON2 EEDATA EEADR EEDATA yazma/okuma için 8 bitlik veri tutar ve EEADR erişilen EEPROM adreslerini saklar. PIC16C84 aygıtı 0H ile 3FH
genişliğindeki adresli EEPROM belleğinin 64 bitine sahiptir. EEPROM veri belleği byte’ ları okuma ve yazmaya olanak verir. Byte’lar otomatik olarak veri siler ve yeni veri yazar.
(yazmadan önce siler). EEPROM veri belleği yüksek silme/yazma süreçlerine oranlanmıştır. Yazma zamanı chip üzeri timer tarafından denetlenmektedir. Yazma zamanı chipten chipe
göre değiştiği gibi, voltaj ve ısı değerlerine görede değişebilir. Aygıt kod korumalı olduğu zaman , CPU EEPROM belleğini okumaya ve yazmaya devam edebilir. PIC programlayıcısı
artık bu belleğe erişemeyebilir.
II. 13. 1 – EEADR EEADR kaydı EEPROM verisinin maximum 256 byte’ ını adresleyebilir. Üstteki iki bit adresi decode edilmiştir. Bu şu anlama gelmektedir ki , 64 bitin bellek boşluğunda olduğundan emin olmak için bu iki bit her zaman 0 olmalıdır.

R = Okunabilir. W = Yazılabilir. S = Kurulabilir bit
U = Kullanılmayan bit, ‘0’ olarak okunur. ^n = POR resetindeki değer.
Bit 7 : 5 : Kullanılmayan : ‘0’ olarak okunur.
Bit 4 EEIF : EEPROM Yazma işlemi kesme bayrak biti.
1 = Yazma işlemi tamamlanmıştır.
0 = Yazma işlemi tamamlanmamıştır veya başlamamıştır.
Bit 3 WRERR : EEPROM hata bayrak biti
1 : Yazma işlemi erkenden sona ermiştir. (MCLR veya WDT normal işlem boyunca resetlenir.)
0 : Yazma işlemi tamamlanmıştır. Bit 2 WREN : EEPROM yazma aktifleştirme biti
1 : Yazma sürecine olanak verir. 0 : EEPROM verisine yazmayı engeller.
Bit 1 WR : Yazım kontrol biti 1 : Yazım sürecini başlatır. (Yazım bitirildikten sonra bit donanım
tarafından silinir. WR biti yalnızca yazılıma kurulabilir.(silinmez) ) 0 : EEPROM a veri yazım süreci tamamlanmıştır. Bit 0 RD : Okuma kontrol biti. 1 : EEPROM’ un okunmasını başlatır. (okuma yalnızca bir devirde yer alır. RD donanımda silinir. RD biti yalnızca yazılıma
kurulabilir. ( silinmez) ) 0 : EEPROM okumasını başlatmaz.
II. 13. 2 – EECON1 ve EECON2 kayıtları (registerleri)
EECON1 , fiziksel olarak yerine getirilen 5 düşük sıralı bitli kontrol kaydıdır. Üst üç biti mevcut değildir ve ‘ 0 ‘ olarak okunur. RD ve WR kontrol bitleri okuma ve yazmayı başlatırlar. Bu bitler silinemezler, yalnızca yazılıma kurulabilirler. Bu bitler, okuma ve yazım işlemlerinin tamamlanması olarak donanımdan silinirler. WR’nin yazılımdan silinmesinin olanaksızlığı , yazım işleminin tesadüfi vaktinden evvel sona erdirilmesini önler. WREN biti, kurulduğunda lazım işlemine başlamaya izin verilir. Yüksek güçte, WREN biti temizlenir. Yazım işlemi normal işlem süresinde MCLR, RESET veya WDT- zaman aralığı reset tarafından kesildiğinde WRERR biti kurulur. Bu durumlarda, resetin ardından kullanıcı WRERR bitini kontrol edebilir ve yerleşimi yeniden yazabilir. EEDATA ve EEADR kayıtlarındaki veri ve adresler değişmeyecektir. Yazım tamamlandığında EEIF bayrak biti kesmesi kurulur. Bu kesme yazılımdan silinmelidir. EECON2 fiziksel kayıt değildir. EECON2 okuması tüm ‘0’ ları
okuyacaktır. EECON2 kaydı harici olarak data EEPROM yaz serisinde kullanılır.
II. 13. 3 – EEPROM VERİ BELLEĞİNİN OKUNMASI
Veri bellek yerleşimini okumak için , kullanıcı, adresi EEADR kaydına yazmalıdır ve RD kontrol bitini kurmalıdır. (EECON1<0>). Veri sıradaki devirde, EEDATA kaydında mevcuttur , bunun için bu sıradaki komutta okunabilmektedir. EEDATA bu değerleri diğerleri okununcaya kadar veya kullanıcı tarafından yazılıncaya kadar tutmaktadır. (yazım işlemi boyunca)
II. 13. 4 – EEPROM VERİ BELLEĞİNE YAZIM
EEPROM veri yerleşimini yazmak için kullanıcı ilkin adresleri EEADR kaydına, verileri EEDATA kaydına yazmalıdır. Daha sonra kullanıcı her bit’ e yazımın başlatması için spesifik ardışıkları takip etmelidir.

Örnek 2.3 : EEPROM’ a veri yazımı Yukarıdaki seri her bir bit için tam tamına takip edilmediği sürece (55h yi EECON2 ye yaz, Aah yi EECON2 ye yaz ve WR bitini kur) yazım başlatılmayacaktır. Bu kod segmenti boyunca kesmelerin etkinsizleştirilmesi yerinde olur.
İlaveten EECON1 deki WREN biti aktif yazıma kurulmalıdır. Bu mekanizma beklenmeyen kod yürütülmesinden kaynaklanan tesadüfi EEPROM verilerin üzerine yazımı önler. Kullanıcı, EEPROM un güncelleştirilmesi hariç her zaman WREN bitini temiz tutmalıdır. WREN biti donanım tarafından silinmektedir. Yazım serisi başlatıldıktan,WREN bitinin temizlenmesi bu yazım şeklini etkilemektedir. WREN biti kurulmadıkça, WR bitinin kurulması engellenir.
Yazım şeklinin tamamlanmasından sonra, donanımdaki WR biti temizlenir ve EE yazım bitini bayrak biti (EEIF) kurulur. Kullanıcı bu kesmeyi aktifleştirebilir yada etkinleştirebilir.
EEIF yazılım tarafından silinmelidir.
NOT: EEPROM veri bellek E/W cycle zamanı 10ms aşabilmektedir. (tipik) Yazım şeklinin bitiminden emin olmak için EE kesmesi kullanılmalı veya WR biti seçilmelidir. (EECON<1>).
Her iki durum şeklinin tamamlandığını ifade eder.
II. 13. 5 – YAZIM DOĞRULANMASI
EEPROM verisine yazılan değerlerin yazılması istenen değerlerle doğrulanması gerekmektedir. Bu EEPROM birirnin spesifikasyon limitine yakın uygulamalarda kullanılmalıdır. Toplam kaldırma diski , uygunluk (rahatlık) derecesini belirlemeye yardımcı olacaktır. Genel olarak EEPROM lazım başarısızlığı ”1” olarak yazılan, fakat geriye “0” olarak okunan bitten kaynaklanmaktadır.

II. 13. 6 – TAKLİT YAZILIMLARA KARŞI KORUMA
Şöyle durumlar olabilir ki , aygıt EEPROM veri belleğine yazmak istemeyebilir. Taklit yazılımlara karşı korunmak için, değişik mekanizmalar monte edilmiş, kurulmuştur. Yüksek güçte WREN temizlenir. Bunun yanı sıra , yüksek güç timer’ i (72 msn süreli) EEPROM yazımını önler. Yazılımı başlatan ardışık ve WREN biti ikisi birlikte ‘Brown-Out’, güç arızası veya yazılım aksamasında tesadüfi yazılımları önlemeye devam eder.
II. 13. 7 – KOD KORUMA SÜRESİNCE EEPROM VERİ İŞLEMİ
Micro, kod korumalı durumdayken düzene sokulan verileri okuyabilir ve EEPROM verisine yazabilir. ROM aygıtlarında iki koruma biti mevcuttur. Birisi ROM program
II. 14 – GÜÇ SARFİYAT BİLGİLERİ
Not: EADRR <7:6> biti temizlenmelidir. Bu bitlerden herhangi birisi kurulduğunda micronun maximum IDD si her iki bitin de temizlenmiş olması halindekinden daha yüksektir. Spesifikasyon 400mA’ dir. Silinen EADRR<7:6> ile maximum 150mA civarındadır.
İşaretler: x =bilinmeyen, u = değişmeyen, —– = ‘0’ olarak tamamlanmamış okuma
Q = Şartlara bağımlı değer. Bölgelendirilen hücreler EEPROM tarafından kullanılmamaktadır.
II. 15 – CPU’ NUN SPESİFİK ÖZELLİKLERİ : Mikrokontrolör’ ü diğer işlemcilerden ayıran şey , gerçek zaman uygulamalarının gereksinmeleri ile ilgili özel devrelerdir. PIC16C84’ te sistem güvenliğini maximize eden, dış elemanları ayırarak maliyeti minimize eden , güç tasarrufu, çalışma modu ve kod koruma gibi özellikleri taşımaktadır. Bu özellikler;
 OSC seçimi
 Reset
 Güç kaynağı reseti (POR)
 Yüksek güç timerı (PWRT)
 Osilatör başlangıç Timer ı (OST)
 Kesmeler
 Watchdog Timer
 Sleep
 Kod koruma
 ID yerleşimleri

III. PIC 16F84 İLE TASARLANMIŞ TIMER DEVRESİ

Zamanlayıcı devreleri bir sistemi önceden belirlenmiş bir zaman sonunda aktive etmek için kullanılan, zamana bağlı fonksiyonları yerine getiren devrelerdir.
Bu tip zaman bazlı devrelere evlerimizde, fırın, çamaşır makinesi, bulaşık makinesi gibi ev aletlerinde, fabrikalarda, otomobillerde sıkça rastlarız.
En basit zaman kontrolü iki transistörlü bir multivibratörle yapılabilir. Zaman ayarı bir potansiyometre yani değişken dirençle sağlanır. Bu tip zamanlayıcılar yaygın olarak apartman merdiven ışıklarının yanık kalma süresini ayarlamakta kullanılır.Bu tip bir multivibratörün en büyük dezavantajı hassas zaman tutmanın imkansız olmasıdır. Zaman katsayısı bir RC-direnç, kondansatör çiftinin üzerinden boşalan akıma bağlıdır ki her iki eleman da ısıyla karakteristiklerini değiştirirler bu da ön görülen zamanın ortam ısısıyla değişmesi anlamına gelir. Bir başka dezavantaj da sürenin uzaması için yüksek değerli kondansatör veya direnç kullanmakla toleransların kötü yönde zorlanmasıdır.
Biraz daha kararlı ve basit ama aynı zamanda modern bir zamanlayıcı
için bir entegre olan 555’i kullanmamız gerekir.
555, içinde opamp ve zamanlayıcı için gerekli elemanları barındıran 8 bacaklı bir entegredir. Çok küçük zaman birimlerinden dakika ölçekli zaman aralıklarına kadar transistörlü multivibratorden daha güvenle kullanılabilir. Ama hassasiyet konusunda
gene RC devresinin ısıl kararlılığı kadar güvenilirdir. Kararlılıktan anlamamız gereken her çalıştığında, 1 dakikalık tasarlanmış bir zamanlayıcının hep bir dakika sonunda işlevini yerine getirmesidir. Transistörlü devrelerde ve 555‘de bu zaman RC ısıl kararlılığına göre her aktivasyonda ileri gitmesi veya geri kalmasıdır.
Kesin bir hassasiyet gerektiren işlerde, örneğin film tab etme sırasındaki banyo işlemleri süreleri için tasarlanmış zamanlayıcılarda quartz kristalli osilatörler kullanılır. Quartz kristaller rezonans frekansına göre kesilmiş ve iki metal plaka arasına hapsedilmiş titreşim cambazlarıdır. Bir kristal ile kurulmuş osilatörün ısıl kararlılığı bir RC osilatarüne göre çok daha fazladır, neredeyse ısı etkisini sıfır kabul edebiliriz; gerçekte kristal osilatörlerde ısı değişimlerinden etkilenirler. Böyle bir kristal kullanmak maliyeti ve karmaşıklığı da peşinden sürükler.
Transistörlü multivibratör ve 555 osilatörlerinin salınımının frekansını bir potansiyometre yardımıyla yani R değeriyle oynayarak değiştirebiliriz fakat bir quartz kristalli osilatör söz konusu olunca frekansı kristalin kesildiği değer dışında bir salınıma ayarlamak pek mümkün değildir, pratik olarak istediğimiz zaman gecikmelerini sağlayacak değerlerde, örneğin bir dakikada bir titreşecek bir kristal teorik olarak mümkünse de pratikte bulunması mümkün değildir.
Hemen hemen tüm mikroişlemciler, pic de dahil, programlarını ilerletmek için kristal bir osilatör kullanırlar. Dolayısıyla zamanlayıcı tasarımında mikroişlemci kullanmak ilk etapta osilatör sorununu halletmek açısından oldukça caziptir, iyi ama bölücü sorununu nasıl halledeceğiz ve bu bölücüleri nasıl yaratıp programlayacağız? Gene her mikroişlemcinin bir saat çevriminde işleyebileceği komut miktarı bellidir yani kristalin her vuruşunda mikroişlemçi belli sayıda komut işler. Örneğin pic 16F84 4 mhzlik bir kristalle çalıştırılırsa bu kristalin ürettiği salınımlar önce pic’in içinde dörde bölünür -ki bu tüm picler için geçerlidir- daha sonra programı ilerletmek için kullanılır. Pic bir RISC tabanlı işlemci olduğundan kristalin her vuruşunda bir komut işler. 4 mhz / 4 = 1mhzlik gerçek osilatör frekansında 1 mikrosaniyede 1 komut işlenir. Bunu bilmek bize müthiş bir avantaj sağlar, artık yazacağımız programda baz alacağımız bir zaman sabiti vardır. Programlanabilir bir zamanlama maddeleri kapsamalıdır:
1. Bölme değerini pic portları aracılığıyla pic’e okut
2. 1 saniyelik bir çevrimi bir komutun bir mikrosaniyede
işlendiğini göz önüne alarak yarat.
3. Bir saniyelik çevrimi pic portundan okuduğun bölme
yani tekrar değeri kadar çevir .
4. Tekrar değerine ulaşıldığında çıkışı (örneğin bir röleyi) aktif hale getir.
5. Programı bitir.

Böyle bir algoritmanın oluşturacağı bir şekildeki gibi olmalıdır.

Bu şekilde gösterilen dip switchler(anahtarlar) ikili (binary) sayı düzeninde
bölme oranını girmemizi sağlar. Çıkışta bulunan yeşil ve kırmızı led’ler devrenin çalışması hakkında bize fikir vermesi için konmuştur.
Yeşil led devre çalışırken her bir saniyede bir yarım saniye ışıldayarak
bize devrenin çalıştığını ve herşeyin yolunda olduğunu belirtir.
Kırmızı led ise istenilen zaman gecikmesine erişildiğinde yanıp bize
programın sonuna gelindiğini ve rölenin aktif olduğunu gösterir. Bu esnada yeşil led sönerek sayma işleminin bittiğini belirtir.
Pic çok küçük REED röleleri transistör kullanmaksızın tek başına sürebilir ama genel maksatlı röleleri sürebilmek için bir transistör eklenmiştir. Vcc voltajı rölenin voltajıyla aynı olmalıdır eğer 12 voltluk röle kullanıyorsak Vcc = 12 V olmalıdır. Bu rölenin ucuna aklınıza gelen herşeyi bağlayabilirsiniz.
Bölme oranlarının hesaplanmasında dikkat etmemiz gereken bir, iki noktaya bakalım. Bölme oranı dip switchleri, pic 16f84’ün 8 bitlik RB portunu kullanır. 8 bitlik bir seçme şansına sahip olduğumuza göre verebileceğimiz bölme oranı aralığı 0 ile 255 dir.
Pic için üç adet program bulunmaktadır,
saniye.hex,
dakika.hex,
saat.hex,
Eğer zaman ayarını saniye aralıkla yapmak istiyorsanız o halde saniye.hex dosyası ile pic’i programlamanız gerekir. Dakika aralığı sizin için yeterli ise dakika.hex kullanılmalıdır. Saat bazında bir hassasiyet içinse saat.hex kullanılır. Saniye bazında bir ayarla 255 saniyeye kadar bir saniye aralıkla zaman ayarı yapmak mümkündür. Bu da yaklaşık olarak 4.30 dakikalık maksimum zaman ayarı sağlar. Dakika bazında bir ayarla 255 dakikaya kadar bir dakika aralıkla zaman ayarı yapmak mümkündür. Bu da yaklaşık olarak 4.30 saatlik maksimum zaman ayarı sağlar. Saat bazında bir ayarla 255 saate kadar bir saat aralıkla zaman ayarı yapmak mümkündür. Bu da yaklaşık olarak 10 günlük maksimum zaman ayarı sağlar. Pic üzerinde RB portu bacakları 4k7 ohmluk dirençlerle +5 voltabağlanmıştır, bunun nedeni boşta kalan bacağın salınım yapıp iki değer arasında gidip gelmesini önlemektir fakat bu bize hesapladığımız zaman bölme değerini switchlere girerken dikkatli olmamızı söyler. Artık low yani 0 değeri açık anahtara karşılık gelmez çünkü açık anahtar o hattın +5volta çekilmesi demektir yani High – 1 – dır. Örneğin 40 saniyelik bir zaman gecikmesi için switchleri programlayalım, 40 = 00101000 dir. Burada en soldaki sayı RB7 portundaki switchdir,aynı mantıkla en sağdaki ise RB0 portuna karşılık gelen switchdir. KAPALI anahtar = 0, AÇIK anahtar = 1 kuralını uygularsak 40 sayısı kapalı, kapalı, açık, kapalı, açık, kapalı, kapalı, kapalı olarak RB7 den RB0 ‘ a doğru girilmelidir.
Önemli bir nokta önce switchleri programlamamız daha sonra devreye voltaj
uygulamamız gerekir. Çünkü pic voltaj uygulandığı andan itibaren zamanı geriye saymaya başlar.

FİAT LİSTESİ

TIMER HEX. KODLARI

Saniye.hex
:1000000021288001840AFF3E031D01281C288D0140
:10001000E83E8C008D09FC30031C11288C07031866
:100020000E288C0764008D0F0E280C1817288C1CC6
:100030001B2800001B28080083130313831264008D
:10004000080083168501831285018316FF30860020
:10005000831286010C308400443001200608A80079
:100060002808FF3CA800A901640029082802031CF5
:100070004528051001308D00F430082005140130AA
:100080008D00F4300820A90F3428051085140515BB
:040090006300482899
:084000007F007F007F007F00BC
:04400E00F53F010079
:00000001FF

Dakika.hex
:1000000021288001840AFF3E031D01281C288D0140
:10001000E83E8C008D09FC30031C11288C07031866
:100020000E288C0764008D0F0E280C1817288C1CC6
:100030001B2800001B28080083130313831264008D
:10004000080083168501831285018316FF30860020
:10005000831286010C308400443001200608A80079
:100060002808FF3CA800AA0164002A082802031CF3
:100070004D28A90164003C30290203184B280510C3
:1000800001308D00F4300820051401308D00F4306B
:100090000820A90F3A28AA0F342805108514051541
:0400A0006300502881
:084000007F007F007F007F00BC
:04400E00F53F010079
:00000001FF
Saat.hex
:1000000021288001840AFF3E031D01281C288D0140
:10001000E83E8C008D09FC30031C11288C07031866
:100020000E288C0764008D0F0E280C1817288C1CC6
:100030001B2800001B28080083130313831264008D
:10004000080083168501831285018316FF30860020
:10005000831286010C308400443001200608A80079
:100060002808FF3CA800AB0164002B082802031CF1
:100070005528AA0164003C302A0203185328A9011C
:1000800064003C30290203185128051001308D000E
:10009000F4300820051401308D00F4300820A90F39
:1000A0004028AA0F3A28AB0F3428051085140515EF
:0400B0006300582869
:084000007F007F007F007F00BC
:04400E00F53F010079

Etiketler: , , , , , , ,

Yorum yazın