Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2016_Оқу құралы_Цифрлық жүйелерді PIC микроконтроллерлері негізінде құру (с.3-96).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.26 Mб
Скачать

4.2.2 Tmr2 таймері.

Бірбайтты TMR2 таймерінің жұмысын басқару T2CON, INTCON, PIE1, PIR1 регистрлері арқылы жүзеге асырылады. T2CON регистрінің биттерінің қызметі 4.6 кестеде келтірілген (қалған регистрлер бұрын суреттелген).

4.6 кесте – T2CON регистрі

Бит

Аталымы

Суреттемесі

7

6-3

TOUTPS3-TOUTPS30

Шығыс бөлгішінің коэффициенті: 0000 – 1:1…1111 – 1:16

2

TMR2ON

TMR2 модулініске қосу

1-0

T2CKPS1- T2CKPS0

Алғы бөлгіштің коэффициенті: 00 – 1:1, 01 – 1:4, 1х – 1:16

TMR2 модулінің құрамында 8 битті екі регистр бар, олар: TMR2 регистрі мен PR2 регистрі. Бұл регистрлердің екеуіне де сан жазуға немесе олардағы сандарды оқуға болады. Олардың негізгі айырмашылығы: TMR2 регистрі тактіленеді (санайды), ал PR2 регистрі тактіленбейді (санамайды).

TMR2 регистрі, алғы бөлгіш арқылы, микроконтроллердің ішкі тактісінен Fт= Fкв/4 жиілігімен тактіленеді. Микроконтроллердің ішкі тактісі бөлгіш кірісіне әрқашан қосылған, ол ешқашан ажыратылмайды. Осыған байланысты, алғы бөлгіш қосылған TMR2 регистрі микроконтроллердің ішкі тактісін TMR2 модулінің жұмысының кезінде қабылдайды.

PR2 регистріне «эталон» ретіндегі нақтылы сан «салынады да», динамикалы режимде істеуші TMR2 регистрі өз жұмысын (санауын) соған қарап істейді. Оларға қоса модуль құрамына екі бірбайтты сандарды салыстырушы «цифрлық компаратор» деп аталатын құрылғы енгізілген. Компаратор арқылы TMR2 және PR2 регистрлері өзара «байланған», яғни цифрлық компаратор қалыптастырған кері байланыс сигналы TMR2 регистрінің тазарту кірісіне түседі. TMR2 регистрі тазартылғаннан кейін нөлден бастап, қайта санай бастайды.

Сонымен, TMR2 модулінің негізгі қызметі – импульстер тізбесінің қажетті периодын дәл қою. Тап осы үшін TMR2 модулі CCP модулінің жұмысында пайдаланылады. CCP модулін болашаққа қалдыра тұрып, қазір TMR2 модулінің автономды пайдаланылу мүмкіндігін қарастыралық. Қойылған мәселені шешу үшін алдымен қарастырылушы модулдің жұмысына байланысты сигнал шығару мүмкіндігін анықтау керек.

«Сыртқа шығарылу» мүмкіндігі бар жалғыз нәрсе, ол – шығыс бөлгішінің шығысында қалыптастырылатын сигнал, бірақ бүл шығысқа ешқандай порт шықпасы қосылмаған. Оның орнына, бұл шығыста TMR2 модулінің асып түсуіне байланысты үзіліс туы (PIR1 регистрінің TMR2IF аталымды биті) көтеріледі.

Қарастырылушы жағдайда, TMR2IF туының көтерілуі (рұқсат берілген жағдайда, TMR2 таймерінің асып түсуіне байланысты үзіліске «кетуі») TMR2 регистрінің әрбір асып түсуіне байланысты компаратордың ішкі EQ «жолына» жіберетін импульсі бойынша болмайды, ол шығыс бөлгішінің қойылған бөлу коэффициентіне байланысты болады.

Сонымен, TMR2 модулі арқылы үзіліс бағдарламасына периодты түрде «шығып тұруға» болады. Бұндай жағдайда бағдарламаның «негізгі бөлігінде» «базалық жұмыстар» істеліп, ал үзіліс бағдарламасында осы «базалық жұмыстарға» байланысты қосалқы жұмыстарды орындауға болар еді. Мысалы, үзіліс бағдарламасында сыртқы құрылғылардан деректер оқып, оларға қажетті математикалық операциялар жүргізіп, сосын алынған нәтижелерді бағдарламаның «негізгі бөлігінде» пайдалануға болады.

Төменде қалыптастырылатын импульстер тізбесінің периодын өзгертпей, оның нақтылы шамадағы қуыстығының қойылуын (оның өзгертілу мүмкіндігімен) жүзеге асыру бағдарламасы келтірілген.

;TMR2

;******************************

Microcontroller PIC16F628A

;Clock Frequency 4.0 MHz

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

Sec equ 70h

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

org 0

goto Start

org 4

;******************************

INT bsf PortA,0

movlw .66

movwf Sec

decfsz Sec,F

goto $-1

bcf PortA,0

bcf PIR1,TMR2IF

retfie

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

Start clrf INTCON

movlw 7

movwf CMCON

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

movlw .5

movwf T2CON

bsf STATUS,RP0

clrf TRISA

movlw .249

movwf PR2

bsf INTCON,GIE

bsf INTCON,PEIE

bsf PIE1, TMR2IE

bcf STATUS,RP0

;--------------------------------------------

clrwdt

goto $-1

;******************************

end

TMR2 модулі арқылы TMR2 таймерінің асып түсуіне байланысты үзіліске «кету» периоды тиянақталады. Біздің жағдайда ол 1000 мкс. Бағдарламаның жұмыс нүктесі үзіліс бағдарламасына барғанда, онда кезекті импульс қалыптастырылады да, одан кейін бағдарламаның жұмыс нүктесі оның « негізгі бөлігіне» қайтады.

Бағдарлама дайындық операцияларынан басталады. Алдымен компараторлар модулі ажыратылады. Одан кейін TMR2 модулін басқарушы T2CON регистрінің сәйкесті реттелімі жүргізіледі.

Есептеу формулалары:

Tп = (PR2 + 1) · Tмц · Каб · Кшб,

бұндағы Tп – период ұзақтығы; PR2 – PR2 регистріне жазылған сан; Tмц – бір машина циклінің ұзақтығы; Каб – алғы бөлгіштің бөлу коэффициенті; Кшб – шығыс бөлгішінің бөлу коэффициенті.

Демек:

PR2 = (Tп / Tмц · Каб · Кшб) – 1,

бұндағы Tп = 1000 мкс; Тмц = 1 мкс; Каб = 1; Кшб мәніне 4 аламыз. Онда

PR2 = (1000 / 1 · 4 · 1) – 1 = 249.

Сонымен, T2CON регистріне 00000101 саны, ал 1-банкте орналасқан PR2 регистріне .249 саны жазылу керек.

Қалыптастырылушы сигнал RA0 шықпасынан шығарылатындықтан, оны «шығыс» жұмысына реттеу керек. Біз TRISA регистрін түгелдей тазарта салдық. Енді TMR2 таймерінің асып түсуіне байланысты үзіліске рұқсат берілу керек.

TMR2 модулі – перифериялық модуль, сондықтан, алдымен INTCON регистрінде, барлық үзілстерге және перифериялық модулдердің үзілістеріне, одан кейін перифериялық модулдің нақтылы түріне рұқсат берілу керек (біздің жағдайда – TMR2 таймерінің асып түсуіне байланысты үзіліске).

TMR2 таймерінің асып түсуіне байланысты үзіліс болды деп саналық, онда бағдарламаның жұмыс нүктесі үзіліс бағдарламасына «кетіп», онда импульстің қалыптасуы басталады (bsf PortA,0). Біздің жағдайда, қалыптастырылатын импульс ұзақтығы 200 мкс болады. Импульс қалыптасып болғаннан кейін, TMR2IF туы тазартылып (bcf PIR1,TMR2IF), сосын бағдарламаның «негізгі бөлігіне» қайту керек (retfie). Қалған «уақыт қалдығы» (келесі үзіліске дейінгі) бағдарламаның «негізгі бөлігінде» өтеді.

Сонымен, біздің жағдайда, RA0 шықпасында, периоды 1000 мкс және қуыстығы 5 мәніндегі импульстер тізбесі қалыптастырылады.

Қалған «уақыт қалдығы» (келесі үзіліске дейінгі) бағдарламаның «негізгі бөлігінде» өтеді.