Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Створення затримки часу за допомогою переривань від таймера




Лабораторна робота № 23

Мета роботи: засвоїти метод створення затримок часу з використанням таймера TMR0

 

ТЕОРЕТИЧНІ ВІДОМОСТІ

У мікроконтролерах PIC16хххх на кристалі кремнію, крім ядра мікропроцесора, передбачено розташування різних допоміжних модулів. Їх використання значно спрощує програмування, підвищує продуктивність роботи, скорочує розмір програм. До таких модулів відносяться таймери, що дозволяють отримувати затримки часу або підраховувати зовнішні події, сигнал про які надходить на вхід контролера.

Контролер PIC16F628 має 3 модулі таймерів: восьмирозрядний таймер/лічильник TMR0, шістнадцятирозрядний таймер TMR1 та восьмирозрядний таймер TMR2. Вони можуть використовуватись як окремо, так і для забезпечення роботи інших модулів, наприклад, модуля ССР (захвату/порівняння/широтно-імпульсної модуляції).

Створення затримок часу за рахунок багаторазового виконання вкладених циклів (див. лабораторну роботу № 3), завантажує процесор пустими операціями, тоді як часто в цей час необхідно реалізовувати важливі операції, передбачені алгоритмом контролю, управління та ін.

Значно ефективніше використовувати для затримок таймери. Тоді процесор виконує декілька команд, які програмують таймер на задану затримку. Далі робота таймера і процесора протікає паралельно. Процесор виконує передбачені алгоритмом команди, а таймер одночасно з цим відраховує задану затримку. Після її завершення (переповнення таймера з h'FF' до h'00') автоматично встановлюється в "1" прапорець T0IF, який може бути перевірений програмно. А встановивши попередньо "1" в біті дозволу переривання T0IE, можна після відрахованої таймером затримки автоматично перейти до підпрограми обробки переривання. Функціональну схему таймера подано на рис. 23.1, а регістри, пов'язані з його роботою, у табл. 23.1.

 

23.1. Регістри, пов'язані з роботою таймера TMR0

Адреса Назва Біт 7 Біт 6 Біт 5 Біт 4 Біт 3 Біт 2 Біт 1 Біт 0
0x81 OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
0x0B INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

 


Переддільник може бути під'єднаний до TMR0, якщо встановити PSA = 0, або до сторожового таймера WDT (PSA = 1). Коефіцієнт ділення переддільника задається бітами PS2…PS0 (табл. 23.2).

Коли біт T0CS = 0, TMR0 працює від внутрішнього тактового генератора, збільшуючи свій вміст на одиницю після кожних Кп машинних циклів.

Якщо біт T0CS = 1, джерелом імпульсів стає пристрій, підключений ззовні до входу мікроконтролера RA4. Активний фронт цього сигналу визначає біт T0SЕ.

 

23.2. Варіанти задання коефіцієнтів ділення переддільника

PS2                
PS1                
PS0                
Коефіцієнт ділення переддільника Kп PSA=0 TMR0                
PSA=1 WDT                

 

Використання переддільника дозволяє значно розширити діапазон можливих затримок таймера TMR0.

Алгоритм програми (рис. 23.2) передбачає підключення переддільника до таймера TMR0 з коефіцієнтом ділення частоти Кп = 256. Таймер починає рахунок з числа N = 10·Br, де Br – номер бригади. Оскільки при частоті генератора 4 МГц машинний цикл триває 1 мкс, переповнення таймера настає через

ТTMR0 = Кп × (256 – N) мкс = 256 × (256 – 10·Br) мкс. (23.1)

Зовнішній лічильник COUNT після кожного переривання зменшується на одиницю. Коли після трьох переривань він дораховує до нуля, відновлюється його початкове значення і за допомогою команди зсуву засвічується наступний світлодіод. Це відбувається через Тп = 3 × ТTMR0. (23.2)

 

ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ

1. У середовищі MPLAB створити у папці 1Work новий проект з іменем 23ГБ (Г – номер групи, Б – номер бригади), обравши в меню Project-New Project.

2. У вікні Edit Project додати новий файл на асемблері 23ГБ.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файла з'явиться файл з розширенням.asm. Після появи вікна середовища MPLAB IDE створити цей текстовий файл з розширенням.asm (File – New), записавши його у папку 1Work (File - Save As …).

3. Зарисувати алгоритм і ввести текст програми на асемблері.

4. Записати програму на диск (File – Save).

 
 

23.2. Алгоритм управління світлодіодами з затримкою від таймера TMR0

 

Текст програми:

 

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

;ЛАБОРАТОРНА РОБОТА 23

;Затримка часу з використанням переривання від таймера TMR0

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

LIST P=16F628;тип мікропроцесора

#INCLUDE "P16F628.INC";підключення файла

;стандартних імен

;директиву __CONFIG набрати в одному рядку,

;закінчуючи словом _LVP_OFF

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _LVP_OFF

 

COUNT EQU 0x24

Br EQU БР;тут замість БР введіть номер бригади

org 0x0; (РС) = 0

goto main;Безумовний перехід

org h'4'

inttmr: movlw.10*Br;початок п/п переривання

movwf TMR0; 10*Br --> TMR0

bcf INTCON,T0IF;0 --> T0IF

decfsz COUNT,f;(COUNT)-1 і пропустити, якщо = 0

vert: retfie;вертання з п/п переривань (GIE = 0)

movlw.3

movwf COUNT;відновити лічильник COUNT

rrf PORTB,f;зсув вправо порта В

switch: retfie;вертання з п/п переривань (GIE = 0)

main:;ініціалізація:

movlw 0x07;Відключити компаратори і включити

movwf CMCON;біти порту А у дискретний режим

movlw b'10000000'

movwf PORTB;вивести байт у зачепку порту В

bsf STATUS, RP0;Обрати банк регістрів 1

clrf TRISB;Усі біти порту В - на виведення

movlw 0xFF;Усі біти порту A

movwf TRISA; - на введення

movlw b'00000111';включити до таймера TMR0

;переддільник та встановити

movwf OPTION_REG; його коефіцієнт ділення Кп = 256

bcf STATUS, RP0;Обрати банк регістрів 0

movlw.10*Br

movwf TMR0; 10*Br --> TMR0

movlw.3

movwf COUNT;3 --> COUNT

pochat: bsf INTCON,T0IE;дозвіл переривання таймера 0

bsf INTCON,GIE;глобальний дозвіл переривань

bcf STATUS,C; 0 --> C

loop: goto loop;зациклення

end

 

У програмі застосовуються такі види команд:

Команда Коментар
movlw k ;переслати число (літерал) у робочий регістр W
movwf f ; переслати вміст робочого регістра W у регістр f
bcf f, b ;занести 0 у біт номер b регістра f (bÎ 0, 1… 7)
bsf f, b ; занести 1 у біт номер b регістра f (bÎ 0, 1… 7)
rrf f, d ;зсув вмісту регістра f вліво
decfsz f,d ;зменшити на 1 вміст регістра f і пропустити наступну;команду, якщо отримано 0
retfie ;вертання з підпрограми, при цьому стає: GIE = 1
clrf f ;очистити регістр f
goto k ;безумовний перехід на адресу k

 

5. Виконати компіляцію програми (Project – Make Project або крайня права піктограма у вигляді зеленої лійки). Після цього на екрані з'являється вікно результатів компіляції (Build Results).

6. Якщо з'явилось повідомлення про помилки (error), слід, ознайомившись з поясненням змісту помилки, натиснути двічі мишкою на цей рядок вікна Build Results. MPLAB зробить активним той рядок у тексті програми, де, ймовірно, зроблено помилку. Слід виправити її і далі так само й інші помилки. Потім повернутись до п. 5, поки не буде видано повідомлення "Build completed successfully" (компіляцію завершено успішно). При цьому створюється файл з тим же ім'ям і розширенням.hex.

7. Створити вікно спостереження (Window – Watch Windows – New Watch Window …), включивши до нього регістри TMR0, COUNT, PORTB.

8. Встановити точки зупинки на командах з мітками inttmr, vert, switch, pochat. Для цього встановити курсор на потрібний рядок, натиснути праву клавішу мишки та обрати Break Point(s) (команда виділяється кольором).

9. Здійснити симуляцію виконання програми до мітки pochat, натиснувши кнопку зеленого світлофора або клавішу F9.

10. Визначити точний час між викликами підпрограми переривання і переключеннями світлодіодів (тобто зміною стану порту В). Для цього створити вікно секундоміра: Window – Stopwatch. Скинути його лічильник (клавіша Zero). Записати мітку зупинки, значення регістрів з вікна Watch і секундоміра у табл. 23.3. Далі продовжувати виконання програми (F9) і після кожної зупинки заповнювати табл. 23.3. Визначити за даними таблиці час між викликами підпрограми переривання ТTMR0 та між моментами переключення світлодіодів Трс.

11. Підключити лабораторну установку до LPT-порту комп'ютера і до живлення. Встановити перемикач у положення "Програмування" (при цьому світиться світлодіод Prog), а вимикачі, що підключені до портів, усі вимкнути.

12. Згорнути вікно MPLAB і на робочому столі зробити подвійний клік на синій піктограмі програматора " ProPic2 ". Обрати тип мікроконтролера PIC16F628 (у верхній правій частині вікна ProPic2 виділено синім кольором). Стандартним шляхом відкрити створений вами файл з розширенням.hex.

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

14. Після завершення програмування переключити перемикач на режим роботи. Візуально визначити час між моментами переключення світлодіодів Твіз і обчислити відносну похибку:

.

 

23.3. Результати аналізу програми

Мітка, на якій здійснено зупинку Вміст регістрів у 16-й системі Час за віртуальним секундоміром, мкс
COUNT PORTB TMR0
pochat        
inttmr        
vert        
inttmr        
vert        
inttmr        
switch        
inttmr        
vert        
inttmr        
vert        
inttmr        
switch        


ЗМІСТ ЗВІТУ

Звіт має містити: назву та мету лабораторної роботи, скорочений порядок виконання лабораторної роботи, функціональну схему таймера, алгоритм і програму з коментарем, таблицю аналізу програми, передбачені розрахунки, перелік імен регістрів спеціального призначення, що використовуються у дослідженій програмі, формат та опис дії кожного виду команд, що вперше зустрічаються у дослідженій програмі мікроконтролера.

 

КОНТРОЛЬНІ ЗАПИТАННЯ

1. Як створити затримку часу, використовуючи переривання від таймера?

2. Як підключити переддільник до таймера із заданим коефіцієнтом ділення?

3. Як розрахувати за заданою затримкою числове значення, що заноситься в таймер TMR0?

4. Як виконується команда retfie?

5. Що потрібно змінити у дослідженій програмі, щоб затримка часу становила 10 с.?

 

 

Лабораторна робота № 24




Поделиться с друзьями:


Дата добавления: 2015-06-25; Просмотров: 811; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.