Timer2 ve Watchdog Timer Birimi

Timer2 ve Watchdog Timer Birimi

Timer2 Birimi

Timer2 birimi diğer Timer0 ve Timer1 birimlerinden farklı olarak sadece zamanlayıcı olarak kullanılan 8 bitlik birimdir.

  • 8 bitliktir
  • 8 bitlik postscaler değerine sahiptir
  • CCP modülündeki PWM birimi için sinyal üretmede kullanılır.
Timer2 Blok Diyagramı
Timer2 Blok Diyagramı

Blok şemada görüleceği gibi Timer2 zamanlayıcısı için denetleyicinin dahili saat sinyali kullanılır. Bu sinyal bölme(prescaler) ile çapılarak kaynak saat sinyalini oluşturur.
PR2 8 bitlik yazılabilir ve okunabilir bir peryot kaydedicisidir.
TMR2 kaydedicisi içindeki değer 00h’tan başlayarak sayar ve PR2 kaydecisi içine yazılan değere eşit olduğunda (bu işlemi karşılaştırıcı yapar) bir eşitlik sinyali üretilir ve TMR2 sıfırlanır. Eşitlik sonucu PR2 FFh değerini alır.
Postscaler değeri meydana gelen eşitlik sinyalinden kaç defa mydana geldikten sonra Timer2  kesmesi oluşacağını belirler.
Bu işlemler T2CON kaydedicisinde gerçekleşir. 

T2CON Kaydedicisi
T2CON Kaydedicisi
  • Bit 7= Kullanılmayan bit Okunurken “0”
  • Bit 6-3 TOUTPS3:TOUTPS0 =Timer2 Postscale değeri seçme bilgileri
    • 0000:  1:1
    • 0001:  1:2
    • 0002:  1:3
    • 0003:  1:4
    • ………..
    • …….
    • 1111:  1:16
  • Bit 2 TMR2ON= Timer2 açma-kapama
    • 1: açık
    • 0:kapalı
  • Bit 1-0 T2CKPS1-T2CKPS2=Timer2 bölme(prescaler) değeri seçme bitleri
    • 00= bölme değeri 1
    • 01: bölme değeri4
    • 1x:bölme değeri 16

Bölme oranı(prescaler)  ve postscale değerleri POR,MCLR,WDT vb. sıfırlama sinyalelerinden biri oluştuğunda veya TMR2 kaydedicsine veri yhazma işlemi ile  T2CON kaydedicisine veri yazma işlemlerinden biri gerçekleştiğinde sıfırlanır.

Timer2 Kesmesi(#INT_TIMER2)

TMR2 kaydedicisi içindeki değer 00h’tan  başlayarak sayar ve PR2 kaydedicisi içindeki değere eşit olduğunda bir eşitlik sinyali üretilir. Belirlenen psotscale sayısı kadar eşitlik olduğunda Timer2  kesmesi(Interrupt) oluşur. Timer2 kesmesi izin verme biti PIE1 kaydedicisinin TMR2IE  bitidir.  Kesme oluşma süresi aşağıdaki gibi hesaplanır.

Timer2 Kesme Oluşma Süresi Hesaplama

setup_timer_2() Fonksiyonu

Timer2 zamanlayıcı ayarları yapmaya yaran fonksiyondur.

setup_timer_2(mod,periyod,postscale);

mod kısmına aşağıda belirtilen sabitlerden biri yazılır.

mod Tanımlamaları:

T2_DISABLED: Timer2 kapat

Timer2 Bölme Oranları(Prescaler) Sabitleri: 

  • T2_DIV_BY_1: BÖLME ORANI 1
  • T2_DIV_BY_4: bölme oranı 4
  • T2_DIV_BY_16: bölme oranı 16

Periyod 

Periyot kısmına 0 ile 255 arasında bir tamsayı girilir. Zamanlayıcı bu değere ulaşınca kendini sıfırlar.

Postscale

Postscale kısmına 1 ile 16 arasında bir tamsayı girilir. Timer2 kesmesi oluşması için kendini kaç kez sıfırlaması gerektiği bilgisidir.

setup_timer_2(T2_DIV_16, 192 ,3)
bölme oranı:  16,
PR2 değeri(periyot):  192,
Postscale değeri: 3

set_timer2() Fonksiyonu

Timer2  biriminin saymaya başlama değeridir. Timer2  diğer sayıcılar gibi yukarı yönlü sayar.

set_timer2(değer);

değer kısmına: Timer2 biriminin saymaya başlama değeri yazılır. TMR2 kaydedicisinin içeriğidir. 8 bitlik olduğundan 0 ile 255 arasında olmalıdır.

Watchdog Timer(WDT) Birimi

     WDT birimi denetleyici içinde bulunan ek olarak dışarıdan bir eleman bağlantısı bulunmayan bir R/C osilatörüdür. Denetleyici osilatör girişlerine bağlanan ()OSC1/CLKIN ve OSC2/CLKOUT) osilatörlerinden bağımsızdır. Denteleyiciye osilatör bağlansa veye denetleyici uyku modunda olsa da çalışmaya devam eder.

  • 8 Bitliktir(0-255’e kadar sayar)
  • Taşma sinyali üretme süresi yaklaşık 18ms‘dir(ortam sıcaklığı,denetleyici çeşidi,Vdd değerine göre değişir)

WDT taşma süresi arttırlmak isteniyorsa OPTION kaydedicisinde bölme oranı değeri(prescaler) değiştirilir.
OPTION kaydedicsinin PSA biti “1” yapılarak WDT taşma süresi en fazla yaklaşık 2,304sn olabilir.  

WDT normal çalışma esnasında belirlenen süre sonunda denetleyiciyi sıfırlar. Denetleeyici uyku modunda ise WDT kesmesi meydana geldiğinde denetleyici uyku modundan çıkar ve programa kaldığı yerden devam eder.

CCS C’de PIC12,PIC14 ve PIC16 serisi denetleyiciler için WDT açma kapama komutları programın başında belirtilen şu komutlar ile sağlanır. WDT konfigürasyon açık olarak belirtilmişse, denetleyiciye yüklenen program kodları WDT birimini kapatmaz, sadece içeriği sıfırlanabilir.

#FUSE WDT        //WDT Açık

#FUSE NOWDT    //WDT Kapalı

PIC18 serisi için açma kapatma

setup_wdt(WDT_ON)

setup_wdt(WDT_OFF)

Aşağıda WDT blok şeması görülmektedir. WDT türkçe karşılığı olarak “bekçi köpeği” tabiri kullanılmaktadır.

Watchdog Timer Blok Şeması
Watchdog Timer Blok Şeması

PIC denetleyicilerde program istenmeyen bir şekilde kilitlenmesi durumunda PIC’in sıfırlanmasını  sağlamak için kullanılır.

Bir mikrodenetleyicili sistemde  meydana gelen bir arız veya normal akış dışı bir olay meydana geldiğinde denetleyici belirlenen süre sonunda kendini sıfırlanmasıdır.

WDT birimi kullanıldığında istenmeyen durumlarda PIC’in sıfırlanmasını önlemek için programda gerekli yerlerde WDT sıfırlayan komut kullanılmalıdır.

setup_wdt() Fonksiyonu

Watchdog Timer ayarları için  kullanılan fonksiyondur.
setup_wdt(mod)
mod kısmına bölme sabitleri(prescaler) yazılabilir.
Bu bölme değerleri 12 bit ve 14 bit denetleyiciler için geçerlidir.

12 ve 14 bit PIC denetleyiciler için kullanılan sabitler

WDT_18MS      =Taşma süresi 18ms                  WDT_36MS     =Tşama süresi 36ms
WDT_72MS      =Taşma süresi 72ms                  WDT_144MS  =Taşma süresi 144ms
WDT_288MS   =Taşma süresi 288ms                WDT_576MS  =Taşma süresi 576ms
WDT_1152MS=Taşma süresi 1,152sn              WDT_2304MS=Taşma süresi 2,304sn  

16 bit komut boyuna sahip PIC18FXXX için sabitler

WDT_ON   =WDT Aktif                                            WDT_OFF=WDT Pasif

restarat_wdt() Fonksiyonu

WDT sıfırlamak için kullanılır.

restart_wdt();

Timer2 ve Watchdog Timer uygulamalarına  buradan ulaşabilirsiniz.

Kimler Neler Demiş?

  Abone ol  
Bildir