Menu

Daxil olun Qeydiyyat

Mikrokontroller Texnikasi

PİC16Fxx mikrokontrollerində taymerlər və onlardan istifadə edilməsi

PİC16Fxx mikrokontrollerində taymerlər və onlardan istifadə edilməsi

Zaman gecikmələrinin proqramla gerçəkləşdirilməsinə alternativ olan aparatlı üsul PIC tipli MK-lərin daxili strukturundakı taymerlərdən istifadə edilməsinə əsaslanır.Taymer həm də sayğac funksiyasını yerinə yetirdiyindən onun nüvəsini təşkil edən registrin girişinə verilən say impulsunun təsiri ilə məzmunu hər dəfə vahid qədər artırılır. Zaman gecikmələrinin qiyməti taymerdə sayılan impulsların miqdarı ilə təyin edilir.
PIC16F84 modelində 2 ədəd taymer vardır:

TMR0- 8 bitli registri RAM-nin Bank0-da 0x01H ünvanlı oyuğunda yerləşən timer/counter;

WDT(Watchdog) Timer-.8 bitli registr/counter.

Daha yüksək PIC modellərinnin daxili strukturunda bir neçə ədəd (TMR0,TMR1,TMR2 kimi) taymerlər vardır.

TMR0, WDT taymerləri proqramlana bilən sayğac olmaqla aşağıdakı xüsusiyyətlərə malikdir:

8 bitli sayğac kimi məzmunu 00H-dan FFH-a qədər girişə verilən say impulsunun təsiri ilə artma istiqamətində dəyişir;

TMR0 sayğacının məzmunu FFH-dan 00H-a keçdiyi anda çıxışında TO(Time Out) kəsilmə siqnalı hasil edilir;

Saymanın əvvəlində başlangıc say ədədi CW (Count Word-say ədədi) sayğaca verilir və sayğacın cari məzmunu sayma prosesində oxuna bilər;

Sayğacların proqramlaşdirilması zamanı say impulsları məbəyi kimi xarici dövrəyə bağlanmış RA4/TOCK1 girişı,yaxud MK—nın daxili əmrlər dövrünün (Internal Instruction Cycle) CLK OUT çıxışı seçilə bilər;

Xarici say siqnalları mənbəyi seçildiyi halda RA4/TOCK1 girişındəki siqnallarının aktiv cəbhəsi də proqramlaşdirilma zamanı təyin edilir;

Say siqnalları mənbəyinin tezliyi verilmiş əmsala (tezliyin bölmə əmsalına) bölünərək taymerin girişinə verilə bilər;

tezliyin bölmə əmsalı TMR0-dan WDT-yə və əksinə atıla bilər;

İcra edilən proqramda istifadə eilməsindən asılı olmayaraq MK-nin qida/sinxronlaşdırma mənbəyinə qoşulduğu andan etibarən taymerlər işə başlayır ;

Taymerlərdə cari sayma prosesinin dayandırılması onlara yeni CW yazılması,CLR əmrinin verilməsi, PIC16F84-nin RESET edilməsi zamanı baş verir;

Taymerin yeni sayma prosesinə başlanması üçün onun yenidən proqramlanması lazımdır;

TMR0 taymerin işinə nəzarət üçün onun registrinin məzmunu və çıxışında interrupt siqnalının hasil edilməsi izlənilir.

Şək.4.12-də taymerlərin proqramlaşdirilması və istifadəsi prosesində nəzərdə tutulmuş 8 bitli OPTION registrlərin strukturu göstərilmişdir. Bu registrdə TMR0 taymeri üçün say siqnalları mənbəyi TOCS bitində,tezliyin bölmə əmsalı PSV(Prescaler value) -nin qiyməti PS(0-2) bitlərində,PSV-nin TMR0/WDT-a aid olması əlaməti PSA bitində əvvəlcədən müəyyənləşdirilir. PSA-nın qiyməti nəzərə alınmaqla cədv.4.1 -ə əsasən PS(0-2) bitlərindəki kod TMR0/ WDT üçün PSV qiymətini təyin edir.PSA=0 olduqda PS(0-2) –dəki kod TMR0-a,PSA=1 halında isə WDT-a aid edilir.TOCS=1 olduqda TMR0 üçün say siqnalları mənbəyi xarici RA4/TOCK1girişinə bağlanmış dövrə, TOCS=0 halında isə internal instruction cycle (CLK OUT) qəbul edilir. OPTION registrinin TOSE və INTEDG bitləri uyğun olaraq xarici say siqnalı və RB0/INT girişindəki ixarici kəsilmə impulsu üçün aktiv cəbhəni seçir. OPTION registrinin 7-ci biti isə PORTB portundakı daxili müqavimətlərin qoşularaq aktiv gərginlik səviyyəsini təyin edir.

Sayma prosesində TMR0 sayğacının məzmunu FFH-dan 00H-a keçdiyi anda TMR0-nın çıxışında hasil edilən siqnal ilə kəsilməni idarə edən INTCON registrində TOIF bayrağı qaldırılır. T0IF=1 bayrağı o vaxt maskalanır ki,T0IE=0 olsun.İnterruptə xidmət proqramı yerinə yetirilərkən T0IF=1 edilməzdən əvvəl T0IE=0 edilir ki,xidmət proqramı TMR0 –dan verilən siqnalla kəsilməsin.

Taymerlə idarə edilən çıxış qurğularının (məsələn,LED-lərin) bağlanıldığı,eləcə də xarici siqnalların (məsələn, RA4/TOCK1 girişindən taymerə external say siqnallarının,eləcə də RB0/INT girişindən xarici interrupt siqnalının) verildiyi PortA və PortB registrlərinə 0x05H və 0x06H ünvanları ilə proqramdan müraciət edilir. PortA və PortB-nin xətlərinin hər biri ayrılıqda giriş/çıxış kimi təyin edilə bilər.Bunun üçün Bank1-da 0x85H və 0x86H ünvanları üzrə TRISA vəTRISB registrlərinin bitləri tələbə uyğun olaraq müəyyənləşdirilir.Proqramda Bank0 və Bank1 arasında keçid STATUS(5) bitinin qiymətini dəyişməklə mümkündür. Şək.4.13-də TMR0/ WDT taymerlərinin siqnal mənbələrinə qoşulması, PSV (prescaler value) ədədinin TMR0/WDT-a aid edilməsi sxemi göstərilmişdir.Burada TOCS,PSA əlamətləri kommutasiya edici açarlarla əvəz edilmişdir. Watchdog Timer(WDT) MK-də proqramın yerinə yetirilməsi zamanı baş verən donmalar(sonsuz iterasiya)-dan və xarici siqnalın proqramda nəzərdə tutulduğundan çox gecikməsi halından çıxmaq məqsədilə istifadə edilir. WDT-nin zaman gecikməsinin(TdelayWDT ) maksimal qiymətinə bərabər müddət keçdikdə onun çıxışında alınan siqnal hesabına MK RESET edilir.Bundan əlavə SLEEP vəziyyətində olan PIC-nin “oyadılması” üçün də WDT istifadə edilir. WDT taymerində say siqnalları PIC daxilindəki xüsusi generatordan verilir. Sayma prosesində WDT –nin məzmunu FFH-dan 00H-a keçəndə WDT –nin çıxışında alınan siqnal ilə STATUS(TO)=”1”edilir. TO(Time out) flag-nin vəziyyəti əsas proqramdan izlənilməklə MK RESET edilə bilər. WDT üçün say siqnalları generatorunun tezliyi elə təyin edilmişdir ki, 8 bitli WDT registrində 256 ədəd belə siqnalların sayılması (00H-dan FFH-a keçmək) 18ms-də başa çatır. PSV ədədinin WDT -ə aid etməklə bu zaman gecikməsini Tdelay =18x128 =2.3s çatdırmaq mümkündür.Burada WDT üçün PSV ədədinin maksimal qiyməti 128-dir. WDT-nin MK-nın işində istifadə edilməsi haqqında məlumat MPASM kompilyatoruna proqramın əvvəlində göstərilən konfiqurasiya sətri CONFIG WDT OFF/ON vasitəsilə verilir.

TMR0 taymeri üçün say siqnalları mənbəyi kimi daxili əmrlər dövrü seçildiyi halda TMR0 taymerinin zaman diaqramı və parametrlərin təyini şək.4.14-də göstərilmişdir. PIC tipli MK-də CLKOUT çıxışında hasil edilən və əmrlərin yerinə yetirilmə dövrünə = periodlu siqnallar üçün Tinstr=TOSCLK x4 qəbul edilmişdir.RISC nüvəli PIC –nin 2 mərhələli əmrlər konveyerində əsas əmrlər (branch-dən başqa və NOP da daxil olmaqla) bir ədəd maşın dövründə (1m.d.=Tinst) yerinə yetirilir. TCLK=1 mks olanda Tinstr=4mks olur. TMR0 taymerinin bilavasitə girişinə verilən say siqnallarının dövrü TMR0CLK= Tinstr xPSV kimi təyin edilir.TMR0-dakı zaman gecikməsi müddəti TMR0delay = TMR0CLK xCW ifadəsilə tapılır.Burada CW=256-TMR0ilkin -say ədədi, TMR0ilkin - TMR0 registrinə yüklənilən ilkin qiymətdir. TMR0 taymerində hasil edilən zaman intervallarının sərhəd qiymətləri aşağıdakı kimi təyin edilir: TMR0delaymak= TMR0CLK xCWmak ; CWmak =256-0=256 və TMR0delaymin=TMR0CLK xCWmin ; CWmin=256-255=1. PIC-nin takt siqnalları tezliyi FOSCLK=4MHs qiymətində TMR0delaymak=65.5ms və TMR0delaymin= 2mks olur. Şək.4.15-də banklar arası keçid alqoritmlərinin blok-sxemləri göstərilmişdir. PIC16F84-nin RB(1) çıxışına bağlanan LED-nin Tyanma müddətində yanmasını və sönməsini idarə etmək üçün TMR0-dan istifadə edilməsi və bu alqoritmin blok-sxemi şək.4.16-da göstərilmişdir.Burada LED yandirilib/söndürüldükdən sonra kifayət qiymətli Tyanma zaman gecikməsinin proqramla hasil edilməsi (alternativ variant TMR0-dan verilən interrupt siqnalına əsaslanır) üçün ixtiyari branch əmrindən(məsələn,TMR0(5)=”1” olmasını yoxlayan) istifadə edilir. Çünki PIC-də branch əmrinin yerinə yetirilmə müddəti digər əmrlərə nisbətən böyükdür(2 m.d). TMR0(5)=”1” vəziyyətinin saxlanıldığı Tyanma/sönmə müddətləri TMR0CLKx25 kimi təyin edilir .Burada TMR0(5)=”1”saxlanıldığı müddətdə TMR0 taymerinin 32 ədəd bilavasitə giriş siqnalları TMR0(0-4) bitlərində sayılır.

Say impulsları mənbəyi kimi daxili əmrlər dövrü istifadə edildiyi halda TMR0-da hasil edilən zaman gecikməsi PIC –nin takt siqnalları tezliyinə nəzərən aşağidakı ifadə ilə müəyyənləşdirilir:

TMR0delay=((256-TMR0ilkin)xPSV)/(F OSCLK/4);

Verilmiş zaman gecikməsi qiymətinə görə TMR0-ə yüklənəcək ilkin qiymət isə

TMR0ilkin =256-( TMR0delayx F OSCLK/4xPSV ) kimi tapılir.


Bizi dəstəkləyənlər