• Sonuç bulunamadı

KESMELER KESMELER (Interrupts) (Interrupts)

N/A
N/A
Protected

Academic year: 2021

Share "KESMELER KESMELER (Interrupts) (Interrupts)"

Copied!
34
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

KESMELER KESMELER

(Interrupts) (Interrupts)

Mikrodenetleyiciler 1

5.Hafta

5.Hafta

(2)

Kesmeler Kesmeler

Kesme, mikrodenetleyicinin gerçekleştirdiği işleme bakmaksızın belirli durumların veya olayların oluşması halinde isteklere/olaylara cevap verilmesini sağlayan mekanizmadır. Oluşan her kesme olayı ile

programın normal işlenme süreci değiştirilerek program durdurulur ve

kesme alt programı işletildikten sonra ana programın işlenmesi kalınan

noktadan devam eder. Kesme kaynakları;

(3)

Kesme Kaydedici Blok Diyagramları

Kesme Kaydedici Blok Diyagramları

(4)

Mikrodenetleyiciler 4

Kesme İsteği/Olayı Lojik Devresi

Kesme İsteği/Olayı Lojik Devresi

(5)

RB0/INT KESME OLAYI RB0/INT KESME OLAYI

RB0/INT girişinden harici olarak kesme oluşturulur.

Bu girişe uygulanan interrupt sinyalinin hangi kenarda olacağı OPTION 6. biti ile belirlenir.

INTCON 7.biti GIE ile kesmelerine izin verilir.

INTCON 4. biti INTE ile kesmeye izin verilir.

INTCON 1. biti INTF bitinin 1 olması kesme oluştuğunu 0 olursa harici kesme

oluşmadığının bildirir.

OPTION

INTCON

(6)

list p=pic16f877a

#include<p16f877a.inc>

__CONFIG _HS_OSC & _WDT_OFF org 0x000

goto basla org 0x004 goto kesme

basla:

bsf STATUS, RP0 ; Bank 1' gecis

movlw 0x01

movwf TRISB ; PortB I/O atama bcf OPTION_REG, INTEDG

bsf OPTION_REG, NOT_RBPU ; Pull-up disable bcf STATUS, RP0 ; Bank 0'a gecis

clrf PORTB ; Portu temizle bsf PORTB, 7 ; RB7 çıkış lojik1

bsf INTCON, INTE ; RB/INT enable bsf INTCON, GIE ; Global Interrupt Enable

git:

goto git ; sonsuz dongu

kesme:

; Interrupt altprogrami

bcf INTCON, INTF ; bayragi temizle btfss PORTB, 7 ; RB7 lojik1 mi goto alt_prg

bcf PORTB, 7 ; RB7 lojik0 ata retfie

alt_prg:

bsf PORTB,7 ; RB7 lojik1 ata retfie

end

Örnek: RB0 girişine bağlı buton ile harici kesme;Başlangıçta ON durumunda olan RB7

ye bağlı LED, RB0 dan kaynaklanan kesme olayında LED OFF konumuna alınmakta

yeni bir kesme ile yeniden ON konumuna alınması istenmektedir.

(7)

PORTB nin 4,5,6,7 pinlerinden en az birinde durum değişikliği olması durumunda RB Port değişimi kesme olayı meydana gelir.

INTCON 7.biti GIE ile kesmelerine izin verilir.

INTCON 3. biti RBIE biti ile kesmeye izin verilir.

INTCON 0. biti RBIF kesme bayrağı biti PORTB nin 4,5,6,7 pinlerindeki değişikliği bildirir.

PORTB Değişim Kesme Olayı

INTCON

(8)

list p=pic16f877a

#include<p16f877a.inc>

__CONFIG 0x3F31 ;__CONFIG b'11111100110001'

org 0x000 goto basla org 0x004 goto ISR basla:

bsf STATUS, RP0 ; Bank 1' gecis

movlw 0xF0

movwf TRISB ; PortB I/O atama

bsf OPTION_REG, NOT_RBPU ; Pull-up disable bcf STATUS, RP0 ; Bank 0'a gecis

movlw 0xFF

movwf PORTB ;PortB lojik1

bsf INTCON, RBIE ; PORTB degisim kesme enable

bsf INTCON, GIE ; Global Kesme Enable dongu:

goto dongu ;sonsuz dongu

ISR:

;kesme programi

bcf INTCON, RBIF ; kesme bayragi sil btfss PORTB, 7 ; RB7 test et goto LED0

btfss PORTB, 6 ; RB6 test et goto LED1

btfss PORTB, 5 ; RB5 test et goto LED2

btfss PORTB, 4 ; RB4 test et goto LED3

retfie LED0:

bcf PORTB,0 retfie

LED1:

bcf PORTB,1 retfie

LED2:

bcf PORTB,2 retfie

LED3:

bcf PORTB,3 retfie

end

Örnek: PORTB nin 4,5,6,7 pinlerindeki butonlardan herhangi birisine basılması ile

kesme alt programı çalışarak kesme olayı hangi pinin de olduğunu PORTB nin 0,1,2,3

pinlerindeki LED lerde görülmesi.

(9)

Çalışma Sorusu:

1. RB0 pinine bağlı olan bir tuşa her basıldığında

kesme üreten ve PD4-PD7 pinlerine bağlı olan 4

adet led ile 0-9 arasında binary sayan program

kodlarını yazın.

(10)

TIMER0 Modülü TIMER0 Modülü

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 kenar seçimi ,

(11)

Timer modu; TOCS biti (OPTION<5>) biti lojik 0 atandığında TMR0 kaydedicinin içeriği dahili osilatör frekansı ile artar. Eğer temizlenmesiyle seçilir. Timer modunda Timer0 modülü her bir komut sürecini uzatır. Eğer, Sayaç modu kullanılması için TOCS biti (OPTION<5>) lojik 1 olarak atanır ve RA4 girişinden dışarıdan gelen değişim ile TMR0 kaydedici içeriği artar. Bu modda, artım için yükselen ve düşen kenar tetiklemesi TOSE (OPTION<4>) tarafından belirlenmektedir. TOSE bitinin temizlenmesi ile yükselen sınırları seçecektir.

OPTION_REG

•Bit 5 TOCS: TMR0 saat kaynağını seçme biti

•0 = Dahili komut çevrim clocku kullanılır (CLKOUT)

•1 = RA4/TOCK1 pininden (uçundan) gelen darbeler clock kaynağı olur

•Bit 4 TOSE: TMR0 kaynak kenarı seçme biti (Eğer TOCS = 1 ise)

•0 = RA4/TOCK1 pininden gelen her yükselen kenar için bir artırılır

•1 = RA4/TOCK1 pininden gelen her düşen kenar için bir artırılır.

(12)

TMR0 Frekans Önbölücü(PreScaler) TMR0 Frekans Önbölücü(PreScaler)

Ayarları Ayarları

Mikrodenetleyiciler 12

Bit 3 PSA: Önbölücü / önölçekleme yapılacak birimi seçme biti 0 = Önbölücü TMR0 modülü için ayrılır

1 = Önbölücü WDT için ayrılır.

Bit 2,1,0; PS2, PS1, PS0: Önbölücü oranı seçme bitleri OPTION_RE

G

(13)

TMR0 Sayıcısının Başlangıç Değerinin Atanması TMR0 Sayıcısının Başlangıç Değerinin Atanması

TMR0 sayıcısı h’00’ değeri yerine istenilen bir sayıdan başlatılabilir.

Kesme Gecikme Süresi= = T

komut zamanı

*Prescaler değeri*(256-TMR0 başlangıç sayısı)

Formülü ile istenilen geçikme süresi hesaplanabilir. Formülde TMR0 başlangıç sayısı ve Prescaler değeri ondalık olarak alınmalıdır.

TMR0 ile elde edilebilen en büyük kesme gecikme süresi ;

PD: ‘111’ seçilerek Fosc=4MHz ise T

komut zamanı

=1/(fosc/4)=1µs bulunur.

Kesme Gecikme Süresi= T

komut zamanı

*Prescaler değeri*(256-TMR0 başlangıç sayısı)

= 1µs*256*(256-0)

= 65536µs = 65,5 ms olur.

1 ms zaman gecikmesi için:

Kesme Gecikme Süresi= T

komut zamanı

*Prescaler değeri*(256-TMR0 başlangıç sayısı)

= 1µs*8*(256-131)

= 1000µs = 1 ms olur.

(14)

TMR0 Kesmesi TMR0 Kesmesi

TMR0 blok diyagramı

TMR0 kesmesi, TMR0 kaydedicisinin değeri FFh`dan 00h`ye

geçtiğinde üretilmektedir. Bu TMR0 taşması sonucunda TOIF

bayrağı (INTCON<2>) lojik1 olur. Kesme istenmiyorsa, TOIE

bitinin (INTCON<5>) temizlenmesi ile gizlenebilir. Yeni kesme

alınabilmesi için (INTCON<5>) TOIF bayrağı, yazılımdan

silinmelidir.

(15)

Örnek Hesaplama İşlemleri Örnek Hesaplama İşlemleri

OPTION yazmacının PS0:PS2 bitleri ‘000’ seçildiğinde TMR0 sayma aralığı ve kesme gecikme sürelerinin bulunması:

PD değerleri ’000’ seçildiğinde TMR0 oranı ½ olmasıyla frekans 2’ye bölünmesi zamanın 2 ile çarpılması olduğunda (1/(1/2)=2) komut zamanının 2 katı

sürede TMR0 değerini bir arttıracaktır.

Fosc=4MHz ise T

komut zamanı

=1/(fosc/4)=1µs

TMR0 sayma aralığı zamanı= T

komut zamanı

*TMR0 oranı= 1µs*2= 2µs

Kesme Gecikmesi= TMR0 sayma aralığı zamanı*256= 512µs

(16)

list p=pic16f877a

#include<p16f877a.inc>

__CONFIG _CP_OFF & _WDT_OFF &

_PWRTE_ON & _XT_OSC &

_BODEN_OFF & _LVP_OFF & _CPD_OFF SAYICI_250 equ 0x20

SAYICI_4 equ 0x21 org 0x000

goto basla org 0x004 goto ISR basla:

clrf PORTB bsf STATUS, 5 clrf TRISB

movlw 0x02 ;b'00000010 movwf OPTION_REG

bcf STATUS, 5 bsf INTCON,7

bsf INTCON,5 dongu:

goto dongu

Örnek: TMR0 zamanlayıcısı kullanılarak 1 sn zaman gecikmesi elde edilmesi uygulaması. PortB.0 a bağlı LED i 1sn aralıkla yakıp söndüren program.

ISR:

bcf INTCON,2 movlw 0x83 movwf TMR0 bcf STATUS,Z incf SAYICI_250,f movlw d'250'

subwf SAYICI_250,w btfss STATUS,Z retfie

bcf STATUS,Z incf SAYICI_4,f movlw d'4'

subwf SAYICI_4,w btfss STATUS,Z retfie

clrf SAYICI_250 clrf SAYICI_4 btfss PORTB,0 goto YAK goto SONDUR YAK:

bsf PORTB,0 retfie

SONDUR:

bcf PORTB,0 retfie

end

(17)

TIMER1 Modülü TIMER1 Modülü

Timer1 modül, zamanlayıcı/sayıcı olmak üzere 2 farklı modda çalıştırılabilir.

• 16 bitlik zamanlayıcı/sayıcı,

• Okunabilir ve yazılabilir 2 adet 8-bit yazmaca sahip (TMR1H ve TMR1L),

• 8 bitlik programlanabilir prescaler,

• İçten ve dıştan saat seçimi,

• FFFFh değerinden 0000h değerine geçilirken kesme oluşur,

• CCP modülünden resetleme,

(18)

TIMER1 Blok diyagramı TIMER1 Blok diyagramı

Timer1’in aktif/pasif, ayarlama/sıfırlama işlemleri gösterilmektedir.

(19)
(20)

TIMER1 ZAMANLAYICI MOD TIMER1 ZAMANLAYICI MOD

(21)

TIMER1 SAYICI MOD TIMER1 SAYICI MOD

(22)

Zamanlayıcı 1 (TIMER1) İşlemleri Zamanlayıcı 1 (TIMER1) İşlemleri

Timer1 aşağıdaki modlardan birini işletebilir.

• Zamanlayıcı olarak

• Senkronize sayacı olarak

• Asenkronize sayacı olarak

TMR1CS (T1CON<1>) biti bu modlardan hangisinin

çalıştırılacağına karar verir. Zamanlayıcı modunda

Timer1 her komut çevrimi artışları, sayaç modunda her

harici saat girişi yükselmesini belirler. Timer1 osilatör

aktifken RC1/T10SI ve RC0/T10S0/T1CKI pinleri giriş

olurlar. TRISC<1:0> değeri ihmal edilir.

(23)

T1CON: TIMER1 Kontrol Kaydedicisi T1CON: TIMER1 Kontrol Kaydedicisi

TIMER1’deki işlemlerin kontrol edildiği ve i şlemler yürütülürken bazı bilgilerin alındığı kaydedicidir.

TMR1ON: Timer1’ e yetki veren bittir. TMR1ON biti 1 yapıldığında Timer1 kullanılır durumdadır, 0 ise kullanım dışıdır.

TMR1CS:Timer 1 için clock kaynağının seçildiği bittir. TMR1CS 1 ise clock kaynağı olarak RC0/T1OSO/T1CKI pininden gelen sinyalin yükselen kenarları seçilir. TMR1CS’nin 0 olması halinde ise dahili clock kaynağı kullanılır.

T1SYNC:Harici clock kaynağını n senkron kontrolünü yapan bittir. Eğer harici kaynak ile Timer1 e ş zamanlı çalışmıyorsa T1SYNC 1 seviyesinde olur. Eğer eş zamanlı bir çalışma var ise T1SYNC 0 seviyesindedir.

T1OSCEN: Timer1 osilatör kaynağı yetkilendirme bitidir. T1OSCEN 1 ise

osilatör kaynağı etkindir, 0 ise kullanım dışıdır.

(24)

4-5 T1CKPS0,T1CKPS1 :Timer1 giriş sinyalinin bölme (prescaler)

oranının seçildiği bitlerdir. Bu bitlerin aldığı değerlere göre bölme prescaler değeri

değişmekte ve buna bağlı olarak Timer1 artma frekans ı değişmektedir.

11 = 1:8 Prescaler değeri

10 = 1:4 Prescaler değeri

01 = 1:2 Prescaler değeri

00 = 1:1 Prescaler değeri

(25)

LIST P=16F877A

INCLUDE "P16F877A.INC"

__CONFIG h'3F31' ;__CONFIG _CP_OFF & _WDT_OFF &

_PWRTE_ON

& _XT_OSC & _BODEN_OFF & _LVP_OFF & _CPD_OFF ; veya __CONFIG b'11111100110001'

;****Program belleginin yapisi***

ORG h'000' GOTO BASLA ORG h'004'

GOTO KESME_ALTPROG BASLA

CLRF PORTB ;PORTB'nin içerigini temizleyerek LED'leri söndürür

BSF STATUS, 5 ;BANK1'e geç

CLRF TRISB ;PORTB'nin uçlarini çikis yap BSF PIE1,0 ;TMR1IE (PIE1<0>) (TMR1 interrupt enable bit)

BCF STATUS, 5 ;BANK0'a geç

BSF INTCON,7 ;Tüm kesmelere izin ver (GIE=1)

BSF INTCON,6 ;PEIE=1 Çevresel kesmelere izin verildi BCF T1CON,1 ; TMR1CS : Timer1 Clock Source Select bit = 0

;(Internal clock Fosc/4)

BSF T1CON,0 ;Timer1 çalistir (1= Enables Timer1,0=Stops Timer1)

BSF T1CON,5 ; T1CON 5.ve 4. bitleri '11' yapilinca frekans

BSF T1CON,4 ; bölme orani 1/8 olmaktadir.

BCF STATUS, 5 ;BANK0'a geç

LOOP

GOTO LOOP

TMR1 zamanlayıcısını kullanarak 1/2 sn (500 ms) zaman gecikmesi elde edilmesi uygulaması

KESME_ALTPROG ; 500 ms sure dolunca kesme olayi olusur.

BCF PIR1,0 ;TMR1IF TASMA

BAYRAGINI SIL

MOVLW h'0B' ;h'OBDC' SAYISINI TMR1H

VE TMR1L YAZMAÇLARINA YÜKLE

MOVWF TMR1H

MOVLW h'DC' ;h'OBDC' SAYISINI TMR1H VE TMR1L YÜKLE

MOVWF TMR1L

BTFSS PORTB,0 ; RB0'i TEST ET (1 MI?)

GOTO YAK ; HAYIR, RB0=ON

RB1=OFF

GOTO SONDUR ; EVET, RB0=OFF RB1=ON YAK

BSF PORTB,0 ; RB0 ON

BCF PORTB,1 ; RB1 OFF

RETFIE SONDUR

BCF PORTB,0 ; RB0 OFF

BSF PORTB,1 ; RB1 ON

RETFIE

;=======================================================

END ;Prog. Sonu

(26)

Zamanlayıcı 2 (TIMER2) Modülü Zamanlayıcı 2 (TIMER2) Modülü

Timer2 modül aşağıdaki özelliklere sahiptir.

• 8 bit zamanlayıcı (TMR2 kaydedici),

• 8 bit peryot kaydedici (PR2),

• Okunabilir ve yazılabilir,

• Yazılım ile programlanabilir prescaler,

• TMR2, PR2 eşlemesinde kesme,

• Saat kaymasını üretmek için TMR2 çıkışının seçimli kullanımı SSP modülü,

TIMER2 Blok diyagramı

(27)

Zamanlayıcı 2 (TIMER2) İşlemleri Zamanlayıcı 2 (TIMER2) İşlemleri

Timer2, CCP modülünün PWM modu için PWM zaman tabanı olarak kullanılabilir. Giriş saati (Fosc/4)‘in prescaler seçeneğine sahip olur.

Aşağıdaki durumlardan herhangi biri gerçekleştiğinde prescaler ve postscaler sayaçları temizlenirler.

• TMR2 kaydedicisine yazıldığında ,

• T2CON kaydedicisine yazıldığında,

• Herhangi bir aygıt hazır olduğunda ,

***T2CON yazıldığında, TMR2 temizlenemez.

(28)

T2CON: TIMER2 Kontrol Kaydedicisi T2CON: TIMER2 Kontrol Kaydedicisi

T2CKPS0,T2CKPS1: Timer2’de prescaler’in ayarlandığı bitlerdir. Bu bitlerin aldığı değerlere göre prescaler değeri değişmektedir.

When using the TMR2 timer, one should know several specific details that have to do with its

registers:

• Upon the power is on, the PR2 register contains the value FFh.

• Both prescaler and postscaler are cleared by writing to the TMR2 register.

• Both prescaler and postscaler are cleared by writing to the T2CON register.

• On any reset - you guess, both prescaler and postscaler are cleared.

(29)

TMR2ON: Timer2’ e yetki veren bittir. TMR2ON biti 1 yapıldığında Timer2 kullanılır durumdadır, 0 ise kullanım dışıdır.

TOUTPS3:TOUTPS0: Timer2’de postscaler ayarlarını n yapıldığı bitlerdir. Bu

bitlerin aldığı değerlerle timer2 değişik postscaler değerlerine ulaşmaktadır.

(30)

TMR2 zamanlayıcısını kullanarak 1 sn zaman gecikmesi elde edilmesi uygulaması TMR2 zamanlayıcısını kullanarak 1 sn zaman gecikmesi elde edilmesi uygulaması

LIST P=16F877A

INCLUDE "P16F877A.INC"

__CONFIG h'3F31' ;__CONFIG _CP_OFF & _WDT_OFF &

_PWRTE_ON & _XT_OSC & _BODEN_OFF & _LVP_OFF &

_CPD_OFF

; veya __CONFIG b'11111100110001' SAYICI_250 EQU h'20'

SAYICI_4 EQU h'21'

ORG h'000' GOTO BASLA ORG h'004'

GOTO KESME_ALTPROG BASLA

CLRF PORTB BSF STATUS, 5 CLRF TRISB BCF OPTION_REG,7

BSF PIE1,1 ; TMR2 ile PR2 degeri ayni ; olunca kesme olayi izni verildi)

MOVLW d'125' ; TMR2 üst sayma degeri d'125' olarak MOVWF PR2 ; TMR2'ye yüklendi

BCF STATUS, 5 ;BANK0'a geç

MOVLW b'00111100' ;bit(6:3)= 0111->1/8 son frekans bölme,bit(2)TMR2ON=1,

MOVWF T2CON ;bit (1:0) = 00 -> 1/1 ön frekans bölücü

BSF INTCON,7 BSF INTCON,6 LOOP

GOTO LOOP

KESME_ALTPROG

BCF PIR1,1 ;TMR2IF KESME BAYRAGINI SIL

BCF STATUS,Z ;STATUS ZERO BAYRAGINI SIL INCF SAYICI_250,F ; HER 1 MS DE SAYICI DEGERI BIR ARTAR

MOVLW d'250‘ ; W <- d'250‘

SUBWF SAYICI_250,W ; W = SAYICI_250 - W

BTFSS STATUS,Z ; SAYICI_250 =250 DEGERINE ULASTI MI?

RETFIE

BCF STATUS,Z

INCF SAYICI_4,F ;SAYICI_4 = (her 250 ms'de bir artar)

MOVLW d'4' ; W <- d'4'

SUBWF SAYICI_4,W ; W = SAYICI - W

BTFSS STATUS,Z ; SAYICI_4 =4 DEGERINE ULASTI MI?

RETFIE

CLRF SAYICI_250 SAYICILARI SIFIRLA (1 sn SÜRE ELDE EDILDI)

CLRF SAYICI_4

BTFSS PORTB,0 ; RB0'I TEST ET (1 MI?)

GOTO YAK ; HAYIR, RB0=ON RB1=OFF

GOTO SONDUR ; EVET, RB0=OFF RB1=ON YAK

BSF PORTB,0 ; RB0 ON

BCF PORTB,1 ; RB1 OFF

RETFIE SONDUR

BCF PORTB,0 ; RB0 OFF

BSF PORTB,1 ; RB1 ON

RETFIE

END

(31)

WDT (Watch-dog Timer - Zamanlayıcı) WDT (Watch-dog Timer - Zamanlayıcı)

WDT 'nin kullanım amacı, PIC 'i veya herhangi bir işlemciyi bir döngüde kilitlenmekten uzak tutmaktır. Böyle bir durum yazılımda bir hata veya harici bir elektriksel kıvılcımlar nedeniyle ortaya çıkabilir. WDT, PIC 'e bir çeşit kalp atışı sağlar ve eğer WDT yazmacını düzenli aralıklarla temizlenmezse bu kalp atışları PIC 'i resete zorlar. Bu mükemmel bir özelliktir ve Güvenlik Sistemleri gibi ana kontrol panelinde bir kilitlenmenin asla söz konusu olmaması gereken uygulamalar için birebirdir. Güç koruması gereken ve yalnızca periyodik olarak açılması gereken ürünlerde WDT 'den faydalanırlar. WDT’ın birkaç özelliği;

Watchdog Timer, başka hâricî bileşenler talep etmeyen serbest çalışan on-chip RC osilatörüdür.

Bu osilatörün WDT’a sağladığı nominal zaman aşımı süresi 18 ms’dir. Prescaler değeri artırılarak bu değer 2-3 sn’ye kadar çıkarılabilir.

WDT RC osilatörü , OSC1/CLKIN pininin RC osilatöründen ayrılmıştır. Yani, WDT , OSC1/CLKIN ve OSC2/CLKOUT pinlerindeki saat palsı (clock) dursa bile çalışacaktır. Örneğin , SLEEP komutu yürürlüğe konduğu durumlarda buna rastlanır. Normal işletim esnasında bir WDT zaman aşımı (time-out) PIC reset’i yaratacaktır. Eğer PIC SLEEP modunda ise bir WDT cihazın uyanmasını (wake-up) ve normal işletimine devam etmesine sebep olur.

OPTION kayıtçısının sadece ilk 4 biti (prescaler ve TMR0/WDT seçim bitleri) WDT’la ilgilidir.

OPTION kayıtçısının 3.biti 1 yapılarak WDT seçilir ve prescaler bitleri (OPTION<0:2>) ile de frekans bölme değeri ayarlanır.

WDT’ın, CLRWDT komutuyla reset yapıldıktan sonra, saymasını tamamlayıp baştan tekrar saymaya başladığı ana kadar geçen süreye zaman aşımı süresi (time-out) denir. WDT saymasını tamamladığı anda zaman aşımı sinyali verir. Bu sinyal STATUS kayıtçısının 3. ve 4.

bitlerindeki (TO ve PD bayrakları) bayrakların durumunu değiştirir.

(32)

Eğer WDT ile, kontrolden çıkmış bir programı tekrar resetleyerek, kontrolü ele almayı

planladıysanız , ana program başında STATUS kayıtçısının bu bitlerini kontrol etmelisiniz. Daha sonra da reset gerçekleştikten hemen sonra da bu bitleri kontrol etmelisiniz. Böylece WDT’ın zaman aşımı süresi dolduğunda program akışını başka bir yere dallandırabilirsiniz.

Örnek program parçası aşağıdaki gibi olabilir.

WDT_KONTROL BTFSS STATUS,TO ;TO bayrağı 1 mi?

CALL KUR ;hayır (zaman aşımı oluşmuş) , KUR altprogramını çağır.

MOVLW h’CC’ ;Evet (zaman aşımı oluşmamış) programa devam et.

.

.

PIC içerisinde bulunan WDT zamanlayıcısının durumunu konfigürasyon bitlerini yazarken belirleyebiliriz. Bu konfigürasyon bitlerini program içerinde aşağıdaki gibi yazabiliriz.

_CONFIG _CP_OFF & _WDT_ON &_ PWRT_ON & _RC_OSC

(33)

Zaman Aşım ı Süresi Zaman Aşım ı Süresi

WDT'nin CLRWDT komutuyla reset yapıldıktan sonra saymasını tamamlayıp, baştan

tekrar saymaya başladığı anda kadar geçen süredir. WDT'nin saymasını tamamladığı

anda zaman aşımı sinyali verir. Bu sinyal STATUS registerin 3. ve 4. bit'indeki flagların

durumunu değiştirir .

(34)

WDT zamanlayıcısı blok diyagramı WDT zamanlayıcısı blok diyagramı

Referanslar

Benzer Belgeler

Metal Z Havlu Aparatı Metal 21 Cm Hareketli Havlu Dispenseri (Sensörlü). Metal

[r]

Uygulama Şekli: Yutulması halinde Metod: OECD Test Talimatı 486 Sonuç:

Uygulama Şekli: Yutulması halinde Metod: OECD Test Talimatı 486 Sonuç:

@ ABCDEFGDCHIJEKLCML@DKNDMFNDKIOBPMDQDIRLSIHCHNLTHUIVWLNLXNXYHCILMHZHK[I

“.DVÕP D\ÕQGD WDYDQ \DSDQ IDL]OHULQ \HQLGHQ ’ODU Gü]H\LQH çHNLOPHVLQLQ YHYH\D EX Gü]H\LQ X]XQ VüUH NRUXQDELOPHVLQLQ çRN Jüç KDWWD RODQDNVÕ] ROGX÷X ILQDQVDO NUL]H

HWWL÷LQGHQ JHoLFL IDUNODUÕQ HUWHOHQHQ YHUJL HWNLVL KHVDSODQÕUNHQ YHUJL HWNLOL PXKDVHEH.. |QJ|UPHNWHGLU %X \|QWHPLQ GL÷HU \|QWHPOHUGHQ IDUNOÕ RODUDN

 7UN LúoLOHUL LNLOL DQWODúPDODUOD ELUOLNWH 7UNL\H LOH $YUXSD %LUOL÷L $%  DUDVÕQGD \DSÕODQ DQWODúPDODUOD GD KDNODU HOGH HWPLúOHUGLU 6HUEHVW