Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
МІНІСТЕРСТВО ТРАНСПОРТУ ТА ЗВЯЗКУ УКРАЇНИ
ЛЬВІВСЬКИЙ КОЛЕДЖ
ДЕРЖАВНОГО УНІВЕРСИТЕТУ ІНФОРМАЦІЙНО-КОМУНІКАЦІЙНИХ ТЕХНОЛОГІЙ
Навчальна дисципліна: Обчислювальна техніка та мікропроцесори
Лабораторія: апаратних засобів інформатизації
Спеціальність 5.091504 Обслуговування компютерних та
інтелектуальних систем та мереж
РОЗГЛЯНУТО на засіданні циклової комісії Протокол № від ”___”______20__ р. Голова комісії ________________Л.І.Кужій |
ЗАТВЕРДЖУЮ Заступник директора з НВР ____________Я.Плешівський „___”________20__ р. |
РЕЖИМИ РОБОТИ ТАЙМЕРА. СТОРОЖОВИЙ ТАЙМЕР.
Склав викладач: М.І.Гамаль |
Львів 2010
1.МЕТА РОБОТИ: Вивчити основні режими функціонування таймера, способи й особливості його ініціалізації, варіанти використання і настроювання попереднього дільника, функціонування сторожового таймера.
2.ЛІТЕРАТУРА:
2.1. Предко М.Справочник по РІС-микроконтроллерам. Пер с англ. М ДМК Пресс,2002, ООО «ДОДЭКА - XXI»,-512с.
2.2. Катрен Сид, РІС-микроконтроллеры. Все, что Вам необходимо знать.-М.: ООО «ДОДЭКА XXI,2008, -656с.
2.3. Скороделов В.В. Проектирование устройств на однокристальных микроконтроллерах с RISC-архитектурой. В 2 кн. Кн. 1. Особенности проектирования МКУ и архитектура микроконтроллеров РІС: Учебн. пособие. Х.: ХГПУ, 1999. 120 с., ил.
2.4. Інструкція до даної лабораторної роботи.
3.ЗАВДАННЯ:
4. МЕТОДИЧНІ ВКАЗІВКИ:
Модуль таймера й регістр таймера
На рис. наведена спрощена структурна схема модуля таймера. Він може працювати в одному з 2-х режимів: таймера або лічильника.
Рис. Структурна схема таймера/лічильника TMR0.
TІMER0 є програмувальним модулем і містить наступні компоненти:
Режим таймера вибирається шляхом скидання в нуль біта T0CS регістра OPTІON <5>. У режимі таймера TMR0 інкрементується кожний командний цикл (без дільника). Після запису інформації в TMR0 інкрементування його почнеться після двох командних циклів. Це відбувається з усіма командами, які роблять запис або читання-модифікацію-запис TMR0 (наприклад, MOVF TMR0, CLRF TMR0). Уникнути цього можна за допомогою запису в TMR0 скоректованого значення. Якщо TMR0 потрібно перевірити на рівність нулю без зупинки рахунку, варто використовувати інструкцію MOVF TMR0,W.
Режим лічильника вибирається шляхом установки в одиницю біта T0CS регістра OPTІON<5>. У цьому режимі регістр TMR0 буде інкрементуватися або наростаючим, або спадаючим фронтом на виводі RA4/T0CKІ від зовнішніх подій. Напрямок фронту визначається керуючим бітом T0SE у регістрі OPTІON<4>. При T0SE = 0 буде обраний наростаючий фронт.
Попередній дільник може використовуватися або разом з TMR0, або зі сторожовим (Watchdog) таймером. Варіант підключення дільника контролюється бітом PSA регістра OPTІON<3>. При PSA=0 дільник буде приєднаний до TMR0. Уміст дільника програмі недоступний. Коефіцієнт розподілу попереднього дільника програмується бітами PS2...PS0 регістра OPTІON<2:0>. Структура модуля таймера/лічильника TІMER0 і його взаємозв'язок з регістрами TMR0 і OPTІON показані на рис.
Переривання по TMR0 виробляється тоді, коли відбувається переповнення регістра таймера/лічильника при переході від FFh до 00h. Тоді встановлюється біт запиту T0ІF у регістрі ІNTCON<2>. Дане переривання можна замаскувати бітом T0ІE у регістрі ІNTCON<5>. Біт запиту T0ІF повинен бути скинутий програмно при обробці переривання. Переривання по TMR0 не може вивести процесор з режиму SLEEP тому, що таймер у цьому режимі не функціонує.
При PSA=1 дільник буде приєднаний до сторожового таймера як попередній дільник (дільник на виході). При використанні попереднього дільника разом з TMR0, всі команди, що змінюють уміст TMR0, обнуляють попередній дільник. Якщо попередній дільник використовується разом з WDT, команда CLRWDT обнуляє вміст попереднього дільника разом з WDT.
При використанні модуля TІMER0 у режимі лічильника зовнішніх подій необхідно враховувати те, що зовнішній тактовий сигнал синхронізується внутрішньою частотою Fosc. Це приводить до появи затримки в часі фактичного інкрементування вмісту TMR0.
Синхронізація відбувається по закінченні 2- го й 4- го тактів роботи МК, тому, якщо попередній дільник не використовується, то для фіксації вхідної події необхідно, щоб тривалості високого й низького станів сигналу на вході RA4/T0CKІ були б не менш 2 періодів тактової частоти Tosc плюс деяка затримка ( ~ 20 нс).
Якщо модуль TІMER0 використовується разом із попереднім дільником, то частота вхідного сигналу ділиться асинхронним лічильником так, що сигнал на виході дільника стає симетричним. При цьому необхідно, щоб тривалості високого й низького рівнів сигналу на вході RA4/T0CKІ були б не менш 10 нс. Синхронізація сигналу відбувається на виході попереднього дільника, тому існує невелика затримка між фронтом зовнішнього сигналу й часом фактичного інкремента таймера/лічильника. Ця затримка перебуває в діапазоні від 3 до 7 періодів коливань тактового генератора. Таким чином, вимірювання інтервалу між подіями буде виконано з точністю ±4 · Tosc.
Режим таймера вибирається встановленням в "0" біта TOCS в 5-му розряді регістра ОРТION. В режимі таймера TMR0 збільшується в кожному командному циклі (при відсутності попереднього дільника). Якщо відбувається запис в TMR0, то збільшення лічильника затримується на два наступних цикли виконання команди.
Запис в TMR0 повинен вестися з урахуванням цієї затримки. При необхідності перевірки регістра TMR0 на нуль без впливу на процес лічення рекомендується користуватися командою MOVF TMR0, W.
Режим лічильника вибирається встановленням в "1" біта TOCS (ОРТION <5>). В цьому режимі вміст таймера збільшується по кожному перепаду 1/0 або 0/1 на виводі TOCKI. Перепад, що збільшує значення TMR0, вибирається бітом вибору фронту переключення TOSE в регістрі ОРТION (<4>). Встановлення цього біта в "0" викликає збільшення TMR0по перепаду 0/1.
Рис. Структура й можливі варіанти використання предільника.
В регістр TMR0 можна завантажити дані або зчитати з нього, як з будь-якого іншого регістра. Вміст цього регістра може бути інкрементовано фронтом зовнішнього сигналу, що надходить на вхід TMR0 кристала, або внутрішнім сигналом синхронізації (CLKOUT = Fosc/4).
Структурна схема містить елемент MUX це електронний перемикач (мультиплексор). Для того, щоб 8-бітний попередній дільник приєднати до таймера/лічильника, потрібно встановити певним чином біт PSA і біти PS в регістрі Option. Регістр Option це спеціальний регістр (у нього немає адреси в пам'яті даних), але до нього можна звернутися за допомогою команди OPTION. Якщо попередній дільник підключений до таймера/лічильника TMR0, то будь-які команди запису в самий TMR0 (регістр f1, наприклад ClrF1 BSF1,5 ... і т.п.) очищають його.
Біт TOCS в регістрі Option визначає джерело лічильних імпульсів (внутрішніх чи зовнішніх).
Коли TOCS= 1:
Сигналом синхронізації для таймера/лічильника TMR0 чи для попереднього дільника, якщо він підключений до TMR0, є сигнал, що надходить на вивід TMR0. Значення біта 4-ого в регістрі Option визначає, чи відбувається лічення по задньому фронту (= 1) або по передньому фронту (= 0) сигналу.
Коли TOCS = 0:
Регістр TMR0 інкрементується за сигналом внутрішньої синхронізації CLKOUT (Tcy = Fosc/4). В цьому випадку значення бітаTOSE в регістрі Option і сигналу на виводі TMR0 не мають значення. Проте вивід TMR0 необхідно підключити до Vdd або до Vss, як зручніше, щоб випадково не потрапити в режим тесту і забезпечити коректність в режимі пониженого споживання.
Доки на таймер/лічильник TMR0 надходять синхроімпульси (не важливо зовнішні або внутрішні, підключений попередній дільник до TMR0 чи ні), регістр TMR0 інкрементується і при досягненні значення "FFH" скидається в 0. Після обнулення лічення продовжується.
Лічильні імпульси затримуються на два командних цикли. Наприклад, після запису інформації в TMR0, інкрементація його відбудеться через два командних цикли. Таке відбувається з усіма командами, що здійснюють запис або читання-модифікацію-запис TMR0 (наприклад, MOVF TMR0, CLRF TMR0). Якщо TMR0потрібно перевірити на рівність нулю без зупинки лічення, необхідно використати інструкцію MOVF TMR0,W.
Попередній дільник представляє собою 8-бітний лічильник, який використовується як дільник частоти перед TMR0 або після Watchdog таймера. Якщо дільник з'єднаний з TMR0, то він не може бути підключений до Watchdog таймера і навпаки. Біти PSA і PS0 PS2 в регістрі OPTION визначають місце підключення дільника і встановлюють його коефіцієнт ділення.
Попередній дільник може підключатись по-різному. Коли він приєднаний до TMR0, всі команди, що здійснюють запис в TMR0 (наприклад, CLRF 01h, MOVWF 01h, BSF 01h, x... і т.д.) будуть водночас обнуляти і дільник. Коли дільник підключений до WDT, команда CLRWDT також обнулить дільник разом з Watchdog таймером. Підключення дільника програмно кероване. Щоб уникнути несанкціонованого сигналу "Скид" під час переключення дільника з TMR0 на WDT, слід виконати певну послідовність команд:
Приклад №1
1. MOVLW B`xx0x0xxx` ; Вибрати внутрішню синхронізацію
; і нове значення для дільника. Якщо
; нове значення дільника рівне "000"
; або "001", то треба тимчасово вибрати
; інше значення дільника.
2. OPTION ; занесення вмісту W в регістр OPTION_REG (81h)
3. CLRF TMR0 ; Обнулити TMR0 і дільник.
4. MOVLW B`xxxx1xxx` ; Вибрати WDT, не змінюючи
; значення дільника.
5. OPTION
6. CLRWDТ ; Обнулити WDT і дільник (Скид).
7. MOVLW B`xxxx1xxx` ; Вибрати нове значення для
; дільника.
8. OPTION ; занесення вмісту W в регістр OPTION_REG (81h)
Пункти 1 і 2 вимагаються тільки тоді, коли до TMR0 було підключено зовнішнє джерело. Пункти 7 і 8 необхідні тоді, коли в дільник вимагається завантажити величину 000 або 001.
Переключення дільника з WDT на TMR0 необхідно здійснювати за допомогою наступної послідовності команд:
1. CLRWDT ; Обнулити WDT і дільник.
2. MOVLW B`xxxx0xxx` ; Вибрати TMR0, нове значення для
; дільника і джерело сигналу.
3. OPTION ; занесення вмісту W в регістр OPTION_REG (81h)
Ця послідовність повинна бути виконана навіть у тому випадку, якщо сторожовий таймер WDT заборонений.
Приклад №2. Конфігурація схеми таймера за наступними вихідними даними: тактування таймера виробляється від зовнішнього джерела тактових імпульсів по задньому фронту із використанням попереднього дільника з коефіцієнтом ділення 1:64.
…
movlw b00110101
; ||||||||
; |||||└┴┴─── коефіцієнт поперед.дільника 1:64
; ||||└────── попередній дільник підключений до
; |||| каналу таймера
; |||└─────── тактування по задньому фронту
; ||└──────── тактування від зовнішнього генератора
; └┴───────── у даній роботі не мають значення
option ; конфігурування схеми таймера
… ; продовження програми
Приклад №3. Підрахунок 10 тактових імпульсів за допомогою таймера, за умови, що таймер сконфігурований заздалегідь.
…
bcf INTCON, GIE ; заборона переривань
bcf INTCON, T0IF ; скидання прапорця переповнення таймера
movlw .256-10 ; формування константи для
movwf TMR0 ; ініціалізації таймера
m1 btfss INTCON, T0IF ; очікування переповнення таймера
goto m1 ; перехід, якщо таймер не
; переповнений
… ; продовження програми
Зауваження. Імена регістрів TMR0 (адреса 0x01), INTCON (адреса 0x0B), і біт T0IF(2), GIE(7), доступні при підключенні заголовного файлу P16F84.INC, або повинні бути описані в описовій секції програми.
Приклад №4. Визначення скидання мікроконтролера за сигналом сторожового таймера.
…
btfsc STATUS,NOT_TO ; перевірка прапорця спрацьовування WDT
goto res ; перехід, якщо не
;відбулось скидання від WDT
btfss STATUS,NOT_PD ; перевірка прапорця спрацьовування WDT
goto WDT_RES ; перехід на підпрограму обробки
; скидання за сигналом
WDT_res
… ; продовження програми
Зауваження. Для можливості функціонування сторожового таймера в пакеті MPLAB, необхідно зробити його настроювання: меню Options Development Mode Configuration WDT Chip Reset Enable.
Імена регістра STATUS (адреса 0x03), і біти /TO(4), /PD(3) доступні при підключенні заголовного файлу P16F84.INC, або повинні бути описані в описовій секції програми.
5.КОНТРОЛЬНІ ПИТАННЯ:
6.ЗМІСТ ЗВІТУ:
6.1. Мета роботи.
6.2. Завдання.
6.3. Індивідуальне завдання і результати його виконання.
6.4. Лістинг програми (файл .lst) із докладним коментуванням виконання програми.
6.5. Письмові відповіді на контрольні питання.