Şimdi Ara

PIC ÇALIŞMA MANTIĞI

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
11
Cevap
0
Favori
3.211
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • pic lerin bir işlemi nasıl yaptığını anlamamda yardımcı olurmusunuz. tamam bütün kapılar 0-1 lerle. yani yani 8 bitte bacakların birinde akım var yok la işin temeli atılıyor. bana biri 8 bitlik bir sistemde mesela 2. kapı 2 sayısına karşılık geliyor. 2 + 2 nin nasıl olduğunu açıklayabilirmi. akımlar ne oluyor da toplama vb. işlemler oluyor. bunun mantığını anlamak istiyorum.

    birine sordum açıklaması söyleydi. yazacağın programa göre

    mesela ilk yazdığın rakam işlem görecek rakam mesela 2 sonraki rakam mesela 25 çarpmanın ifadesidir. 24 toplama 23 çıkarma 22 eşittir gibi. sonraki rakam yine işlem rakamı 2 ve son olarak 22 yazdığında işlem olur dendi. ( parallel de) bu ifadeyi bana açacak olan varmı.



  • Ne sorduğundan anladığım kadarıyla yanıtlamaya çalışayım.

    İşlemci komutu eepromdan okur ve gerekli işlemleri yapar. Sonra diğer komutu okur ve bu böyle devam eder. Özetle böyle

    pic16'ları biraz inceleyelim. Bu işlemciler 14 bitlik komutlara sahiptir. Sıradaki program belleği gözünden 14 bitlik veriyi okur, bu 14 bitin bir kısmı komut bir kısmı bu komuta ait veridir.

    Mesela W registerini 2 ile toplayıp sonucu W registerine yazan bir komut:

    Kılavuzda komutun bellekte nasıl durduğu şöyle açıklanmış:

    ADDLW k : 111110kkkkkkkk

    Gördüğün gibi toplam 14 bitlik bir bilgi. İlk 6 bite "opcode" deniyor, çekirdek komut da denebilir. Bu diğer komutlardan ayırdedilip ilgili işlevlerin seçilebilmesi için. Geriye 8 bit kalıyor, bu zaten veriyolunun genişliği, elbette buna uygun bir tasarım yapmışlar. Şöyle, toplam 35 komut gerek görülmüşse o zaman bunların hepsi minimum 6 bitle tek tek tanımlanabilir (6 bit en fazla 2 üssü 6 = 64 kombinasyon yaratır)
    İşte ADDLW 2 dersen o zaman bu bellekte şöyle duracaktır: 11111000000010
    Bu türlü konularda elemanın kılavuzu oldukça yardımcı olacaktır.

    pic16f84'te bu 14 bitlik kelimelerden toplam 1024 tane var. Bu çalışma esnasında değiştirilemeyecek (sadece 16f84'ten bahsettiğimi vurgulayayım) bellek alanıdır, eepromdan yapılmıştır. İşlemlerin vızır vızır işlediği bakkal defteri gibi 8 bit genişlikli bir RAM alanı da var. Öncelikle RAM ve ROM'ların ayrı olduğu bu mimariyi anlamalısın. Komutlar 14 bitlik program belleğinden okunur, bunların etkileri tepkileri hep 8 bitlik veri alanında yer bulur. Aynı bir hesap makinasıyla bişeyler hesaplamak gibi. O durumda ROM sensin işlemci sistem ise hesap makinası.



    < Bu mesaj bu kişi tarafından değiştirildi Liu Kang -- 12 Temmuz 2006; 13:57:00 >




  • Sorduğun mantığın temeli "dijital devreler" konusuna giriyor.Ya da başka bir deyişe "boolean matematiği" bu konulara bakman lazım.İşin temelleri matematiksel önermelerin devre elemanları ile gerçeklenmesi.Lojikdeki kapıları biliyorsundur ,Ve,veya,veya değil vs... Bu kapılardan basitçe bir bit toplayıcı yapabilirsin mesala.Örnek verecek olursak:

    giriş1 giriş2 sonuç elde
    ---------------------------
    0 0 0 0
    1 0 1 0
    0 1 1 0
    1 1 0 1

    Bu sonuçları gerçekleyecek bir devreyi yukarıda bahsettiğim kapılarla gerçekleyebilirsin.Artık 1 bitlik toplama yapacak bir devren var.Bundan 8 tanesini paralel çalışacak şekilde birleştirirsen elinde 8 bitlik bir toplayıcın olur.Veee böyle yapılar bir araya gelip işlemciyi oluşturur.Tabi arada bir sürü ayrıntı var.Ancak temelleri anlamana yardımcı olabilmişimdir umarım.




  • inşallah anladığım doğrudur.

    1010: 5
    0110:6
    +
    1101: 11
  • quote:

    Orjinalden alıntı: firkete

    inşallah anladığım doğrudur.

    1010: 5
    0110:6
    +
    1101: 11


    Mantık doğru fakat sayıların ikilik karşılıklarını yanlış yazmışsın:
    0101 :5
    0110 :6
    +
    -----------
    1011 : 11
  • birde şu konuda yardımcı olursanız memnun olurum.

    lazer ışığının bir kristalde geçirerek renklerine ayırıp bazı renkleri absorte ederek, o ışığı tekrardan toplama yöntemi ile bir bilgisayarın temel mantığı oluşturulmaya çalışılıyor. bu yapılmayacak bir şey değil. uzun zamandır düşünmeme rağmen bu yansımaları kullanarak bir hesaplatma yolunu bulamadım.
    mesela elimizde iki lazer kağnağı var. birinde 15 sayısına karşılık gelecek ışığı ürettim, diğerinde mesela 3

    sadece yansımları kullanarak bunlara nasıl işlem yaptırabilrim.

    varmı bir öneriniz.
  • Dediğini tam anlamadım.Işıkla 15 ve 3 gibi sayıyı nasıl sembolize edeceksin?
  • Yapay Zeka’dan İlgili Konular
    java çalışma alanları
    10 yıl önce açıldı
    Daha Fazla Göster
  • quote:

    Orjinalden alıntı: coskunnn

    Dediğini tam anlamadım.Işıkla 15 ve 3 gibi sayıyı nasıl sembolize edeceksin?

    Işığın belli bir dalga boyu belli bir sayıya tekabül edebilir mesela.
  • bu sistem yeni bir düşünce bildiğim kadar. kuantum bilgisayaralara en yakın çalışma sistemi olarak lanse ediliyordu.

    mantık şu.:

    Bir lazer demetini (diyelimki ışık değeri (0) olsun)) bir prizmadan geçirerek gökkuşağı renklerine ayırıyorsun.renklerin ayrıldığı yerde iç bükey ayna var. bu ayna ile tekrar bir merkezde toluyorsun.
    ancak bu aynada bazı noktalar ışığı yansıtmayacak özellikte, yada farklı yere yansıtacak özellikte. dolayısı ile toplanan ışıkta bir değer eksik kalacak. işte bu eksikliği aynen pic lerde ki gibi işlemle yani 1-2-4-8-16 gibi değerlerle okuyucuya bir değer atayarak istediğimiz rakamı ortaya çıkarırız.
    sanırım anlaşıldı burası.

    bu yöntemle nasıl işlem ayaptırım onu bulamadım. hafızanın olmaması beni resmen çıkmaza soktu.

    buna ek olarak bir şey daha kafama takıldı. 8 bitlik bir işlemci ile (elde edeceğimiz raklam max. 255 milyonluk hesaplamalar nasıl yapılıyor. yani çok haneli




  • Işık konusunda yine pek birşey söyleyemeyeceğim.Işıklı sistem de hafıza nasıl olur ben de bilmiyorum.
    Son soruna gelince,evet 8 bit ile maksimun 255 sayısını ifade edebilirsin.Ama 2,3,4 byte kullanarak daha büyük sayıları da kullanabilirsin.
  • 1. PIC NEDİR?

    PIC Serisi mikroişlemciler MICROCHIP firması tarafından geliştirilmiş ve üretim amacı çok fonksiyonlu logic uygulamalarının hızlı ve ucuz bir Mikroişlemci ile yazılım yoluyla karşılanmasıdır.

    PIC’in kelime anlamı -PERIPHERAL INTERFACE CONTROLLER- Giriş Cı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.

    Çok geniş bir ürün ailesinin ilk üyesi olan PIC16C54 bu ihtiyacı karşılamak üzere üretilmiştir. PIC işlemcileri RISC -benzeri işlemciler olarak anılır. PIC16C54 12 Bit komut hafıza genişliği olan 8 bitlik CMOS bir işlemcidir. 18 bacaklı dip kılıfta 13 I/O bacağına sahiptir ve 20 Mhz osilator hızına kadar kullanılabilir. 33 adet komut içermektedir. 512 byte program epromu ve 25 byte RAM`i bulunmaktadır. Hafıza kapasitesi oldukça düşük olmasına rağmen ,bir risc işlemci olması birçok işin bu kapasitede uygulanmasına olanak vermektedir.

    PIC serisi tüm işlemciler herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 adet kondansatör, 1 adet direnç ve bir kristal ile çalıştırılabilmektedir. Tek bacaktan 40 mA akım çekilebilmekte ve entegre toplamı olarak 150 mA akım akıtma kapasitesine sahiptir. Entegrenin 4 Mhz osilator frekansında çektiği akım çalışırken 2 mA stand-by durumunda ise 20uA kadardır.

    PIC 16C54 ‘un mensup olduğu işlemci ailesi 12Bit core 16C5X olarak anılır. Bu gruba temel grup adı verilir. Bu ailenin üyesi diğer işlemciler PIC16C57, PIC16C58 ve dünyanın en küçük işlemcisi olarak anilan 8bacakli PIC12C508 ve PIC 12C509’dur.

    İnterrupt kapasitesi ilk işlemci ailesi olan 12Bit Core 16C5X ailesinde bulunmamaktadır. Daha sonra üretilen ve Orta sınıf olarak tanınan 14Bit Core- 16CXX ailesi birçok açıdan daha yetenekli bir grup işlemcidir.

    Bu ailenin temel özelliği interrupt kapasitesi ve 14 bitlik komut işleme hafızasıdır. Bu özellikler Pic’i gerçek bir işlemci olmaya ve karmaşık işlemlerde kullanılmaya yatkın hale getirmiştir. PIC16CXX ailesi en geniş ürün yelpazesine sahip ailedir. 16CXX ailesinin en önemli özellikleri seri olarak devre üstünde dahi programlanması -ki bu özellik PIC16C5x de epey karmaşıktı , paralel programlanabiliyordu- interrupt kabul edebilmesi, 33 I/O,AD Converter, USART, I2C, SPI gibi endüstri standardı giriş çıkışları kabul edecek işlemcilere ürün yelpazesinde yer vermesi.

    PIC 16CXX ailesinin amatör elektronikçiler arasında en çok tanınan ve dünyada üzerinde ençok proje üretilmiş olan ürünü PIC16C84 veya yeni adıyla PIC16F84 dur.


    PIC 16F84 un bu kadar popüler olması onun çok iyi bir işlemci olmasından ziyade program belleğinin Eeprom - Elektrikle silinip yazılabilen bellek - olmasından kaynaklanmaktadır. Seri olarak dört adet kabloyla programlanması da diğer önemli avantajıdır. Bugüne kadar amatörce bir işlemciyle uğraşmış herkesin en büyük sıkıntısı eprom veya eprom tabanlı işlemcileri programladıktan sonra UltraViole ışık kaynağı ile silip tekrar programlamaktır. Bu çok zahmetli ve bir amatör için ekipman gerektiren yöntem olmustur. Ayrıca özel bir programlayıcı da gerektirmektedir.

    Eeprom belleği programlayan programlayıcı devre 1 saniye içinde aynı belleği silebilmektedir. Bu özellik çok hızlı ve defalarca deneyerek program geliştirme avantajını getirmektedir. Bu denemeleri yaparken işlemciyi devreden sökmek dahi gerekmez. Bu tip programlamaya ISP -In System Programming- denmektedir.

    1.1 PIC Mİ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 mikrokontrolerleri çeşitli özelliklerine göre PIC16C6X, 16C7X, 16C5X gibi gruplara ayrılırlar.

    1.2 PIC MİKROKONTROLÖRLERİNİN ÖZELLİKLERİ

    Kod Verimliliği
    PIC, Harvard mimarisi temelli 8 bit' lik bir mikrokontrolcüdür. Bu, bellek ve veri için ayrı yerleşik bus' ların bulunduğu anlamına gelir. Böylelikle akış miktarı veriye ve program belleğine simultane erişim sayesinde arttırılmış olur. Geleneksel mikrokontrolcülerde veri ve programı taşıyan bir tek yerleşik bus bulunur. Bu, PIC' le karşılaştırıldığında işlem hızını en az iki kat yavaşlatır.

    Güvenilirlik
    Tüm komutlar 12 veya 14 bit'lik bir program bellek sözcüğüne sığar. Yazılımın, programın VERİ kısmına atlamaya ve VERİ'yi komut gibi çalıştırmasına gerek yoktur. Bu 8 bit'lik bus kullanan ve Harvard mimarisi temelli olmayan mikrokontrolcülerde gerçekleşmektedir.

    Komut Seti
    16C5x ailesinde yazılımı yaratmanız için 33 komut öğrenmeniz yeterlidir. 16Cxx araçları içinse bu sayı 35'tir. PIC tarafından kullanılan komutların hepsi yazmaç (register) temellidir ve 16C5x ailesinde 12 bit 16Cxx ailesindeyse14 bit uzunluğundadır. CALL, GOTO ve bit test eden BTFSS, INCFSZ gibi komutlar dışında, her bir komut, tek bir çevrimde çalışır. Mikrokontorolcünün çalışmasını ve işletmesini sağlayan bilgidir. Başarılı bir uygulama veya ürün isteniyorsa yazılım hatasız ve bug' sız olmalıdır. Yazılım C, Pascal veya Assembler gibi çeşitli dillerde veya ikilik (binary) olarak yazılabilir.

    Hız
    PIC, osilatör ve yerleşik saat yolu (clock bus) arasına bağlı yerleşik bir (divide by 4) 4' lü bölünme' ye sahiptir. Bu, özellikle 4 MHz'lik kristal kullanıldığında komut sürelerinin hesaplanmasında kolaylık sağlar. Her bir komut döngüsü 1 mS' dir. PIC oldukça hızlı bir mikrodur. Örneğin 5 milyon komutluk bir programın, 20 MHz' lik bir kristalle adımlanması yalnız 1 saniye sürer. Bu süre 386 SX 33 hızının neredeyse 2 katıdır.

    Statik İşlem
    PIC tamamıyla statik bir mikroişlemcidir. Başka bir deyişle saati durdurduğunuzda, tüm yazmaç içeriği korunur. Pratikte bunu tam olarak gerçekleştirmeniz mümkün değildir. PIC' i uyutma moduna getirdiğinizde, saat durur ve PIC' e uyutma işleminden önce hangi durumda olduğunu size hatırlatacak çeşitli bayraklar kurar. PIC uyuma modunda yalnızca 1 mA'dan küçük bir değere sahip bekleme (standby) akımı çeker.


    2. PIC MİKROKONTROLÖRLERİNİN DONANIMSAL İNCELENMESİ

    2.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.

    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.




    Şekil 2.1: Pic 16C84 Pin Bağlantı şeması




    Tablo 2.1: PIC 16C84’ e ait pin tanımları

    Pin Adı
    Pin# G/Ç/Güç Tampon
    Tipi Açıklama
    OSC1/CLKIN 16 G ST/CMOS(3) Kristal titreştirici (oscillator) girişi / dış
    saat kaynağı girişi
    OSC2/CLKOUT 15 Ç - Kristal titreştirici çıkışı.
    RC bağlanması durumunda(4) bu bacak
    OSC1’e bağlanan kaynağın dörtte biri
    frekansında, yani komut işleme hızında,
    saat çıktısı üretir.
    MCLR’ 4 G/Güç ST Sıfırlama girişi / Programlama
    voltaj girişi.
    Bu bacağa düşük mantık sevıyesi
    uygulandığında aygıtı ‘reset’ler.
    RA0
    RA1
    RA2
    RA3
    RA4/T0CKI 17
    18
    1
    2
    3 G/Ç
    G/Ç
    G/Ç
    G/Ç
    G/Ç TTL
    TTL
    TTL
    TTL
    ST PORTA iki yönlü bir giriş çıkış bağlacıdır.




    Bu bacak TMR0 zamanlayıcı (timer) /
    sayıcısına (counter) saat sinyali girişi
    olarak da kullanılabilir.


    RB0/INT
    RB1
    RB2
    RB3
    RB4
    RB5
    RB6
    RB7

    6
    7
    8
    9
    10
    11
    12
    13

    G/Ç
    G/Ç
    G/Ç
    G/Ç
    G/Ç
    G/Ç
    G/Ç

    G/Ç


    TTL/ST(1)
    TTL
    TTL
    TTL
    TTL
    TTL
    TTL/ST(2)
    TTL/ST(2) PORTB iki yönlü bir giriş çıkış
    bağlacıdır.
    Yazılım aracılığıyla bütün girişlerdeki
    ‘weak pull-up’lar devreye sokulabilir.
    Bu bacak dış kesme girişi olarak
    ayarlanabilir.
    Değişimle kesme yaratma özelliği
    vardır.
    Değişimle kesme yaratma özelliği
    vardır.
    Değişimle kesme yaratma özelliği
    vardır.
    Seri programlamada saat girişi.
    Değişimle kesme yaratma özelliği
    vardır.
    Seri programlamada veri girişi.
    VSS 5 Güç - Mantık ve G/Ç bacakları için toprak
    referansı girişi.
    VDD 14 Güç - Mantık ve G/Ç bacakları için pozitif
    voltaj kaynağı girişi.
    G=Giriş - = Kullanılmıyor
    Ç=Çıkış TTL = TTL tipi giriş ST=Schmitt Trigger giriş
    (1)Bu tampon dış kesme girişi olarak ayarlandığında Schmitt Trigger tipi çalışır.
    (2)Bu tampon seri programlama modunda Schmitt Trigger tipi çalışır.
    (3)Bu tampon RC titreştirici modunda Schmitt Trigger, diğer durumlarda CMOS tipi çalışır.

    2.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.

    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.


    2.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.

    2.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.

    2.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.

    2.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.




    2.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 de 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).




    2.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.


    2.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.

    2.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


    2.9.2 ÖZEL FONKSİYON KAYITLARI

    Özel fonksiyon 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.

    2.10.1 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.

    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.

    2.10.2 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.

    2.10.3 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.

    2.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.

    2.11.1 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.

    2.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.

    2.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..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.

    2.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.


    2.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.

    2.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.

    2.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.

    2.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 yazı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.

    2.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)

    2.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.

    2.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 yazım başarısızlığı ”1” olarak yazılan, fakat geriye “0” olarak okunan bitten kaynaklanmaktadır.

    2.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.

    2.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 belleği diğeri ise EEPROM veri belleği içindir.

    2.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.

    2.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
    • Devre içi seri programlama
    PIC16C84’ te yalnızca konfigrasyon bitleri tarafından kapatılabilen Watchdog Timer mevcuttur. Güvenliği arttırmak için bu kendi RC osilatörünü de çalıştırmaktadır. Yüksek güçte gereken esas gecikmeleri sağlayan 2 Timer mevcuttur. Bunlardan birisi Osilatör Başlangıç Timer ‘ıdır. Bu timer , kristal osilatör durgunlaşıncaya kadar çipi resette tutar. Diğer timer ise yalnızca nominal yüksek güçte 72 ms sabit gecikme üreten Yüksek Güç Timer’ ıdır. Bu güç kaynağı stabilize olurken aygıtı resette tutar. Bu iki çip üzeri Timer ile , uygulamaların çoğu hiçbir reset devrelerini gerektirmemektedir. SLEEP modu çok düşük enerjili alçak güç modunu sunmaktadır. Kullanıcı SLEEP ten çıkmak için dış reset, Watchdog Timer zaman aralığı veya kesmeleri kullanabilir. Bazı osilatör seçenekleri, kısımları uygulamaya yerleştirmek için elde edilmektedir. RC osilatör seçeneği sistem maliyetini, LP kristal seçeneği ise güç sarfiyatını düşürmektedir. Çeşitli seçenekleri seçmek için konfigürasyon bitler seti kullanılmaktadır.

    2.15.1 KONFİGÜRASYON BİTLERİ

    Konfigürasyon bitleri çeşitli aygıt konfigürasyonlarını seçmek için programlanabilir( ‘0’ olarak okur) yada programlamadan bırakılabilir. (‘1’ olarak okur) Bu bitler 2007h program bellek yerleşiminde saklanır. 2007h adresi kullanıcı program bellek uzayının ötesindedir ve özel test/konfigürasyon bellek uzayına (2000h- 3FFFh) aittir. Bu uzay yalnızca programlama sürecinde erişilebilirdir.

    2.16 OSİLATÖR KONFİGRASYONLARI

    2.16.1 OSİLATÖR TİPLERİ

    PIC16CXX mikrolarında 4 çeşit osilatör tipi bulunmaktadır. Kullanıcı bu 4 moddan birini seçerek iki konfigürasyon bitini (FOSC1 ve FOSC2) programlayabilir. Bu modlar;
    • LP Kristal veya seramik rezonatör-asgari akım - 40Khz
    • XT Kristal veya seramik rezonatör- genel amaçlı - 4Mhz
    • HS Kristal veya seramik rezonatör- yüksek hız - 20 Mhz
    • RC Direnç/ Kapasitör zaman sabitli - düşük maliyet - 4Mhz

    2.16.1.1 Kristal Osilatör / Seramik Rezonatör

    XT, LP ve HS modları, kristal veya seramik rezonatörlerin, OSC1/CLKIN ve OSC2/CLKOUT pinlerine bağlanmalarıyla kurulur. PIC16C84’ te osilatör dizaynı paralel kesim kristali kullanmayı gerektirir. Kesim kristallerinin seri bağlanması ile, kristallerin üzerindeki frekans değerlerinden farklı bir frekans değeri oluşabilir. XT, LP ve HS modlarında OSC1/CLK1 dışardan sürülebilir.
    Ambalaj öncesi osilatör TTL girişli basit osilatör devresi kurulabilir. Ambalaj öncesi osilatör geniş işlem alanı ve ve stabilize sunmaktadır. İyi tasarlanmış kristal osilatör TTL girişleri ile iyi performans sağlayacaktır. İki tip kristal osilatör devresi mevcuttur. Birisi seri rezonanslı ve diğeri de paralel rezonanslı osilatördür.


    2.16.1.2 RC OSİLATÖRÜ

    Zamanlamaya duyarsız uygulamalar için RC osilatörü ilave maliyet azaltımını sunmaktadır. RC osilatör frekansı, voltaj arzının, direnç (Rext) değerinin, kondansatör (Cext) değerinin, çalışma ısı derecesi değerinin bir fonksiyonudur. Bunlara ilave olarak osilatör frekansı normal sürecin parametre değişikliği nedeniyle birimden birime değişebilmektedir. Bunun ötesinde ambalaj tipindeki şekil kapasitansındaki farklılıkları da, özellikle düşük Cext değerlerinde, osilatörün frekansını etkileyebilmektedir. Kullanıcı dış R ve C elemanlarının toleransı nedeniyle meydana gelen değişiklikleri de dikkate almaktadır. Şekil 2.20 de RC kombinasyonunun PIC16C84'e nasıl bağlandığı görülmektedir. Rext < 2.2KW için, osilatör işlemi kararsız hale gelebilir hatta tamamıyla durabilir. Çok yüksek Rext değerleri için (yani 1 MW) osilatör, gürültüye, rutubete ve sızmalara karşı duyarlı hale gelir. Bunun için Rext değeri 3W ile 100W arasında tutulmalıdır. Osilatörün hiçbir dış kondansatörü olmaksızın çalışmasına rağmen (Cext=0pf) , gürültü ve kararsızlık nedenleri ile 20pf'ın üzerindeki değerlerin kullanılması yerinde olur. Çok düşük kapasitans veya hiç kapasitans olmadan, osilatör frekansı , devredeki kaçak kapasitans gibi dış kapasitanslardaki değişmeler nedeniyle önemli ölçüde değişebilmektedir. Frekastaki değişme yüksek R değerleri (çünkü gerilim sızıntı değişmeleri R den daha büyük değerde RC frekansını etkileyecektir.) ve düşük C değerlerinin etkisi ile artar( çünkü giriş kondansatörü değişmeleri RC frekansında daha büyük etkiye sahiptir ). OSC2/CLKOUT pininde 4 ile bölünen ösilatör frekansı mevcuttur ve bu frekans, sürücüleri test etmek için yada diğer lojikleri test etmek için kullanılabilir.
    Not : Osilatör RC modunda iken, OSC1 pini dış saat devresi ile sürülmemelidir. Aksi taktirde micro kararsız çalışır.

    2.17 RESET DURUMLARI
    Mikroişlemcili/ Mikrokonrolcü sistemlerde reset devreleri aşağıda sıralanan nedenlerden ötürü önemlidir:
    • Program sayacı, I/O ve kontrol yazmaçları gibi belirli yazmaçlar için bilinen bir durumun varlığından emin olunmasını sağlar.
    • Saatin, doğru frekansa yerleşmesi için yeterli zamanın verilmesine yardımcı olur.
    • Şebeke geriliminde bir sorun varsa, mikronun düzgün olarak yeniden başlayacağından emin olunmasını sağlar.
    PIC dahili Power-on reset devrelerine sahiptir. Eğer PIC’ i besleyen güç kaynağı, 0.05V/ms den daha büyük bir oranda artarsa, dahili reset devreleri yeterli olacaktır. ( Kaynak geriliminin 0V’ tan 5V'a kadar artması için gereken süre 100 ms’den küçük olmalıdır.)
    Bazı düşük frekanslı kristal osilatörler , çalışmak için 18ms’ den fazlasını gereksinirler. Bu durumda ve güç kaynağının yükselmesinin 100 ms'den uzun sürdüğü durumlarda, harici bir RC devresi gerekebilir. Şebeke geriliminin inişli çıkışlı olabileceği veya gerilim düşüklüğü olasılığı bulunan uygulamalarda , gerilim düşüklüğü durumunu temiz bir reset'in izleyeceğinden emin olmak için extra reset devreleri eklenmesi gerekebilir.
    Gerek besleme gerekse saat devrelerinde olduğu gibi, PIC reset devresi de bazı kurallar göz önünde bulundurulduğunda oldukça basittir. _MCLR ayağı, besleme gerilimi kararlı bir duruma gelinceye kadar düşük seviyede tutulmalıdır. Burada önemli olan nokta, devreye enerji verilmesi ve diğer reset durumlarında (_MCLR reset, uyanma – SLEEP modundan kalkma, - Watcdog zamanlayıcısı süre aşımı gibi) PIC’ in hangi adresten başlayarak işlem yapacağıdır. Örneğin 16C54’ ün üyesi olduğu 16C5X ailesi PIC'lerin ilk işlem yaptığı adres, adres haritasının en sonudur. ( 0x01FF) . Bu durumda PIC’ in ilk uygulayacağı komut, her zaman bir sıçrama komutu olacaktır. Eğer bu adrese (0x01FF) NOP (No Operation) gibi bir komut yazılırsa program sayacı bir saat çevrimlik sürede bu komutu çalıştırır ve en başa yani program komutlarının yazıldığı adrese döner.
    16CXX ve diğer yüksek seviyeli PIC’ ler de ise reset adresi her zaman 0'dır. Dolayısıyla PIC’ in ilk gerçekleştirdiği komut da bu adresteki komut olmaktadır. Eğer Kesme (interrupt) vektörü kullanılıyorsa , buna yönelik kod , bu adrese konulamaz, çünkü Kesme vektör adresi 0x04 ten başlamaktadır. Kesme kullanıldığında, program sayacının, Kesme sonrası reset adresine değilde, Kesilme vektörünün bulunduğu adrese yönlendirilmesi gerektiği unutulmamalıdır.
    2.17.1 GÜÇ KAYNAĞI RESETİ (POR)
    Etkin güç kaynağı palsi , Vdd artışı fark edidiğinde çip üzerinde yaratılmaktadır. (1.2V-1.7V aralığında) . POR'un avantajlarından yararlanabilmek için , MCLR pininin direkt olarak 1 yada direnç üzerinden Vdd ye bağlanması yeterlidir. Bu genellikle etkin güç kaynağı reseti yaratmak için gereken dış RC elemanlarını kaldıracaktır. Tam çalışması için Vdd nin minimum artış zamanı karşılanmalıdır. Mikrokontroller normal işlemi başlattığında (reset durumundan çıktığında) işlemin temin edilebilmesi için çalışma parametreleri (voltaj ,frekans, sıcaklık) karşılanmalıdır. Eğer bu koşullar yaratılmadıysa, aygıt çalışma koşulları yaratılıncaya kadar resette tutulmalıdır.
    Vdd düşerken POR devresi içten reset üretmeyecektir.
    2.17.2 YÜKSEK GÜÇ KAYNAĞI ZAMANLAYICISI (PWRT)
    Yüksek güç kaynağı timer’ ı (PWRT) , POR dan sabit 72 ms nominal zaman aralığı sağlamaktadır. Yüksek güç kaynağı timer'ı iç RC osilatörü üzerinde çalışmaktadır. Çip, PWRT nin aktif tutulduğu kadar resette tutulur. PWRT gecikmesi, Vdd nin kabul edilebilir seviyeye yükselmesine olanak vermektedir.
    PWRTE konfigrasyon biti, PWRT’ yi etkinleştirebilir/etkinsizleştirebilir. Yüksek güç kaynağı zaman gecikmesi (Tpwrt) Vdd, ısı derecesi ve süreç değişiklikleri nedeniyle çipten çipe farklılık gösterir.
    2.17.3 OSİLATÖR BAŞLANGIÇ ZAMANLAYICISI (TİMER) (OST)
    Osilatör başlangıç Timer’ ı (OST), PWRT gecikmesi sonlandıktan sonra 1024 osilatör cycle gecikmesi (OSC1 girişinden) sağlamaktadır. Bu kristal osilatör veya rezonatörün başlandığını ve stabilize olmasını temin eder.
    OST zaman aralığı (Tost) yalnızca XT, LP ve HS modlarında açıktır ve etkin güç kaynağı reset veya SLEEP’ ten çıkış üzerindedir. Vdd çok yavaş arttığında, Tpwrt zaman aralığı ve Tost zaman aralığı Vdd nihai değerine ulaşmadan önce sona ermektedir. Bu durumda, dış etkin güç kaynağı reset devresi gerekli olabilir.
    Dış etkin güç kaynağı reset devresi, yalnızca, eğer Vdd oranıda düşük ise geçerlidir. D diyodu Vdd güç kaynağı azaldığında, kondansatörün çabuk deşarj olmasana yardım eder.

    R boyunca voltaj geriliminin 0.2 voltu aşmadığından emin olmak için R'nin 40W dan küçük olması gerekir. (MCLR pini üzerindeki maximum sızıntı akımı 5mA dir.) Daha yüksek voltaj gerilimi, MCLR pini üzerinde VIH düzeyini arttıracaktır.
    MCLR pininin ESD veya EDS nedeniyle durması olayında C dış kondansatöründen MCLR ye herhangi bir akım akmasını sınırlar.
    2.17.4 SERİ ZAMAN ARALIKLARI VE GÜÇ KAYNAĞI
    DÜŞÜRME STATU BİTİ(TO/PD)
    Güç kaynağı yükselmesinde seri zaman aralıkları şöyledir. İlk PWRT zaman aralığı , POR’ un sona ermesiyle gelmektedir. Bu taktirde OST aktiftir. Toplam zaman aralığı osilatörün konfigürasyonu ve Bit Status’ un PWRTE konfigürasyonuna bağlıdır. Örneğin etkinsiz PWRT’ li RC modunda, tümünde hiçbir zaman aralığı olmayacaktır.

    Zaman POR reset palsinden meydana geldiği sürece, eğer MCLR yeterli derecede düşük tutulursa, zaman aralığı sona erecektir. Daha sonra MCLR yüksek düzeye getirlirse, çalışma hemen başlayacaktır. Amaçları test etmek veya paralel çalışan PIC16CXX mikrolarını senkronize etmek çok yararlı olacaktır.

    2.17.5 BROWN – OUT ÜZERİNE RESETBrown – out:

    Aygıt güç kaynağının kendi beslemesinin minimum değerinin altına inmesi (fakat sıfır düzeyine değil) ve düzelmesidir. Aygıt brown-out durumunda reset edilmelidir. Brow-out durumunun meydana gelmesinde, PIC16C84 aygıtının reset edilmesi için dış brown – out devresi kurulabilir.

    2.18 KESMELER : (INTERRUPT)

    Kesmeler, bir başka fonksiyonun gerçekleştirilmesi için programın normal akışını değiştirmede kullanılır. (Örneğin bir veri iletişimi sisteminde bir mesaj alınınca veri aktarımını durdurmak için) Kesmeler iki ayrı tip formda bulunurlar. Yazılım ve donanım. Yazılım kesmeleri mikrokontrolcünün yerleşik kesme kapasitesi bulunmadığı durumlarda kullanılır. Öte yandan donanım kesmeleri, mikrokontrolcüye yerleştirilmiş tüm kontrol mekanizmalarına sahiptir. Bir yazılım kesmesi, tüm yazmaçların statüsünden haberdar olma olanağı verdiğinden donanım kesmelerine göre daha avantajlıdır. Ancak port kullanılmadığında kesme yalnızca dış dünyaya erişebilir hale gelecektir. Öte yandan donanım kesmeleri, hızla hareket edebilirler.

    2.18.1 YAZILIM KESMELERİ:

    PIC 16CXX ailesi donanım kesme özelliğine sahip değildir ve yazılım kesmesi kullanmak zorundadır.

    2.18.1.1 Kesmeyle çalışan yazılımlar :
    16CXX mikroları yerleşik kesmelere sahiptir ama yazılım kesmelerini kullanarak ta çalışabilirler.
    Kesme, harici olayların normal yazılım akışını kesebilmesine izin verdiğinden mikroişlemciler için çok faydalı bir özelliktir. Bu, belirli bir amaç için bir kodun çalıştırılmasına yol açar. Örneğin iletişim yazılımlarında girdi pininden bir kesme yazılımın gelen verinin kodunu çözmesine neden olur.
    Donanım kesmeleri, harici veya dahili bir olay gerçekleştiğinde programın kodun başka bir kısmına atlamasına neden olacak şekilde ayarlanabilirler. 16C71 mikrosunda kesmeler 4 kaynaktan seçilebilir. Bunlar;
    Bir A/D dönüşüm tamamlanması
    PORTB bit 0’ dan harici bir kesme
    PORTB 4-7 bitlerinin durumlarında bir değişim
    RTCC’ nin FFH’ tan 00H’ a taşması
    16C84 A/D dönüşüm tamamlanması yerine bir EEPROM yazım tamamlama kesmesine sahiptir. Bu gereklidir çünkü, EEPROM yazım süresi 10ms’ dir.( Bu da bir program EEPROM yazımının tamamlanmasını bekliyorsa harcanan bir yığın çevrim demektir.)
    Yukarıdakilerden herhangi biri ana yazılım akışında bir kesmeye neden olabilir. Aynı anda yalnızca bir kesme idare edilebilir, çünkü ilk kesme GIE bit’ ini silerek ek kesme hareketlerine engel olur. Bir kesme esnasında bir başka kesme meydana gelirse, bu ancak kesme bayraklarını, kesme rutininin sonunda başka değişimlerin olup olmadığını incelerken ve RETFIE komutunu uygulamadan önce belli olur. Bir değişiklik varsa, yazılım, kesme tipinin belirlendiği kesme girme noktasına döndürülebilir.
    Bir kesme gerçekleştiğinde ( bu her zaman olabilir), STATUS ve W yazmaçlarının içeriğini kaydetmek akıllıca olur. Böylelikle değerler, kesmeden sonra yeniden depolanabilir. Bu, özellikle bir LCD görüntüleme rutini esnasında gerçekleştiğinde gözle görülebilir bir hal alır. Yazılım kesmesinin sonucu W yazmacının içeriğini değiştirebilir ve RETFIE çalıştırıldıktan sonra görüntülenen bilgiyi bozabilir.
    Bir kesme idarecisine girmeden önce, bir tek geçerli kesmenin mi yoksa olası birkaç kesmenin mi söz konusu olduğunu bilmek önemlidir. Eğer birkaç kesme söz konusuysa önce hangisiyle ilgilenilmesi gerektiğini de bilmek gerekir. Bu, INTCON ve diğer yazmaçlardaki kesme bayrakları test edilerek ve buna göre davranılarak kolayca gerçekleştirilebilir.
    Not: Bir kesme oluşmadan önce, ayrı kesme sağlayıcı bitlerin INTCON yazmacındaki GIE (Global Interrupt Enable) bitiyle birlikte ayarlanması gerekir.
    PIC16C84’ te 4 çeşit Kesme mevcuttur. Bunlar;
    • Dışsal RBO/INT pini Kesmesi
    • TMRO akım fazlası Kesmesi
    • PORTB değişim Kesmesi
    • EEPROM yazım bütünü Kesmesi

    2.18.1.2 Kesme Kontrol Kaydı (INTCON):

    Sinyal birimindeki bireysel Kesme taleplerini kaydeder. Bunun yanı sıra bu kayıt, bireysel veya global kısmi Kesmelerini içerir.

    2.18.1.3 Global kesme biti GIE (INTCON <7>):

    Bu bit eğer kuruluysa, tüm gizli olmayan kesmelere yol açar veya (silikse) tüm kesmeleri etkisizleştirir. Bireysel Kesmeler, onların INTCON kaydındaki uygun aktif bitleri aracılığıyla etkisizleştirebilir. GIE biti resette temizlenir.
    'Kesmeden dönüm' komutu RETFIE, Kesmeleri yeniden aktif hale getiren GIE’ nin kurulduğu kadar, Kesme programından çıkış yapar.
    RBO/INT Kesme pini , RB port değişim Kesmesi ve TMRO fazla akım Kesme sinyali INTCON kaydında içerilmektedir.
    Kesme oluştuğu zaman; GIE biti herhangi bir ilave Kesmeyi etkinsizleştirmek için silinir, dönüş adresi yığına aktarılır ve PC 0004h ile yüklenir. RBO/INT pini veya PORTB değişim Kesmesi gibi dışsal Kesme durumları için Kesme devir süresi komut devirlerinin dörtte üçü kadar olacaktır. Tam devir süresi Kesme durumunun ortaya çıkmasına bağlıdır. Devir süresi hem bir hem de iki komut devri için aynıdır. Bir kere Kesme servis programında, Kesmenin kaynağı Kesme sinyal birimlerini sayarak belirlenebilir. Sonsuz Kesme taleplerini önlemek için, Kesmeleri yeniden aktifleştirmeden önce, Kesme sinyal birimleri yazılımdan silinmelidir.
    Not 1: Kesme sinyal birimleri , kendilerinin bağlı oldukları gizli bit veya GIE bit statüsüne bakmadan kurulmaktadır.
    Not 2 : Global Kesme biti silinmiş olduğu sürece Kesme meydana gelirse, GIE istemeyerek Kesme Servis Programı tarafından yeniden aktif hale getirilebilir. (RETFIE komutu). Bu olayın meydana gelmesine neden olanlar:
    1 . Kesme onaylandığında komut, GIE bitini siler.
    2 . Program Kesme vektörüne ayrılır ve Kesme Servis Programı çalıştırılır.
    3 . Kesme Servis Programı RETFIE komutunun çalıştırılmasıyla tamamlanır.
    Bu da GIE bitinin kurulmasına neden olur ve program, Kesmeleri etkinsizleştiren komutlardan sonraki yere dallanır.
    Kesmeleri global olarak etkisizleştirmenin bir yöntemi:
    GIE biti aşağıda gösterilen kodlarda görüldüğü gibi komut tarafından silinmesini temin etmelidir.
    LOOP BCF INTCON, GIE ;
    Tüm Kesmeler etkinsizleştirilsin.
    BTFSC INTCON, GIE ; Tüm Kesmeler etkinsizleştirilsin mi?
    GOTO LOOP ; Hayır yeniden dene.
    ; Evet programın akışıyla devem et.
    2.18.1.4 Int Kesmeleri
    RBO/INT deki dış Kesmelerin sınırları trigger edilmiştir. Bu sınırlar eğer INTEDG biti kuruluysa (seçenek Reg<6>) yükselmekte veya azalmaktadır, eğer INTENDG silinmiş ise RBO/INT pini üzerinde geçerli sınır ortaya çıktığı zaman, INTF biti (INTCON<1>) kuruludur. Bu Kesme INTE bitinin (INTCON ccp) kontrolünün temizlenmesi ile etkisizleştirilebilir.
    INTF sinyal biti, bu Kesmenin yeniden aktifleştirilmesinden önce, Kesme Servis Programı tarafından yazılımdan silinmelidir. INT Kesmesi işlemciyi ilk başta, SLEEP’ e gidilecek şekilde kurulduğu taktirde SLEEP ten çıkarılabilir. GIE biti statüsü, işlemcinin SLEEP ten çıkışı takip eden Kesme vektörüne ayrılıp ayrılmayacağına karar verir.
    2.18.1.5 TMRO Kesmeleri
    TMRO’ da ki taşma (ffh à00h) TOIF (INTCON<2>) sinyal bitini kuracaktır. Kesme aktif TOI E bitinin (INTCON<3>) kurulması/silinmesi ile etkinleştirilebilir /etkinsizleştirilebilir.
    NOT : Eğer I/O pinindeki değişme, PORTB'nin okuma işlemi çalıştırıldığı zaman ortaya çıkarsa (Q2 cycle’ ının başlaması), RBIF Kesme sinyal biti kurulmayabilir.
    2.18.2 KESME BOYUNCA CONTEXT KAYDETME
    Kesme boyunca , yalnızca PC dönüş değeri yığına kaydedilir. Tipik olarak , kullanıcılar, Kesme süresi boyunca anahtar kayıt değerlerini saklamak isterler. (yani W kaydı ve STATUS kaydı) bu yazılımda tamamlanmıştır.
    ÖRNEK 2.5: STATUS ve W kayıt değerlerini saklamakta ve restore etmektedir. Kullanıcı tarafından tanımlanan kayıtlarda, W ve STATUS kayıtları değerleri için geçici saklama yeridir.
    2.5 örneği şu işlemleri yapmaktadır.
    a) W kayıtlarını saklar.
    b) Status kayıtlarını STATUS TEMPE saklar
    c) Kesme Servis Programı Kodunu çalıştırır.
    d) STATUS kaydını ( ve küme seçme bitini kontrol eder.) restore eder.
    e) W kaydını restore eder.





    Aşağıda PIC16C8X Ailesine ait ürünler görülmektedir.







    3. PIC’ İN KULLANIMI İÇİN GEREKLİ AŞAMALAR :

    Amatör bir elektronikçi PIC16F84 ile Program geliştirmek için temel anlamda aşağıdaki ekipmana ihtiyaç duyacaktır:
    1. PIC16F84 veya PIC16C84
    2. MS-DOS tabanlı PC
    3. ASCII Editör (Örneğin Dos’un EDIT’I)
    4. MPASM Assembler
    5. Programlayıcı/silici
    6. Programlayıcı için yazılım

    ASCII Editör olarak herhangi bir ASCII editor kullanılabilir (DOS’un içinde gelen EDIT gibi) Bir PIC programı assemblerda "COMPILE" işlemi yapılmadan evvel editorde program olarak yazılır ve saklanır. Bu text programın sonu mutlaka. ASM olmalıdır. MPASM Microhip tarafindan yazIlmış bir PIC assembler programıdır. Bu program tüm pic ailesini kapsar. MPASM ‘in hem Windows altında çalışan hem de dos altında çalışan versiyonları bulunmaktadır. Programlama devresi bir adet DB9 dişi Konnektör ve üç adet dirençten oluşmaktadır. Bu devre çok basit olup PC ‘nin COM portunu kullanır. Devrenin gerçekleştirilmesi aynı zamanda minimum bir PIC Sistemi yapılmasını gerektirir. Bir PIC İşlemcisinin çalişması için bir adet kristal, 2 adet direnç, 3 adet kondansatör ve 14 nolu bacağa +5Volt nolu bacağa toprak vermek yeterlidir. Geri kalan bacaklar giriş ve çıkış portlarıdır.

    Yukarıda özet şeklinde belirtilen , PIC16F84 ile Program geliştirmek için gereken ekipmanları aşağıdaki gibi detaylandırmak mümkün:

    3.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.

    3.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.

    3.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.

    3.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.

    3.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.

    3.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.

    3.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.

    3.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.

    3.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.





    4. BİR UYGULAMA: 10-MOD,SEÇİMLİ İLERİ-GERİ SAYICI

    Programın Amacı: Temel anlamda PIC Programlama’nın öğrenilmesi.

    Programın Oluşumu Süresince KullanılanYazılımlar:

    Metin Editörü : NotPad
    Derleyici : MPLAB

    * Yazılan program PIC programlayıcı ile PIC 16F84’e aktarılmıştır.

    Programı gerçekleyecek devrenin oluşturulmasında kullanılan devre elemanları:

    İyot ( 1 N 4007 ) : Pil ters bağlandığında devrenin zarar görmesini engelliyor.
    Regülatör : 9 Voltluk gerilimi 5 volta düşürmeye yarıyor.
    Buton : Sayacın ileri geri saymasını sağlamak için kullanılan elemanlar
    PIC (16F84) : Pic programının çalışması için kullanılan eleman
    Display : Program sonucu görmek için kullandığımız eleman
    Kondansatör (100 nF )
    Kristal (OSC 4 Mhz)
    Direnç
    Pil ( 9 voltluk )

    Program Kaynak Kodu: Seçilen butona gore, [0-9] aralığında ileri veya geri sayan programa ait kaynak kod aşağıdaki gibidir:

    ;*****************************************************
    LIST P=16C84
    INCLUDE <P16C84.INC>

    __CONFIG _XT_OSC&_WDT_OFF&_PWRTE_ON&_CP_OFF

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısımda display deki değeri artırmaya ve eksiltmeye yarayan butonların
    ;tanımları yapılmıştır.Programda P16F84 entegresinin girişlerinin(Port A) iki biti
    ;kullanılmıştır. A Portunun 2. ve 3. bitleri, butonların girişi olarak kullanılmıştır.
    ;/////////////////////////////////////////////////////////////////////////////

    #DEFINE BUTON_ARTI PORTA,2
    #DEFINE BUTON_EKSI PORTA,3

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısımda clock ayarı yapılmıştır.
    ;/////////////////////////////////////////////////////////////////////////////

    CBLOCK 0X020

    SAYAC
    TABLO_TEMP

    ENDC

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısım, program başladığında ve programa interrupt geldiğinde aktif olur.
    ;/////////////////////////////////////////////////////////////////////////////

    ORG 0X000
    GOTO START
    ;**********************************
    ORG 0X004
    GOTO START

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısımda, programın başlaması için gereken ayarlar yapılmaktadır.
    ;///////////////////////////////////////////////////////////////////////////

    START
    ;****************************************
    BSF STATUS,RP0

    MOVLW B'00001100'
    MOVWF TRISA ; PORTA

    MOVLW B'00000000'
    MOVWF TRISB ; PORTB

    BCF STATUS,RP0

    CLRF PORTA
    CLRF PORTB
    CLRF SAYAC

    MOVF SAYAC,W
    CALL TABLO
    MOVWF PORTB

    GOTO MAIN

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısım displaye gönderilecek olan sayının formatının belirlendiği alt programdır.
    ;///////////////////////////////////////////////////////////////////////////

    TABLO
    MOVWF TABLO_TEMP
    MOVLW D'246'
    ADDWF TABLO_TEMP,W
    BTFSC STATUS,C
    RETLW B'01000000'
    MOVFW TABLO_TEMP
    ADDWF PCL,F
    ; ; .GFEDCBA
    RETLW B'00111111' ; 0 0
    RETLW B'00000110' ; 1 1
    RETLW B'01011011' ; 2 2
    RETLW B'01001111' ; 3 3
    RETLW B'01100110' ; 4 4
    RETLW B'01101101' ; 5 5
    RETLW B'01111101' ; 6 6
    RETLW B'00000111' ; 7 7
    RETLW B'01111111' ; 8 8
    RETLW B'01101111' ; 9 9

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu bölüm programın ana kısmıdır. Burada ilk olarak buton kontrolü yapılmaktadır.
    ;Basılan butona(buton_artı,buton_eksi) göre ilgili alt programa dallanılır.
    ;///////////////////////////////////////////////////////////////////////////

    MAIN
    BTFSC BUTON_ARTI
    GOTO ARTIR
    BTFSC BUTON_EKSI
    GOTO AZALT
    GOTO MAIN

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısım artı butonuna basıldığında olacak olaylar için kullanılmaktadır. Her artı
    ;butonuna basıldığında bu alt programa dallanılır. 9'dan 0'a geçişte bir kontrol yapılmaktadır.
    ;///////////////////////////////////////////////////////////////////////////

    ARTIR
    INCF SAYAC,F
    MOVLW D'246'
    ADDWF SAYAC,W
    BTFSC STATUS,C
    CLRF SAYAC

    MOVF SAYAC,W
    CALL TABLO
    MOVWF PORTB

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısım, artı buton basılı kaldığı sürece saymanın devam etmesini önlemek için
    ;kullanılmaktadır.Yani her sayma, butona basılıp bırakılmasıyla tetiklenir.
    ;///////////////////////////////////////////////////////////////////////////

    BEKLE_ARTIR
    BTFSC BUTON_ARTI
    GOTO BEKLE_ARTIR
    GOTO MAIN

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısım eksi butonuna basıldığında olacak olaylar için kullanılmaktadır. Her eksi
    ;butonuna basıldığında bu alt programa dallanılır. 0'dan 9'a geçişte bir kontrol yapılmaktadır.
    ;///////////////////////////////////////////////////////////////////////////

    AZALT
    DECF SAYAC,F

    MOVLW D'255'
    XORWF SAYAC,W
    BTFSS STATUS,Z
    GOTO AZALT1
    MOVLW D'9'
    MOVWF SAYAC
    AZALT1
    MOVF SAYAC,W
    CALL TABLO
    MOVWF PORTB

    ;/////////////////////////////////////////////////////////////////////////////
    ;Bu kısım, eksi buton basılı kaldığı sürece saymanın devam etmesini önlemek için
    ;kullanılmaktadır.Yani her sayma, butona basılıp bırakılmasıyla tetiklenir
    ;///////////////////////////////////////////////////////////////////////////

    BEKLE_AZALT
    BTFSC BUTON_EKSI
    GOTO BEKLE_AZALT
    GOTO MAIN
    ;*********************************
    END

    Uygulamaya ait devre şeması aşağıdaki gibidir:














    SONUÇ:

    Yapılan bu çalışma ile “PIC Nedir,Hangi alanlarda kullanılabilir? PIC programlama nedir ve nasıl yapılır?” sorularına cevap aranmıştır. Bu konuda yaptığımız araştırmaların ardından PIC programlamanın temel anlamda öğrenilebilmesi amacıyla bir örnek uygulama geliştirilmiştir. Belirlenen işlemi yerine getirecek program yazılmış ve bu programı yürütecek
    PIC 16F84’lü devre oluşturulmuştur.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.