Logo Background

Pic nedir? PIC ile ilgili Temel Kavramlar

  • Written by ElektronikElektronik İlk Yorumu Sen Yaz. Comments
    Last Updated: Eylül 13, 2009

    ’le İlgili Temel Kavramlar:

    pic16f84


    ve mikrodenetleyicilerin farkı: Mikroişlemciler hafıza veya giriş çıkış entegresi gibi çevre elemanlar ile birlikte aritmetik işlemler yapabilen, karar verebilen entegrelerdir. Mikrodenetleyici ise mikroişlemcinin yanısıra kendi program hafızası ve giriş çıkış özelliklerini içinde barındıran entegrelerdir. Bu özellikleri sayesinde yüklü bir programı uygulamaya dönüştürerek bir kontrol sistemi olarak kullanılabilir.
    Hafıza entegresi çeşitleri: Hafıza entegreleri bilgilerin ve program parçalarının saklanmasına yarayan entegrelerdir. RAM (random memory) program çalıştığı sürece bilgilerin yazıldığı ve okunduğu, enerjinin kesilmesi durumunda içindeki tüm bilgiyi kaybeden bellek türüdür. (read only memory) sadece bir kez yüklenip sonra içindeki bilgiler silinip değiştirilemeyen, tekrar programlanamayan bellek türüdür. İçindeki bilgiler enerji kesintisinden etkilenmez. EPROM (erasable programmable read only memory) ’un mor ötesi ışık altında silinebilen bir alt türüdür. Silindikten sonra içine tekrar program yazılabilir ama ’da olduğu gibi enerji kesildiğinde içindeki bilgiler kaybolmaz. Uzun süre herhangi bir ışık altında kaldığında silindiği için, içindeki bilgileri korumak için ışık aldığı pencerenin üstünün kapalı tutulması gerekir. EEPROM (electrical eprom) EPROM’un ışıkla değil, elektrikle silinebilen türüdür. EEPROM’lar silme gerilimi verilmediği sürece silinmedikleri için mikrodenetleyiciler için ek bellek alanı olarak sıkça kullanılır.
    Program Memory: Program çalışırken kullanılacak kodun saklı tutulduğu hafıza alanı.
    Data Memory: Çalışma esnasında saklanması gereken verilerin tutullduğu bellek alanı.
    Akümülatör (W): Mikrodenetleyicide tüm aritmetik ve lojik işlemlerin gerçekleştirildiği bellek alanıdır.
    Register: Mikroişlemcinin değişik fonksiyonlarını kullanmak için gerekli özel tanımlı hafıza alanlarıdır. Bazıları sabit olup bazıları kullanıcılar tarafından değişken olarak kullanılabilirler.
    PC (Program counter): tarafından yürütülecek komutun adresini tutan özel tanımlı bir registerdır.
    (Periphal Interface ): Çevresel üniteleri denetleyici arabirim.
    Ailesinin Mimarisi
    mikroişlemcileri belirli özelliklere ve eklemelere dayalı olarak serilere ayrılmıştır. Bunlardan temel olan P16F84’ün pin yapısı ve genel mimarisi aşağıda verilmiştir.
    Pin Diyagramı:
    picstatus
    ’in MCLR bağlantısı reset ve anlarını normal çalışmadan ayırmaya yarar. ’in bu bacağına 5V verildiğinde , içindeki programı çalıştırma moduna girer. 13V verildiğinde içine yeni program yüklenmeye hazır hale gelir, toprağa bağlanırsa resetlenir. Vss bacağı toprak girişidir, Vdd bacağı 5V besleme girişidir.
    OSC1 ve OSC2 bacakları ’in çalışma frekansını belirleyen kristali veya RC osilatörünü bağlamak içindir. Kalan 13 bacak bilgi girişi ve çıkışı için kullanılabilen haberleşme bacaklarıdır. Bunların 8’i PortB 5’i PortA olarak ayrılmış ve RB0, RB4, RB5, RB6, RB7’ye kesme girişi özelliği, RA4’e ise zamanlayıcı için harici osilatör girişi özelliği eklenmiştir.
    Data Memory (Bellek) Planı:
    picdatamemory
    P16F84’ün data belleği Bank0 ve Bank1 olarak ikiye bölünmüştür. Bu iki bölümün de başında 11’er byte’lık sabit veri bölgeleri vardır. Bu bölgeler ’in çalışma sırasındaki kendi durumuyla ilgili bilgilerini içerdikleri için Specific Function Register (Özel İşlev Belleği) olarak adlandırılırlar. Data belleğinin kalan kısmı işlem sırasında kullanılacak değişkenlere ayrılmıştır. , enerji verildiği zaman standart olarak Bank0’ı işlem belleği olarak kullanır. Bank1’deki işlemleri ve değişken bölgesini kullanmak için öncelikle Bank1’e geçiş komutunu vermek gerekir. ’teki 8 bit veriyoluna sahiptir ve bu yüzden 255’ten büyük sayıları tek seferde işleyemez. Buna bağlı olarak data belleğindeki bilgi alanları 1 byte uzunluğundadır ve bilgi alanlarındaki bitler Bit0-Bit7 olarak adlandırılırlar. Bu byte’lar tabloda yanlarında görülen hexadecimal sayılarla adreslenirler ve sırasında bu sayılarla ifade edilebilirler. Bu byte’ların en önemlileri aşağıda anlatılacaktır.
    Status byte’ı: Bu byte’ın her iki bankta da bulunmasının nedeni bank seçiminin iki yönlü olmasıdır.
    Bit 0: Carry biti işlem sırasında sonucun 255’in (11111111b) üstüne çıkması durumlarında (taşma) otomatik olarak 1 olur.
    Bit 1: Digit Carry biti işlem sırasında sonucun 15’in (00001111b) üstüne çıkması durumlarında otomatik olarak 1 olur.
    Bit 2: Zero biti işlem sırasında sonucun 0 olması durumunda otomatik olarak 1 olur.
    Bit 3: Power-down biti ’e besleme voltajı geldiğinde otomatik olarak 1 olur, sistem uyku moduna girince 0 olur.
    Bit 4: Time-out biti sistemin kilitlenmesi nedeniyle resetleme olana kadar 1 kalır, olduğunda ise 0 olur.
    Bit 5: Data belleğinde Bank0-Bank1 seçiminin yapılmasını sağlar. 1 olduğunda Bank1, 0 olduğunda Bank0 seçilir.
    Bit 6: P16F877 gibi daha çok özelliğe sahip mikroişlemcilerde var olan Bank0, Bank1, Bank2 ve Bank3’ten hangisinin seçileceğini belirlemek için gereken Bit 5’ten sonraki ikinci binary sayıyı oluşturur. Sadece Bank0 ve Bank1’in bulunduğu mikrodenetleyicilerde sabit olarak 0’da kalır.
    Bit 7: Dolaylı adresleme için kullanılan bank seçme biti.
    PortA-PortB byte’ları:
    Bu byte’lar A ve B bacaklarına gelen bilgiyi görmek ve bu bacaklara bilgi yüklemek için kullanılır. Toplam 5 tane A bacağı olduğu için PortA byte’ının kalan üç bitinin değerinin önemi yoktur. Bu byte’lara verilen değerin binary karşılığı o bacaklardaki işareti belirler.
    Ör. PortA’ya 13 decimal değerini verdiğimizde 13’ün karşılığı olan 00001101 sayısı RA0, RA2 ve RA3 bacaklarını 5V’a çıkarır, kalan A bacaklarını 0V’a çeker.
    TrisA-TrisB byte’ları:
    Uygulama bakımından PortA ve PortB byte’larına benzeyen bu byte’lar A ve B bacaklarının giriş mi yoksa çıkış mı olarak kullanılacağını belirler. PortA byte’ında
    olduğu gibi TrisA’da da üst üç bitin değerinin önemi yoktur.
    Ör. PortA’ya 13 decimal değerini verdiğimizde 13’ün karşılığı olan 00001101 sayısı RA0, RA2 ve RA3 bacaklarını giriş bacağı, kalan A bacaklarını çıkış bacağı yapar.
    Option_Reg Byte’ı:
    Bit 0-2: Bu üç bit, timer (zamanlayıcı) kullanıldığında timer’ın kaç saat periyodunda bir içindeki sayıyı arttıracağını belirler. Aşağıdaki tabloda bu üç bite verilen değerler için zamanlayıcının (TMR0) ve sistemin kilitlenmesi nedeniyle resetleme için çalışan zamanlayıcının (WDT-Watchdog Timer) kaç saat periyodunda bir sayacağını gösteriliyor.
    picstatus
    Bit 3: (PSA – Prescaler Assignment bit) Çalışma sırasında hangi zamanlayıcının devrede olacağını belirler. 1 olduÄŸunda WDT, 0 olduÄŸunda TMR0 devreye girer.
    Bit 4: (T0SE – TMR0 Source Edge Select bit) RA4 dış osilatör giriÅŸi kullanıldığında TMR0’ın saat darbesinin hangi kenarında sayacağını belirler. 1 ise düşen kenar, 0 ise yükselen kenarda sayım gerçekleÅŸir.
    Bit 5: (T0CS – TMR0 Clock Source Select bit) Clock sinyalinin RA4 bacağından mı yoksa harici girişten mi alınacağına karar vermek için kullanılır. 1 yapıldığında RA4 bacağından 0 yapıldığında harici girişten sinyal alınacağını belirtir.
    Bit 6: (INTDEG – Interrupt Edge Select bit) Interrupt’ın hangi kenarda iÅŸleme konulacağını belirtir. 1 yapılırsa yükselen kenarda, 0 yapılırsa düşen kenarda interrupt devreye girecektir.
    pic
    Intcon Byte’ı:
    Bit 0: (RBIF – RB Port Change Interrupt Flag bit) RB 4, RB 5, RB 6 ve RB 7 ‘den herhangi birine kesim gelip gelmediğini gösteren flag bitidir. Eğer bunlardan herhangi birine kesim geldiyse bu bit otomatik olarak 1 olur.
    Bit 1: (INTF – RB0/INT Interrupt Flag bit) RB 0’a ait flag bitidir. RB 0’a kesim geldiğinde otomatik olarak 1 olur.
    Bit 2: (T0IF – TMR0 Overflow Interrupt flag bit) Timer’a ait flag bitidir. Timer’a girilen değerden başlayarak sayı 255’i geçtiğinde kesim zaman taşması kesmesi gelir ve TOIF otomatik olarak 1 olur.
    Bit 3: (RBIE – RB Port Change Interrupt Enable bit) RB 4, RB 5, RB 6, RB 7 kesme hattının kesim girişini açmak için kullanılır. 1 yapıldığında kesim girişine izin verildiğini, 0 yapıldığında ise izin verilmediğini gösterir.
    Bit 4: (INTE – RB0/INT Interrupt Enable bit) RB 0’a kesim girişi sağlamak için kullanılır. 1 yapıldığında interrupt girişine izin verildiğini, 0 yapıldığında izin verilmediğini gösterir.
    Bit 5: (T0IE – TMR0 Owerflow Interrupt Enable bit) Timer kesim girişini sağlamak için kullanılır. 1 yapıldığında kesim girişine izin verildiğini, 0 yapıldığında ise izin verilmediğini gösterir.
    Bit 7: (GIE – Global Interrupt Enable bit) Tüm kesim girişlerinin ilk kontrol bitidir. Herhangi bir interrupt’ı kullanmak için 1 yapılması şarttır, 0 yapıldığında hiçbir interrupt çalışmaz; ancak 1 olduğunda herhangi bir interrupt’ın devreye girmesi için RBIE, INTE veya T0IE’nin de 1 yapılması gerekir.