www.ELEKTROloji.com
Kategoriler
Son Konular
İnternetten Seçmeler
Rastgele Konu
Toplist ve Sayaç

Webseyir

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti

PIC16F877 Mikrodenetleyicisinin Türkçe DatasheetiÖnceki yazılarımızda Pic16fxxx serisi bazı enteglerin türkçe datasheetine yer vermiştir.Bu yazımızda da yine programcıların kapsamlı projelerinde sık sık kullanmış olduğu Pic16f877 mikrodenetleyicisinin Türkçe bilgilerine yer vereceğiz.

Önceki entegrelerin datasheetlerinde de olduğu gibi Pic16f877 entegresinin datasheeti özet olarak verilecektir.


Pic16f877 Mikrodenetleyicisinin Mimarisi


PIC 16F87X ve 16F8X serisi öncelikle, PIC 16CXX ailesinin özelliklerini taşır. PIC 16CXX’de Harvard mimarisi kullanılmıştır. Von Neuman mimarisinde, veri ve program belleğine aynı yoldan erişilebilirken, bu mimaride program belleği ve veri belleğine erişim farklı boylarda yapılır. Veri yolu (databus) 8 bit genişliğindedir. Aynı anda, veri belleğine 8 bit genişliğindeki bu yolla erişilirken, program belleğine program yolu ya da adres yolu (program bus / adress bus) denilen 14 bit genişliğindeki diğer bir yolla erişilir.

Bunun için PIC 16F87X ve PIC 16F84’de komut kodları (opcode), 14 bittir. 14 bitlik program belleğinin her bir adresi, bir komut koduna (Instruction Code / Instruction Word) karşılık gelir. Dolayısıyla her komuta bir çevrim süresinde (cycle) erişilir ve komut kaydedicisine yüklenir. Komut kaydedicisi, CPU tarafından kullanılan bir kaydedicidir ve dallanma komutları dışındaki bütün komutlar, aynı çevrim süresinde çalıştırılırlar. Bu sırada program sayacı, PC (Program Counter) bir artar. Dallanma ya da sapma komutları ise, iki ardışık periyotta çalıştırılır ve program sayacı PC, iki arttırılır.

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti


Merkezi işlem biriminin (CPU) en önemli alt birimlerinden biri, ALU (Aritmetik Logic Unit) olarak adlandırılan aritmetik mantık birimidir. ALU’nun görevi, kendisine yollanan veriler üzerinde, aritmetik ya da mantıksal işlemler yapmaktır. ALU’nun biri W (Working Register) ismi verilen kaydediciden olmak üzere, iki ana girişi vardır. ALU kendisine gelen iki veriyi (işleçler), toplayıp çıkarılabilir. Çeşitli mantık işlemleri yapabilir (and,or, xor gibi).

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti


Mikroişlemcilerde en çok kullanılan kaydedici, “working register”dır. Bu kısaca W olarak adlandırılır. W, aritmetik ve mantık işlemlerinde, iki işlevi bir arada yürütür. İşlemden önce, işlenenlerden birini barındırır. İşlemden sonra ise işlem sonucunu saklar, PIC 16F8X ve 16F87X serisi mikrodenetleyicilerde, komutun sonuna konan 1 veya 0 sayısıyla (d), sonucun W’de ya da başka bir kaydedicisinde tutulacağı mikroişlemciye bildirilir.

PIC 16F877 ve 16F876, 8 Kword büyüklüğünde belleğe sahiptir. Program belleği yonganın içerisindedir. PIC 16F84’ün belleği ise 1Kword büyüklüğündedir. PIC 16F84 ve 16F87X serisi mikrodenetleyiciler, kendi kaydedicilerini ve veri belleğini, doğrudan, dolaylı ve göreceli olarak adresleyebilirler.

Mikrodenetleyici ailesi aşağıdaki temel özellikleri taşır.
· CPU azaltılmış komut seti
· RISC temeline dayanır.
· Öğrenilecek 35 komut vardır ve her biri 14 bit uzunluktadır.
· Dallanma komutları iki çevrim (cycle) sürede, diğerleri ise bir çevrimlik sürede uygulanır.
· İşlem hızı 16F877’de DC20MHz’dir. (16F877’de bir komut DC200ns hızında çalışır.)
· Veri yolu (databus) 8 bittir.
· 32 adet SFR (Special Function Register) olarak adlandırılan özel işlem kaydedicisi vardır ve bunlar statik RAM üzerindedir.

· 8 Kword’e kadar artan flash belleği 1 milyon kez programlanabilir.
· 368 Byte’a kadar artan veri belleği (RAM),
· 256 Byte’a kadar artan EEPROM veri belleği vardır.
· Pin çıkışları PIC 16C73B/74B/76 ve 77 ile uyumludur.
· 14 kaynaktan kesme yapabilir.
· Yığın derinliği 8’dir.
· Doğrudan, dolaylı ve göreceli adresleme yapabilir.
· Poweron Reset (Enerji verildiğinde sistemi resetleme özelliği)
· Powerup Timer (Powerup zamanlayıcı)
· Osilatör Startup Timer (Osilatör başlatma zamanlayıcısı)
· Watchdog Timer (Özel tip zamanlayıcı), devre içi RC osilatör
· Programla kod güvenliğinin sağlanabilmesi özelliği
· Devre içi Debugger (Hata ayıklamakta kullanılabilecek modül)
· Düşük gerilimli programlama
· Flash ROM program belleği (EEPROM özellikli program belleği)
· Enerji tasarrufu sağlayan, uyku –Sleep Modu
· Seçimli osilatör özellikleri
· Düşük güçle, yüksek hızla erişilebilen, CMOSFlash EEPROM teknoloji
· Tümüyle statik tasarım
· 2 pinle programlanabilme özelliği
· yalnız 5V girişle, devre içi seri programlanabilme özelliği
· İşlemcinin program belleğine, okuma/yazma özelliği ile erişimi
· 2.0 V – 5.0 V arasında değişen geniş işletim aralığı
· 25 mA’lik kaynak akımı
· Devre içi, iki pin ile hata ayıklama özelliği
· Geniş sıcaklık aralığında çalışabilme özelliği
· Düşük güçle çalışabilme özelliği Çevresel özellikleri ise şöyle sıralanabilir:
· TMR0: 8 bitlik zamanlayıcı, 8 bit önbölücülü
· TMR1: Önbölücülü, 16 bit zamanlayıcı, uyuma modundayken dış kristal zamanlayıcıdan kontrolü arttırılabilir.

· TMR2: 8 bitlik zamanlayıcı, hem önbölücü hem de sonbölücü sabiti
· İki Capture / Compare / PWM modülü
· 10 bit çok kanallı A/D çevirici
· senkron seri port (SSP), SPI (Master mod) ve I 2 C (Master Slave) ile birlikte
· Paralel Slave Port, 8 bit genişlikte ve dış RD, WR, CS kontrolleri
· USART/SCI, 9 bit adres yakalamalı
· BOR Reset (Brown Out Reset) özelliği

PIC 16F84 ile PIC 16F87X mikrodenetleyici ailesinden farkları aşağıdaki tabloda görülmektedir.


PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti



I: Input (Giriş) O: Output (Çıkış) I/O: Input/Output (Giriş/Çıkış)

TTL: TTL Giriş :
Kullanılmıyor ST: Schimitt Trigger giriş olarak çalışır.

1. Bu buffer, dış kesme olarak düzenlendiğinde Schimitt Trigger giriş olarak çalışır.
2. Bu buffer, seri programlama modunda Schimitt Trigger giriş olarak çalışır.
3. Bu buffer, RC osilatör modunda ve CMOS devrelerinde Schimitt Trigger giriş olarak çalışır.

CPU ÖZEL FONKSİYONLARI (Konfigürasyon Bitleri)
Konfigürasyon tanımında, her yonganın kendi konfigürasyon sözcüğü (14 bitliktir) içindeki bitlerin (013.
bitler) nasıl kullanılacağı, program içinden seçilebilir. Konfigürasyon bitlerinde hiçbir değişiklik yapmadığınız takdirde, üretici tarafından belirlenmiş, ön koşullara bağımlı kalınır.

PIC 16F877’nin konfigürasyon bitleri, işlevleriyle aşağıda sayılmıştır.

· Poweron reset (POR)
· Powerup timer (PWRTE)
· Osilatör startup timer
· BOR (Brown Out Reset)
· Yonga içindeki bir RC osilatör devresi ile belirli bir frekansta çalışması denetlenen WDT (Watch Dog Timer) birimi
· Kesmeler
· Kod koruma güvenliği
· Id yerleşimleri
· Güç harcamasının azaltılması istendiği durumlar için uyku (sleep) modu
· İsteğe bağlı osilatör seçenekleri: RC / XT / HS / LS
· Devre içi seri programlama (iki pin ile seri olarak programlanabilme)
· Devre içi düşük gerilimle programlama
· Devre içi hata arayıcı (Debugger)

Aşağıda PIC 16f877 VE PIC 16f84’ün, program belleğinde 2007h adresindeki konfigürasyon sözcükleri, bit açılımı ve değerleri açıklanmaktadır.

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti


Bit 134: CP: Kod koruma biti
1= Kod koruması yok
0= Tüm program belleği üzerinde kod koruması var
Bit 3: PWRTE: Powerup zamanlayıcı biti
1= Powerup zamanlayıcı aktif
0= Powerup zamanlayıcı pasif
Bit 2: WDTE: Bekçi köpeği zamanlayıcısı (Watch dog timer) bit
1= Bekçi köpeği zamanlayıcısı aktif
0= Bekçi köpeği zamanlayıcısı pasif
Bit 10:
FOSC0FOSC1:
Osilatör seçme biti
11= RC osilatör seçildi
10= HS osilatör seçildi
01= XT osilatör seçildi
00= LP osilatör seçildi

PIC 16F87X ailesinin konfigürasyon sözcüğünün açılımı:

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti

Bit 1312
ve 54:
CP1, CP0: Flash program belleği kod koruma biti
11= Kod koruması yok
10= 1F00h – 1FFFh arası kod korumalı bölge
01= 1D00h – 1FFFh arası kod korumalı bölge
00= 0000h – 1FFFh arası kod korumalı bölge
Bit 11: DEBUG: Devre içi hata arama modu
1= Devre içi hata arama pasif
0= Devre içi hata arama aktif
Bit 10: Alan uygulanmadı, 1 olarak okunur.
Bit 9: WRT: Flash program belleğine yazma biti
1= Kod korumasız program belleğine EECON denetimi ile yazılabilir.
0= Kod korumasız program belleğine EECON denetimi ile yazılamaz.
Bit 8: CPD: Veri EE belleği koruma biti
1= Kod koruması yok
0= Kod korumalı
Bit 7: LVP: Düşük gerilim devre içi seri programlama biti
1= RB3/PGM pini PGM işlevlidir, düşük gerilimle programlanabilir.
0= RB3 sayısal I/O tanımlı, MCLR’ye programlama için yüksek gerilim
uygulanmalıdır.
Bit 6: BODEN: Gerilim alt ve üst limitleri aşarsa, programı yeniden başlatabilen
(Brown out Reset Enable) bit
1= BOR yeniden başlatma aktif (ON)
0= BOR yeniden başlatma pasif (OFF)
Bit 3: PWRTE: Powerup
zamanlayıcı biti
1= Powerup
zamanlayıcı aktif
0= Powerup
zamanlayıcı pasif
Bit2: WDTE: Bekçi köpeği zamanlayıcısı (Watch dog timer) biti
1= Bekçi köpeği zamanlayıcısı aktif
0= Bekçi köpeği zamanlayıcısı pasif
Bit 10:
FOSC1FOSC0:
Osilatör seçme biti
11= RC osilatör seçildi
10= HS osilatör seçildi
01= XT osilatör seçildi
00= LP osilatör seçildi

ZAMANLAMA VE KOMUT PERİYODU
16F87X ve 16F84 mikrokontrollerine OSC1 pininden gelen saat (clock) sinyali, yonga içinde dörde bölünür. Bunlara Q1, Q2, Q3, Q4 çevrimi denir. Program sayacı her Q1 çevriminde bir artar. Komut Q4 anında belleğe getirilerek, komut kaydedicisine (Instruction Register) yüklenir. Komut kodunun çözümlenmesi (decode) ve çalıştırılması (execute), izleyen Q1’den Q4’e dek olan sürede gerçekleşir.

Komutun işlenme aşamaları: İlk komut çevriminde işlenecek olan komut, program belleğindeki, komut kaydedicisine alınır. Bu komut çevrimin bitiminde, program sayacı bir arttırılır ve program sayacı artık bellekte bir sonra işlenecek komutu gösterir.

İkinci komut çevriminde ise bir önceki çevrimde, komut kaydedicisine aktarılmış olan komut, ayrıştırılır (decode). Böylece komut ile yapılacak işlem belirlenir (Q1). İşlenecek veri bellekten alınır (Q2), komut çalıştırılır (Q3) ve oluşan sonuç, gerekli adrese yazılır (Q4). Böylece komutun işlenmesi tamamlanır. Dallanma komutları kullanılmışsa, bu işlem için iki komut çevrimlik süre geçer. Çünkü ilk komut çevriminde dallanma komutu, diğer komutlar gibi program belleğinden alınır. Bu arada bir önceki komut da yürütülmektedir.

İkinci komut çevriminde dallanma komutu işlenecek ve bir sonraki komut çevrimine geçerken, program sayacı dallanma komutundan hemen sonraki komutu değil, başka bir komutu gösterecektir. Ama mikrodenetleyici, bu komutun nasıl sonuçlanacağını ikinci komut çevriminin sonunda anlar. Eğer dallanma olacaksa, kaydedicisindeki bu değerin kullanılmaması ve yeniden komut yakalaması gerekir. Böylece PIC16F87X ve 16F84 bir komut çevrimini kaybeder ve sapma veya dallanma komutları –eğer sapma olacaksaiki komut çevriminde gerçekleşir.

BELLEK YÖNETİMİ
PIC 16F87X ve 16F84 ailelerinin üç adet bellek bloğu bulunur. Bunlar program belleği (program memory), veri belleği (data memory) ve EEPROM veri belleğidir. Her bloğun, kendi veri yolu vardır (Harvard mimarisi). Öyle ki, aynı osilatör çevriminde, her bir bloğa erişim sağlanabilir.

P rogram Belleği Y önetimi
16F877’de bu bellek kapasiteleri sırasıyla? 0000h07FFh,
0800h0FFFh,
1800h1FFFh adresleri arasındadır. Reset vektörü adresi 0000h ve kesme (interrupt) vektör adresi
0004h’tır.

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti


VERİ BELLEĞİ YÖNETİMİ
Veri belleği kendi içinde, bank adı verilen sayfalara bölünmüştür. Bunların her birinin başında özel fonksiyonlu kaydedici (Special Function RegisterSFR) alanı ve daha sonra da genel amaçlı kaydedici (General Purpose RegistersGPR) alanı bulunur. Özel işlem kaydedicileri mikrodenetleyicinin işletimini kontrol eder ve bir işlemin sonucunu öğrenebileceğimiz, özel durum bitleri vardır.

Örneğin STATUS kaydedicisinin, 5. ve 6. bitleri olan RP0, RP1 adlı bitler? bank seçimi bitleri olarak, bu bellek bölümlerini seçmede kullanılır. Her bank 07Fh adresine dek genişletilmiştir (128 Byte).

Bazı özel işlem kaydedicileri bir banktan, daha çok bankta yer alır. Bu yöntem, erişimi hızlandırma amaçlı olup, çok kullanılan kaydedicilerin görüntüsü ayna gibi diğer banklara yansıtılmıştır. Böylece bu kaydedicilere erişmek için sık sık bank değiştirilmesi gereği ortadan kaldırılmış ve programlamaya kolaylık sağlamıştır.

Veri belleği olarak kullanılmak üzere, kılıfın içerisinde bir de EEPROM bellek alanı vardır. Bu bellek, diğer veri belleği gibi doğrudan adreslenemez. EEPROM veri belleğine dolaylı erişilir. Toplam 92 byte’tır.

Reset (başlama) vektörü: Enerji uygulandığında (Poweron) mikroişlemcinin içinde veya dışında olan bir elektronik devre ile yeniden başlatılmalıdır (reset). Bu devre poweron reset adı ile kılıf içerisine yerleştirilmiştir. Çalışmaya başlatılan mikroişlemci, kendi program sayacını özel bir sayı ile yükler. İşte bu sayı, o mikroişlemci için, reset vektör adresidir.

Kesme (interrupt) vektörü: Mikroişlemci program belleğindeki programı çalıştırırken, sırası belirsiz, acilen yapılması gerekli yordamları da çalıştırabilir. Sırası ve ne zaman ortaya çıkacağı bilinmeyen bu işleri yapmak için mikroişlemci, bir yolla dışarıdan veya kendi içinden uyarılmalıdır. Gelen uyarıdan mikroişlemcinin bazı birimleri etkilenir.

Bu birimlerden biri olan program sayacına, özel bir sayı yüklenir. Bu sayı, o mikroişlemcinin
kesme vektör adresidir. Kesme sırasındaki uyarıdan etkilenen diğer birim, yığındır. Yığın, program içinde bir alt program kullanıldığında, bu alt programdan, asıl program bloğuna dönülecek adresi tutar. Kesme de bir alt program gibi ele alınır. Kesmeye sapıldığında kesme bölümünden sonra dönülecek adres PC’den yığına yerleştirilir.

Daha sonra kesme yordamının komutları işlenir. Kesmeden çıkış komutu olan Retfie, altprogramdan çıkış komutu return gibi çalışır. Retfie komutu ile, programda dönülecek yerin adresi yığından alınıp, PC’ye geri
yüklenir. Böylece kesmeden sonra, program bloğu içinde işlemeyi bıraktığı yere döner ve kalan komutları işlemeye devam eder. İç içe kullanılan altprogramlar en çok sekiz olabilir. bunlara kesme bölümleri de dahildir
.
Kesmeleri dahil etmezsek, yığın taşmasına neden oluruz. Yığın taşması oluştuğunda bizi uyaracak, herhangi bir uyarı (flag) kaydedicisi bulunmamaktadır.

PIC16F877 Mikrodenetleyicisinin Türkçe Datasheeti
Etiketler
pic16f877, türkçe datasheet, mikrodenetliyici, eeprom, flash, rezenatör, osilatör
Yorum Ekle