Режими роботи таймера. Сторожовий таймер (WDT)

Страницы работы

8 страниц (Word-файл)

Фрагмент текста работы

мікроконтролера які були здійснені до переповнення WDT, це й є період його скиданя.

Запустивши програму на виконання у пошаговому режимі ми бачимо цей період дорівнюе 8 тактам мікроконтролера.

2.5. Проаналізувати функціонування сторожового таймера в режимі SLEEP.

Для цього виконаемо ініціалізацію WDT заносячи у регістр OPTION необхідні значення бітів. Потім робимо скидання WDT та задопомогою команди SLEEP вводимо мікроконтролер у режим низького енерго живлення, та очікуємо спрацьовування WDT, яке забезпечить вихід мікроконтролеру з режиму низького енерго живлення до робочого режиму.

ТЕКСТ ПРОГРАМИ

Текст програми можна написати у будь-якому текстовому редактрі, також це можна зробити редакторі Edit пакета MPLAB. Для того, щоб це зробити у редакторі Edit пакета MPLAB необхідно виконати слідуючи дії:

1)  запустити програму MPLAB.

2)  у головному меню вибрати пункт File/New;

3)  набрати текст програми та зберегти його з розширпенням .asm (пкнкт меню File/Save) програма була збережена на дискеті з ім’ям Lab_2.asm.

Для подальшої роботи з програмою необхідно виконати її трнсляцію, а для цього необхідно створити у програмі MPLAB файл проекту:

1)  вибрати пункт головного меню Project\New Project, задати ім’я проекту (Lab_2.pjt).

2)  відкриється вікно Edit Project, у якому треба натиснути на кнопку Add Node та підключити файл nata.asm – у вікні з’явиться файл Lab_2.hex;

3)  щоб виставити опції проекту, потрібно навести курсор на файл Lab_2.hex та натиснути на кнопку Node Propertion. Виставити систему числення – шеснадцатичну та усе підтвердити.

4)   Зберегати ще раз файл  Lab_2.pjt. Тепер проект створений.

Конфігурація схеми таймера за наступними вихідними даними: тактування таймера виробляється від зовнішнього джерела тактових імпульсів по задньому фронту із використанням попереднього дільника з коефіцієнтом ділення 1: 8.

Текст програми, що визначає біти регістру OPTION та робить ділення зовнішньої частоти F, що надходить на вивід RA4/T0CKI мікроконтролера PIC16F84 з коефіцієнтом ділення К1, і отриману частоту виводить на вивід RB0 мікроконтролера.

Тект файлу Lab_2.asm:

list p=16f84        ;определение типа мк

       #include p16f84.inc ;подключение файла p16f84.inc

k1 equ .19

k2 equ .8

       ORG 0               ;адрес начала программы

       call init

       org 4

start  movlw .256-k1             ;загрузка числа 237

       movwf TMR0                ;в TMR0 (в таймер)

       bcf INTCON,T0IF           ;сбросить бит T0IF в рег. INTCON

M1     btfss INTCON,T0IF         ;ожидание переполнения

       goto M1                   ;таймера

       bcf PORTB,0               ;сформировать 0 на выходе RB0

       movlw .256-k1             ;загрузка числа 237

       movwf TMR0                ;в TMR0 (в таймер)

       bcf INTCON,T0IF           ;сбросить бит T0IF в рег. INTCON

M2     btfss INTCON,T0IF         ;ожидание переполнения

       goto M2                   ;таймера

       bsf PORTB,0              ;сформировать 1 на выходе RB0

       movlw .256-k2             ;загрузка числа  248

       movwf TMR0                ;в TMR0 (в таймер)

       bcf INTCON,T0IF           ;сбросить бит T0IF в рег. INTCON

M3      clrwdt

       btfss INTCON,T0IF         ;ожидание переполнения

       goto M3                   ;таймера

       bcf PORTB,0               ;сформировать 0 на выходе RB0

       movlw .256-k2             ;загрузка числа 248

       movwf TMR0                ;в TMR0 (в таймер)

       bcf INTCON,T0IF           ;установить бит T0IF в рег. INTCON

M4      clrwdt

       btfss INTCON,T0IF   ;ожидание переполнения

       goto M4                   ;таймера

       bsf PORTB,0              ;сформировать 1 на выходе RB0

       goto start                ;зацикливание программы

init   movlw b'00101000'         ;входной сигнал - на ножке RTCC

       OPTION              ;делитель подключен к WDT

       movlw b'11111110'   ;в PORTB - 0-й разряд на вывод

       TRIS PORTB          ;остальные на ввод

       movlw b'11111111'   ;все разряды PORTA

       TRIS PORTA          ;на ввод

       return       ;возврат из подпрограммы

       END                 ;конец программы

В результаті трансляціі одержали такі файли Lab_2.lst, Lab_2.err, Lab_2.hex, які знаходяться на дискеті.

            Тект файлу лістинга (Lab_2.lst) має наступний вигляд:

MPASM 02.20 Released             LAB2.ASM   4-1-2004  15:16:02         PAGE  1

LOC  OBJECT CODE     LINE SOURCE TEXT

  VALUE

                    00001         list p=16f84a           ;определение типа мк

                    00002         #include p16f84.inc     ;подключение файла p16f84.inc

                    00001         LIST

                    00002 ; P16F84.INC  Standard Header File, Version 2.00    Microchip Technology, Inc.

                    00136         LIST

  00000016          00003 k1 equ .18

  000000F5          00004 k2 equ .32

0000                00005         ORG 0                   ;адрес начала программы

0000 201C           00006         call init

                    00007         org 4

0001 30EA           00008 start   movlw .256-.k1          ;загрузка числа 237

0002 0081           00009         movwf TMR0              ;в TMR0 (в таймер)

0003 110B           00010         bcf INTCON,T0IF         ;       сбросить бит T0IF в рег. INTCON

0004 1D0B           00011 M1      btfss INTCON,T0IF       ;ожидание переполнения

0005 2804           00012         goto M1                 ;таймера

0006 1006           00013         bcf PORTB,0             ;       сформировать 0 на выходе RB0

0007 30E9           00014         movlw .256-.k1          ;загрузка числа 248

0008 0081           00015         movwf TMR0              ;в TMR0 (в таймер)

0009 110B           00016         bcf INTCON,T0IF         ;       сбросить бит T0IF в рег. INTCON

000A 1D0B           00017 M2      btfss INTCON,T0IF       ;ожидание переполнения

000B 280A           00018         goto M2                 ;таймера

000C 1406           00019         bsf PORTB,0             ;       сформировать 1 на выходе RB0

                    00020

000D 300B           00021         movlw .256-k2           ;загрузка числа 248

000E 0081           00022         movwf TMR0              ;в TMR0 (в таймер)

000F 110B           00023         bcf INTCON,T0IF         ;       сбросить бит T0IF в рег. INTCON

0010 0064           00024 M3      clrwdt

0011 1D0B           00025         btfss INTCON,T0IF       ;ожидание переполнения

0012 2810           00026         goto M3                 ;таймера

0013 1006           00027         bcf PORTB,0             ;сформировать 0 на выходе RB0

0014 300B           00028         movlw .256-k2           ;загрузка числа 248

0015 0081           00029         movwf TMR0              ;в TMR0 (в таймер)

0016 110B           00030         bcf INTCON,T0IF         ;установить бит T0IF в рег. INTCON

0017 0064           00031 M4      clrwdt

0018 1D0B           00032         btfss INTCON,T0IF       ;ожидание переполнения

0019 2817           00033         goto M4                 ;таймера

001A 1406           00034         bsf PORTB,0             ;сформировать 1 на выходе RB0

                    00035

001B 2801           00036         goto start              ;зацикливание программы

                    00037

001C 3028           00038 init    movlw b'00101000'       ;входной сигнал - на ножке RTCC

001D 0062           00039         OPTION                  ;делитель подключен к WDT

001E 30FE           00040         movlw b'11111110'       ;в PORTB - 0-й разряд на вывод

001F 0066           00041         TRIS PORTB              ;остальные на ввод

0020 30FF           00042         movlw b'11111111'       ;все разряды PORTA

0021 0065           00043         TRIS PORTA              ;на ввод

0022 0008           00044         return                  ;возврат из подпрограммы

                    00045

                    00046         END                     ;конец программы

MPASM 02.20 Released             LAB2.ASM   4-1-2004  15:16:02         PAGE  2

SYMBOL TABLE

  LABEL                             VALUE

_HS_OSC                           00003FFE

_LP_OSC                           00003FFC

_PWRTE_OFF                        00003FFF

_PWRTE_ON                         00003FF7

_RC_OSC                           00003FFF

_WDT_OFF                          00003FFB

_WDT_ON                           00003FFF

_XT_OSC                           00003FFD

__16F84                           00000001

init                              0000001C

k1                                00000016

k2                                000000F5

start                             00000001

MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXX------------- ----------------

All other memory blocks unused.

Program Memory Words Used:    35

Program Memory Words Free:   989

Errors   :     0

Warnings :     0 reported,     0 suppressed

Messages :     0 reported,     0 suppressed

            Для того щоб програма могла працювати необхідно перед її виконанням підключити файл Lab_2.sti симулювання вхідного сигнала на вхід МК RA4/T0CKI. Він містить натипний текст:

RA4                20H     20L

Текст програми, що визначає період скидання сторожевого таймера при використанні попердноьго дільника з коефіцієнтом ділення К2=1:8.

list p=16f84    ;определение типа мк

#include p16f84.inc     ;подключение файла p16f84a.inc

start    movlw b'00001100' ;Инициализация WDT

         OPTION            ;коеф. 1:32

         CLRWDT            ;очистить WDT

m11      goto m11          ;переполнить WDT

         goto start        ;зациклить программу?

         END               ;конец программы

Тект файлу лістинга (Lab_2.1.lst) має наступний вигляд:

MPASM 02.20 Released           LAB2_1.ASM   4-1-2004  15:18:24         PAGE  1

LOC  OBJECT CODE     LINE SOURCE TEXT

  VALUE

                    00001         list p=16f84a           ;определение типа мк

                    00002         #include p16f84.inc     ;подключение файла p16f84a.inc

                    00001         LIST

                    00002 ; P16F84.INC  Standard Header File, Version 2.00    Microchip Technology, Inc.

                    00136         LIST

0000                00003 start

0000 300C           00004         movlw b'00001100'       ;Инициализация WDT

0001 0062           00005         OPTION                  ;коеф. 1:8

0002 0064           00006         CLRWDT                  ;очистить WDT

0003 2803           00007 m11     goto m11                ;переполнить WDT

0004 2800           00008         goto start              ;зациклить программу

                    00009        

                    00010         END                     ;конец программы

MPASM 02.20 Released           LAB2_1.ASM   4-1-2004  15:18:24         PAGE  2

SYMBOL TABLE

  LABEL                             VALUE

_RC_OSC                           00003FFF

_WDT_OFF                          00003FFB

_WDT_ON                           00003FFF

_XT_OSC                           00003FFD

__16F84                           00000001

m11                               00000003

start                             00000000

MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : XXXXX----------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used:     5

Program Memory Words Free:  1019

Errors   :     0

Warnings :     0 reported,     0 suppressed

Messages :     0 reported,     0 suppressed

Текст програми, що показує функціонування сторожового таймера в режимі SLEEP:

list p=16f84      ;определение типа мк

#include p16f84.inc        ;подключение файла p16f84.inc

start

      movlw b'00001000'        ;Инициализация WDT

      OPTION

      CLRWDT                    ;очистить WDT

      SLEEP                     ;входимо у режим Sleep

m     goto m                    ;переполнить WDT

      goto start                ;зациклить программу

      END                       ;конец программы

Запустивши програму у пошаговому режимі бачимо, спочатку після віконання команди SLEEP мікроконтролер входить до режиму низького енергоживлення, про це свідчить встановлення бітів регістру STATUS: ТО у “1” та біту PD у “0”. Після спрацьовування сторожевого таймера мікроконтролер переходить у робочий режим, про це свідчить те що біт ТО встановлено у “0” та мікроконтролер продовжує

Похожие материалы

Информация о работе