yrd.doç. dr. bülent...

51
Yrd.Doç. Dr. Bülent ÇOBANOĞLU B http://nptel.ac.in/courses/Webcourse-contents/IIT KANPUR/microcontrollers/micro/ui/Course_home3_16.htm

Upload: vuongdat

Post on 30-Jan-2018

258 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Yrd.Doç. Dr. Bülent ÇOBANOĞLU

B

http://nptel.ac.in/courses/Webcourse-contents/IIT KANPUR/microcontrollers/micro/ui/Course_home3_16.htm

Page 2: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MİKRODENETLEYİCİ VE AİLESİ

PIC, Microchip firması tarafından üretilen, Harvard mimarisine ve RISC

işlemcisine sahip bir mikro denetleyicidir. [1]

PIC kelimesi, “Peripheral Interface Controller- Çevresel Arabirim

Denetleyicisi” den türetilmiş olsada farklı kaynaklarda “Programmable

Interface Controller -Programlanabilir Arabirim Denetleyicisi” veya

“Programmable Intelligent Computer -Programlanabilir Akıllı Bilgisayar”

olarak adlandırılmıştır.

PIC Mikro denetleyicilerinin birçok çeşidi vardır, veri yolu genişliği baz

alınarak PIC mikro denetleyicileri;

• 8-bit(PIC10,PIC12,PIC16,PIC18),

• 16-bit(PIC24,dsPIC..) ve

• 32-bit(PIC32)

olarak sınıflandırabiliriz.

Page 3: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU Tercih Nedenleri

Piyasada birçok mikro denetleyici üreten firma olduğundan bahsetmiştik. Bunlar içinde

neden Microchip firmasının ürettiği PIC'lerin seçildiği sorusu akla gelebilir.

• Üretici firmanın (Microchip firmasının) web sayfaları üzerinden sağladığı teknik destek

(MPLAB adlı simülasyon programını da ücretsiz olarak dağıtmaktadır. Böylece PIC

programlamak isteyen bir kişi, assembly editor, derleyici, simülatör ve programlayıcı

ihtiyaçlarının hepsini tek bir program ile ve ücretsiz olarak gidermiş olmaktadır.)

• Sadece Assembly değil Basic (Pic Basic Pro) ve C (Hitech PicC, CCS C) ve Pascal dilleri ile

de derlenebilmesi,

• Firmanın sağladığı bu desteğe bağlı olarak gelişen bir başka avantaj ise, bu konu ile ilgili

kaynağın çok olması,

• PIC'lerin az sayıda komut içeren komut kümelerine sahip olması ve kolayca

programlanabilmesi,

• Ekonomik olması ( oldukça uygun fiyatlara temin edinilebilmesi),

• 6 pinden 80 pine kadar bir çok ürün çeşidinin olması,

• Bellek bölgelerine erişimde ve veri iletiminde farklı yolların kullanılması,

• Basit elemanların eklenmesiyle oluşturulan sistem/donanım yardımıyla programlanabilmesi,

• Kullanıldığı devrelerde basit yapıda yardımcı devrelere (sıfırlama, tetikleme / saat sinyali,

besleme, vb.) ihtiyaç duyulması,

• Yüksek frekanslarda çalışabilmesi ve komut işleme hızının çok yüksek olması,

• Uyku modunda (Sleep mode) 1μA gibi küçük bir akım çekmesi,

• Yalnızca 2 kondansatör ve bir direnç ile çalışabilme özelliği,

• Harvard ve RISC mimarisine sahip olması

Page 4: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Bütün PIC MCU lar aşağıdaki özelliklere

sahiptir.

Harvard, RISC mimari ve aynı komut setine

sahiptir.

Digital I/O portları

On-chip timer with 8-bit prescaler

Power-on reset

Watchdog timer

Power-saving SLEEP mode (Uyku modu)

Yüksek source ve sink akımı

Direct, indirect, adresleme modu

Harici saat arabirimi

RAM veri belleği

EPROM veya Flash program belleği

* Giriş/Çıkış port sayısı

* Çevresel arabirim desteği (USART,

USB, vb)

* Minimum program belleği

kapasitesi

* Minimum RAM kapasitesi

* Çalışma hızı

* Fiziksel boyutu

* Maliyeti

* Çalışma Sıcaklıkları

* …

Hangi PIC modelini seçeceğim?

Page 5: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Tablo 1: 8 bit PIC mikro denetleyiciler ve özellikleri

Page 6: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC 16F/18F bazı serilerin karşılaştırılması

Page 7: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC 16F/18F serilerin karşılaştırılması

Page 8: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU Bacak Bağlantıları

Bir PIC’ e ait tüm özellikler çok detaylı olarak Microchip firması tarafından yazılan datasheet

dosyalarında mevcuttur. Farklı bir PIC kullanılacağı zaman firmanın web sitesinden bu

dosyalar indirilerek incelenebilir. Örneğin PIC 16F877 için firmanın hazırladığı datasheet

dosyasını http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf linkinden PIC

16F84 için firmanın hazırladığı datasheet dosyasını ise

http://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf linkinden indirebilirsiniz.

Page 9: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC16F877 MCU Bacak Bağlantıları

Page 10: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC 16F877

DONANIMSAL

YAPISI

Page 11: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC18F… BASİTLEŞTİRİLMİŞ DONANIMSAL YAPISI

Page 12: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU DONANIMSAL YAPISI : CPU

İşlemci içerisinde, Aritmetik - Mantık birimi

(ALU), Akümülatör (W kaydedicisi), Durum

kaydedicisi (status register), sayıcılar, yığın

göstericisi, kaydediciler, vb. işlevsel birimler

bulunur.

CPU biriminin kalbi ALU ( Aritmetic Lojik

Unit -Aritmetik Mantık Birimi ) dur ve W (

Working register) adında tek bir kaydedici

içerir. W kaydedicisi 8-bit genişliğindedir ve

CPU' daki herhangi bir veriyi transfer etmek

üzere kullanılır.

PIC mikro denetleyicilerin RISC işlemci

mimari yapısına sahip olduklarını daha

önce de belirtmiştik. RISC işlemci, sadece

35 adet (PIC 16F84 ve PIC 16F877 için)

komutu tanır ve işler. Dallanma (jump,

brunch) komutları hariç tüm komutlar aynı

saat çevriminde işlenir. Eğer mikro

denetleyicinin çalışma hızı 20MHz ise

işlemcinin bir komutu çalıştırma zamanı

200nS (T=1/F) dır, buda saniyede 5 milyon

komutun işlenmesi demektir.

Page 13: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PARALEL-SERİ PORT ile VERİ İLETİMİ

Page 14: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU DONANIMSAL YAPISI : GİRİŞ – ÇIKIŞ BİRİMLERİ (PORTLAR)

PORT’ lar; mikro denetleyiciden dışarıya giden

veya dışarıdan mikro denetleyiciye gelen

sinyallerin alınmasında ve gönderilmesinde

kullanılır.

PIC' lerde portlara çeşitli isimler verilmiştir. PIC

16F84 mikro denetleyicisinde PORTA ve PORTB

olmak üzere iki adet giriş / çıkış portu bulunurken

PIC 16F877 mikro denetleyicisinde bu sayı beştir

(PORTA, PORTB, PORTC, PORTD ve PORTE

olmak üzere).

PIC 16F84 mikro denetleyici entegresinde 'RA0-RA4' olarak tanımlanan 5 tanesi

PORTA (1, 2, 3, 17, 18 nolu pinler) ve 'RB0-RB7' sembolleri ile gösterilen 8 tanesi

PORTB (6, 7, 8, 9, 10, 11, 12, 13 nolu pinler) olarak kullanılan toplam 13 adet

giriş/çıkış pini(ucu) bulunmaktadır.

PIC 16F877 mikro denetleyicisi ise 33 adet giriş/çıkış pinine sahiptir. Bunlardan 6

tanesi A portuna (RA0-RA5), 8 tanesi B portuna (RB0-RA7), 8 tanesi C portuna

(RC0-RC7), 8 tanesi D portuna (RD0-RD7) ve 3 tanesi E portuna (RE0-RE2) aittir.

Page 15: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC16f877 MCU DONANIMSAL YAPISI : PORT PINLERİNİN

ALTERNATİF İŞLEVLERİ

Page 16: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU DONANIMSAL YAPISI : GİRİŞ – ÇIKIŞ KAYDEDİCİLERİ (PORT&TRIS)

Her port kendisi için ayrılmış,

TRIS adı verilen kaydediciler

ile giriş veya çıkış olarak

ayarlanır. Her portun ayarı

kendisine ait TRIS

kaydedicisi ile yapılır. (A portu

için TRISA, B portu için

TRISB, vs.).

Bir portun tüm bacakları giriş

veya çıkış olarak

ayarlanabileceği gibi, bazıları

giriş, bazıları çıkış olarak da

ayarlanabilir. {Bunun için

TRIS kaydedicisinin ilgili

ucuna 1 ya da 0 verilmesi

(giriş için 1, çıkış için 0)

yeterli olacaktır.}

Uyarı: TRIS ve PORT kaydedicilerinin adresleri farklı bellek

bölgelerinde bulunmaktadır (Bank 1 ve Bank 0). Bu sebeple

öncelikle TRIS kaydedicisinin bulunduğu banka geçilerek

PORT’lar giriş yada çıkış olarak ayarlanır.

Page 17: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC HAFIZA YAPISI

Hafıza (Bellek) Yapısı:

Mikroişlemcilerde dış ünite olarak kullandığımız hafıza elemanları

mikrokontrollörlerde iç ünite durumundadır. Bunları yapısına göre iki ayrı grupta

toplamak mümkündür:

a) RAM (Random Access Memory)

b) ROM (Read Only Memory)

RAM: RAM genelde program içerisindeki geçici bilgileri (ki biz onlara değişken

diyeceğiz)tutmak için kullanılacaktır. Bazı işlemcilerde ramın program hafızası

olarak kullanıldığını görmek mümkündür, ancak bu işlemciler ya bir dış kalıcı hafıza

tarafından desteklenmekte ya da içerisinde şarj olabilen bir pil içermektedirler.

ROM: Rom hafıza ise program hafızası olarak kullanılan bir hafıza çeşididir. Sadece

okunabilme özelliğine sahip olduğu için, bir kez programlandığında programın

silinmesi diye bir şey söz konusu olmamaktadır.

Page 18: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Bellek haritasında bellek bölgelerini temsil

eden adresler gösterilirken

'onaltılı‐heksadesimal' notasyon kullanılmaktadır.

PIC programlama esnasında da kullanılan '0Xxx'

heksadesimal notasyonunda '0X' veya ‘XXh’

değerleri sayıların heksadesimal olduğunu

belirtir. Örneğin; '0X0F' veya ‘0Fh’ değeri

(0F)16 sayısını '0X3FF' veya ‘3FFh’ değeri

ise (3FF)16 sayısını gösterir.

Program ile ilgili bilgilerin (komutların)

yazılması amacıyla kullanılan bellek

bölgesinde bulunan 64 Bayt'lık EEPROM

belleğin en önemli özelliği, enerji kesilmesi

durumunda verilerin kaybolmamasıdır.

Programın çalışması sırasında program

belleğindeki bilgilerin silinmesi veya

değiştirilmesi mümkün değildir. Program

belleğindeki bilgiler ancak programlama

modunda değiştirilebilirler.

Hafıza (Bellek) Yapısı: Program Belleği

Page 19: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Hafıza (Bellek) Yapısı: Program Belleği

1KBayt'lık program belleğine sahip olan PIC16F84 mikro denetleyicisinde her

bir bellek hücresine 14 bit uzunluğuna sahip program komutları saklanabilir.

Bunun anlamı; PIC16F84 mikro denetleyicisinin (000)16 ile (3FF)16 arasındaki

adresler ile temsil edilen program belleğine 14 bit uzunluğunda toplam 1024

tane komut yazılabilmesidir.

16F877 nin program belleği ise 13 bit ile adreslenir ve dolayısıyla 2^13= 8192

bellek hücresi vardır. Yani 16F877'nin program belleği 8KBayt olarak

tasarlanmıştır. PIC16F877 ninde kelime uzunluğunun 14 bit olduğu daha

önce belirtilmişti. Bu durumda bu elemanın program hafızasına 8192 adet 14

bitlik komut yazmak mümkündür.

Program belleği elektriksel olarak yazılıp silinebilen 'flash' bellek yapısında

olmasına rağmen, programın çalışması sırasında sadece okunabilir.

PIC mikro denetleyici program belleğine sadece Assembly komutları

saklanabilmesine karşılık, 'RETLW' komutu ile birlikte sınırlı miktarda veri de

yüklenebilir. Bellek haritasında bellek bölgelerini temsil eden adresler

gösterilirken 'onaltılı‐heksadesimal' notasyon kullanılmaktadır.

Page 20: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC HAFIZA YAPISI: Veri

Belleği

Page 21: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

* Genel Amaçlı Kaydediciler

* W Kaydedicisi

* Özel Amaçlı kaydediciler (FSR Register)

içerisinde;

* Durum kaydedicisi (Status register)

* OPTION register

* I/O kaydedici. (PORTA,…TRISA,..)

* Timer registers (TMR0,…)

* INTCON register (

* A/D dönüştürücü kayd.

* Porgram Sayıcı (PCL, PCLATH,..)

* .

* …

PIC MCU DONANIMSAL YAPISI : PIC16F887 KAYDEDİCİLER (REGISTERS)

Page 22: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU DONANIMSAL YAPISI : KAYDEDİCİLER (REGISTERS)

W- Kaydedicisi: (Working Register - Akümülatör) :

Genel amaçlı bir kaydedicidir. Tüm işlemcilerde bulunan bu kaydedici ACC ya da A

ismiyle anılır. PIC serisi işlemcilerde ise W adıyla anılmaktadır. Bu kaydedici

işlemlerin çoğunda kullanılan bir kaydedicidir. 2 operandla yapılan işlemlerde,

operandlar işleme girerken, operandlardan bir tanesi burada tutulur; aritmetik ya da

lojik işlemlerde işlem sonuçlarını tutar, ayrıca çok özellikli bir kaydedici olduğu için

bit işlemleri, kaydırma, döndürme, eksiltme, artırma, tersini alma gibi işlemler de

burada yapılabilir.

NOT: MOVLW, ADDLW, ANDLW, MOVWF, gibi birçok komuttan da görüleceği

üzere çoğu işlem W kaydedicisi üzerinden gerçekleşir.

Program Sayıcı: Program akışını kontrol eden bir kaydedicidir. Çalışmakta

olan programların adresleri burada tutulur ve sayılır. Program icra edilirken halen

işletilecek olan komutun adresi PC’de bulunur ve bu komut okunduğunda adres

otomatik olarak 1 artar. Eğer komutun bir operandı varsa komut algılandıktan sonra

bu operand okunur ve bu okunma tamamlanınca PC yine 1 artar. Bu şekilde PC

sistemin işleyişini kontrol etmiş olur. Ayrıca program içerisindeki atlama

komutlarında atlanacak adres, PC’ye yüklenerek programın bir yerden bir başka

yere atlaması sağlanır.

Page 23: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Alt program çağırma işlemlerinde, programın bir noktadan diğer bir noktaya

atlarken geri dönüş adresinin belirlenmesi açısından, programın o anda

çalıştırdığı adresin de bir yerlerde tutulması gerekir.

Program Sayıcı (PC: Program Counter):

Fiziksel olarak, adresin düşük değerli

8 biti 'PCL' kaydedicisinde ve adresin

yüksek değerli 5 biti 'PCLATH' kayded

icisinin 5 bitinde saklanır. Mikro denet

leyicinin komutları işlemesi sırasında

artırılarak, programdaki komutların adı

m adım işlenmesini sağlar.

Page 24: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Program Sayıcı (PC: Program Counter):

PC, Adres yolunu kullanır.

Program belleğinin 11-bitlik adresi ( 211 =2Kbyte ) doğrudan adreslenebilir. Bununla

birlikte PIC16F877 gibi MCU lerde program belleği 13 bit (213 =8Kbyte ) dir. GOTO ve

CALL gibi komutlarla bu 2KByte lık alanda (000H-7FFH) doğrudan gidilebilir ama

7FFH üzerindeki adresler için PCLATH kaydedicine dolaylı erişim mümkündür.

Örneğin PIC16F877’de GOTO komutu ile belleğin ’F00’ bölgesine erişim için:

bsf PCLATH,3 ; PCLATH(4:3) = 11

bsf PCLATH,4

goto h’F00’ ;

Page 25: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU DONANIMSAL YAPISI : KAYDEDİCİLER (REGISTERS)

Durum Kaydedicisi: (STATUS Register - Bayraklar) :

STATUS adıyla anılan bu kaydedici aynı zamanda bayrak işaretlerini tutan

registerdir. Diğer registerlerden farklı olarak bu register, blok olarak değil tek

tek bit olarak ele alınır. Bu registerin bitlerine bakılarak işlemin ve işlemcinin

durumu hakkında bilgi elde etmek mümkündür.

NOT:

STATUS, aritmetik ve mantık işlemleri, veri belleği için bank seçim bitlerine ait

durum bilgisini içeren bir kaydedicidir.

PIC18F

PIC16F

Page 26: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU DONANIMSAL YAPISI : Durum Kaydedicisi

Page 27: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU DONANIMSAL YAPISI : KAYDEDİCİLER (REGISTERS)

Seçenek Kaydedicisi: (OPTION_REG) :

OPTION adıyla anılan bu

kaydedici çeşitli kontrol

bitlerinin ayarlanmasında

kullanılır.TMR0 ve WDT

zamanlayıcıları için frekans

bölme oranlarını belirleme,

harici kesme sinyalinin

tetikleme kenarını seçme,

PORTB nin pullup

dirençlerini düzenleme ve

TMR0 / WDT zamanlayıcı

seçim işlemleri için gerekli

kontrol bitlerini içerir.

Page 28: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU UYGULAMA DEVRESİ BİLEŞENLERİ

Bir PIC mikro denetleyicisi ile gerçekleştirilecek uygulama da o devreye/uygulamaya

özel elemanların (direnç, led, buton, lcd gibi) yanı sıra en azından besleme, reset ve

osilatör devresinin olması gerekir.

Page 29: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Watchdog Timer –

Bekçi Köpeği Zamanlayıcısı

Bilgisayar terimi olarak watchdog (bekçi köpeği), bilgisayarın

çalıştığını garanti eden çok güvenilir (sağlam) bir donanımdır.

Watchdog donanımının ardındaki düşünce çok basittir:

Bilgisayar zaman zaman watchdog aygıtına "Merhaba" demesi

gerekiyor ki bilgisayarın hala hayatta olduğu anlaşılsın. Eğer,

bunu yapamazsa, o zaman bilgisayar donanımsal olarak

yeniden başlatılacaktır.

Konfigurasyon bitlerini kullanarak WDT ON yada OFF yapmak

__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF

PIC Mikrodenetleyicilerde Bekçi köpeği zamanlayıcısı (watchdog timer) yazılımdan

gelen bir hata durumunda sistemi yeniden başlatarak sistemin kilitlenmesini önler.

Eğer MCU içerisindeki program düzgün çalışıyorsa WDT sayıcısı asla maksimum

değere ulaşmaz. Ne zamanki programda bir kilitlenme veya durma olur o zaman WDT

sayıcısı maksimum değere ulaşır ve MCU ya bir RESET sinyali gönderir ve program

yeniden başlar. Yani WDT programın düzgün çalışmasını garanti eder.

Page 30: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Watchdog Timer –

Bekçi Köpeği Zamanlayıcısı

Page 31: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Besleme Devresi ve Bacak Bağlantıları

Dr. Bülent ÇOBANOĞLU

Besleme geriliminin bağlandığı bacaklar Vdd (PIC16F84 için 14 nolu bacak,

PIC16F877 için ise 11 ve 32 nolu iki farklı bacak) isimli bacaklardır.

Toprak/Şase bağlantısı için ise Vss (PIC16F84 için 5 nolu bacak, PIC16F877

için ise 12 ve 31 nolu iki farklı bacak) isimli bacaklar kullanılır. Şekildeki 16F877

entegresinin bacak bağlantılarına bakıldığında besleme ve toprak girişleri, iki

yanda birer tane olacak şekilde konumlandırılmıştır. Vdd' ile 'Vss' uçları arasına

devreye ilk gerilim uygulaması anında (PIC'e enerji verme sırasında) olabilecek

gerilim dalgalanmalarının sebep olabileceği arızaları önlemek amacıyla 0,1

mikroF'lık bir 'dekuplaj kondansatörü' bağlanır.

Page 32: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Reset Uçları ve Devresi: (1/2)

PIC microcontrollers aşağıdaki

durumlarda RESET oluşur:

• PIC e ilk güç verildiğinde (POR –

Power On Reset),

•MCLR girişi mantıksal 0

yapıldığında,

• Watchdog zamanlayıcısında taşma

olduğunda.

• BOR; Eğer belli bir süre (TBOR-

100us) Vdd gerilimi VBOR (about

4 volts) değerinin altında kalırsa

(BODEN biti ile aktif/pasif yapılır)

PIC mikro denetleyicilerin MCLR ucu (16F84 için 4 nolu, 16F877 için 1 nolu bacak)

reset bacağıdır. Bacak bağlantılarında MCLR üzerinde bulunan çizgi, lojik 0 da iken

reset işleminin gerçekleştiğini göstermektedir. Bu bacak lojik 0 (0V) seviyesine

çekildiğinde program kesilir ve tekrar lojik 1 (+5V) seviyesine gelince program ilk

satırdan itibaren çalışmaya başlar. Reset devresi aşağıdaki gibi kurulur.

MCLR pininin yanlışlıkla lojik '0' değeri ile aktif hale gelmesini engellemek amacıyla

bir direnç üzerinden + besleme ucuna bağlanması gereklidir. Bağlandığı ucu sabit

olarak lojik '1' değerinde tutan bu direnç, 'pull-up' direnci olarak isimlendirilir.

Page 33: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Reset Devresi Mantığı: (2/2)

Dr. Bülent ÇOBANOĞLU

Page 34: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC bir mikroişlemcili sistem olduğundan, komutları işleyebilmesi için

saat(clock) sinyali dediğimiz, frekansı belli olan bir kare dalga işarete ihtiyaç

duyar. PIC mikro denetleyicilerin saat sinyali girişi için kullanılan iki ucu

vardır; bunlar OSC1 (16F84 için 16. pin, 16F877 için 13. pin olmak üzere) ve

OSC2 (16F84 için 15. pin, 16F877 için 14. pin olmak üzere) uçlarıdır.

Bu uçlara farklı tipte osilatörlerden elde edilen clock sinyalleri uygulanabilir. Seçilecek osilatör tipi Pic’in kontrol ettiği devrenin hız gereksinimine bağlı olarak

seçilir. Clock osilatör tipleri şunlardır:

○ RC: Direnç/Kondansatör

○ XT: Kristal veya seramik resonetör

○ HS: Yüksek hızlı kristal veya seramik resonetör

○ LP: Düşük frekanslı kristal

Dr. Bülent ÇOBANOĞLU

Osilatör devresi ve bağlantısı: (1/2)

Page 35: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Kristal Osc. genelde C1 ve C2 kondansatörünün birbirine eşit olması gerekir.

Dr. Bülent ÇOBANOĞLU

Seramik Resonator

Osilatör devresi ve bağlantısı: (2/2)

Page 36: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Konfigürasyon bitleri ve işlevleri

Power-up timer (PWRTE)

Osilatör start-up timer

BOR (Brown Out Reset)

Yonga içindeki bir RC osilatör devresi ile belirli bir

frekansta çalışması denetlenen WDT (Watch Dog Timer)

Kesmeler

Kod koruma güvenliği

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)

__CONFIG _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_OFF & _LVP_OFF & _CPD_OFF

__CONFIG 0x3F31;__CONFIG b’11111100110001’__CONFIG(UNPROTECT & LVPDIS & BORDIS & MCLREN & WDTDIS & PWRTEN & INTIO); //C için

__CONFIG( HS & WDTDIS & PWRTDIS & BORDIS & LVPDIS & WRTEN & DEBUGDIS & UNPROTECT ); // C için

Not: Program belleğinin 2007h adresinde olup 14 bittir. Bu bitlere sadece PIC programlama aşamasında

erişilebilmektedir.

Not: Kullanılan osilatör tipi programlama esnasında PIC içerisinde bulunan

konfigürasyon bitlerine yazılmalıdır.

Page 37: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Dr. Bülent ÇOBANOĞLU

I/O Portları: Analog/Digital Seçimi

ADFM biti dönüştürme işlemi sonunda 10 bitlik sayının formatını belirler.1: Sayı sağa kaydırılır.0: Sayı sola kaydırılır.

PCFG3 – PCFG0 bitleri A/D portlarının durumunu belirler. Tümü 0 yapılırsa bu durumda 8 tane analog kanal seçilmiş olur ve

her kanalın referans gerilimi VDD olarak ayarlanır.

16F877’de 8 tane 10 bitlik A/D çevirme

kanalı bulunur. A / D kanalları için RA4

hariç diğer A ve E portları kullanılır. A/D

çevirme işlemi 4 adet kaydediciyle

yapılmaktadır.

Aşağıda ilgili register lar ve adresleri

gösterilmiştir.

ADRESH 0x1E ; A / D sonuç

kaydedicisi (high register)

ADRESL 0x9E ; A / D sonuç

kaydedicisi (low register)

ADCON0 0x1F ; A / D kontrol

kaydedicisi 0

ADCON1 0x9F ; A / D kontrol

kaydedicisi 1

Page 38: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

ADCON1, PORTA ve PORTE

portlarını dijital veya analog

giriş-çıkış olarak ayarlamaya

yarar. Default olarak bu portlar

analogtur ADCON1

kaydedicisine ilgili değerler

yüklenerek bütün pinler digital

veya analog işlemler için

ayarlanabilir. Ayrıntılı bilgi için

lütfen datasheet’e ve ileride

anlatacağımız ADC konusuna

göz atınız.

I/O Portları: Analog/Digital Seçimi :ADCON1

Page 39: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

I/O Portları: Analog/Digital Seçimi : ADFM biti ve ADRESL-ARESH

Page 40: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

I/O Portları: Analog/Digital Seçimi : ADCON0

TAD:Bir bitlik dönüşüm süresidir.

10 bitlik dönüşüm için 11TAD süresi çeker.

Page 41: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

Mikrodenetleyiciler 41

Hemen (Immediate) Adresleme:

MOVLW h ‘0F’ ; OF verisi hemen W kaydedisine yazılır

Doğrudan (Direct) Adresleme :Kaydedici veya değişken içeriği okuma/yazma

MOVWF PORTA,F ;

Page 42: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

42

Dolaylı (Indirect) Adresleme :INDF fiziksel bir register olmayıp mikrodenetleyicideki RAM adresini tutar.

INDF’e yazılan her veri FSR de bulanan adrese yazılmış olur.Örneğin FSR

(Özel Fonksiyonlu Kaydedici)’ye yazdığımız 0x20 değeri ile 0x20 adresinin

içeriğini INDF’i okuyarak elde edebiliriz..

INDF = [FSR]; okuma

[FSR] = INDF; yazma

Nerede kullanılabilir; Veri belleğinin belirli adreslerine ulaşmanız,

ulaştığınız adreslerin içeriğini değiştirmeniz veya bu adresteki değerleri alıp

kullanmanız gerekiyorsa Dolaylı adresleme kullanılır. Örnek; h ’20’ – h ‘2F’

RAM bölgesini temizleyen (sıfırlayan) bir program.

movlw 0x20; Göstergeye başlangıç değerini (adresi) ver .

movwf FSR; RAM‟a git

Sonraki:

clrf INDF; INDF yazmacını temizle

incf FSR, F; Göstergeyi bir arttır. (d = 1)

btfss FSR, 4; Hepsi yapıldı mı?

goto Sonraki; Temizlenecek alan bitmedi, sonrakine git.

……

Page 43: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

43

Dolaylı (Indirect) Adresleme Kaydedicileri : INDF ve FSR

Page 44: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC Komut Seti

Page 45: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU Paket Okuması

Page 46: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU Paket Okuması

Page 47: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC MCU Assembly komut sembollerin / harflerin anlamları

Page 48: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC18F Komut Seti

(2/2)

Page 49: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC18F Komut

Seti (2/2)

Page 50: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC16F -PIC18F Komut Seti

Karşılaştırması

Page 51: Yrd.Doç. Dr. Bülent ÇOBANOĞLUcontent.lms.sabis.sakarya.edu.tr/Uploads/67539/28621/hafta2_mek... · • Sadece Assembly değilBasic (Pic Basic Pro) ve C (Hitech PicC, ... TRISB,

PIC16F -PIC18F Komut Seti

Karşılaştırması