Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

І.Кужій ЗАТВЕРДЖУЮ Заступник директора з НВР Я

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

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

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

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.5.2024

МІНІСТЕРСТВО  ТРАНСПОРТУ  ТА  ЗВ’ЯЗКУ  УКРАЇНИ

 

ЛЬВІВСЬКИЙ  КОЛЕДЖ

ДЕРЖАВНОГО УНІВЕРСИТЕТУ ІНФОРМАЦІЙНО-КОМУНІКАЦІЙНИХ ТЕХНОЛОГІЙ

Навчальна дисципліна: Обчислювальна техніка та мікропроцесори

Лабораторія: апаратних засобів інформатизації

Спеціальність 5.091504  Обслуговування комп’ютерних та

інтелектуальних систем та мереж

РОЗГЛЯНУТО

на засіданні циклової комісії

Протокол №

від ”___”______20__ р.

Голова комісії

________________Л.І.Кужій

ЗАТВЕРДЖУЮ

Заступник директора з НВР

____________Я.Плешівський

„___”________20__ р.

ІНСТРУКЦІЯ

ДО  ЛАБОРАТОРНОЇ  РОБОТИ  № 5

РЕЖИМИ РОБОТИ ТАЙМЕРА. СТОРОЖОВИЙ ТАЙМЕР.

 

Склав викладач:

М.І.Гамаль

Львів – 2010

1.МЕТА РОБОТИ: Вивчити основні режими функціонування таймера, способи й особливості його ініціалізації, варіанти використання і настроювання попереднього дільника, функціонування сторожового таймера.

2.ЛІТЕРАТУРА:  

2.1. Предко М.Справочник по РІС-микроконтроллерам. Пер с англ. – М ДМК Пресс,2002, ООО «ДОДЭКА - XXI»,-512с.

2.2. Катрен Сид, РІС-микроконтроллеры. Все, что Вам необходимо знать.-М.: ООО «ДОДЭКА – XXI,2008, -656с.

2.3. Скороделов В.В. Проектирование устройств на однокристальных микроконтроллерах с RISC-архитектурой. В 2 кн. Кн. 1. Особенности проектирования МКУ и архитектура микроконтроллеров РІС: Учебн. пособие. – Х.: ХГПУ, 1999. – 120 с., ил.

2.4. Інструкція до даної лабораторної роботи.

3.ЗАВДАННЯ:

  1.  Написати програму роботи ОМК PIC16F84 з модулем TMR0.
  2.  Провести ініціалізацію модуля TMR0 для ОМК РІС16F84 з  тактовою частотою генератора  4МГц (прикл. №2)
  3.  Для парних номерів робочих місць коефіцієнт попереднього поділу частоти К= 1:2
  4.  Для парних номерів робочих місць коефіцієнт попереднього поділу частоти К= 1:4
  5.  Застосувати очікування переповнення таймера (див. приклад. №3)
  6.  Використовуючи інструмент FSR в покроковому режимі відлагодження (клавіша F7) спостерігати за зміною регітра TMR0 при відповідному коефіціенті перерахунку попереднього дільника.
  7.  Оцінити виконання встановлення прапорця виникнення переривання TOIF в регістрі INTCON

4. МЕТОДИЧНІ ВКАЗІВКИ:

Модуль таймера й регістр таймера

На рис. наведена спрощена структурна схема модуля таймера. Він може працювати в одному з 2-х режимів: таймера або лічильника.

Рис.  Структурна схема таймера/лічильника TMR0.

TІMER0 є програмувальним модулем і містить наступні компоненти:

  1.  8-розрядний таймер/лічильник TMR0 з можливістю читання й запису як регістр;
  2.  8-розрядний програмно керований попередній дільник;
  3.  мультиплексор вхідного сигналу для вибору внутрішнього або зовнішнього тактового сигналу;
  4.  схему вибору фронту зовнішнього тактового сигналу;
  5.  формувач запиту переривання по переповненню регістра   TMR0 з FFh до 00h.

Режим таймера вибирається шляхом скидання в нуль біта 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 b’00110101’

 ; ||||||||

 ; |||||└┴┴─── коефіцієнт поперед.дільника 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.КОНТРОЛЬНІ ПИТАННЯ:

  1.  Яке призначення таймера?
  2.  Яке призначення лічильника?
  3.  Яким регістром конфігурується таймер?
  4.  Які біти призначені для керування попереднім лічильником?
  5.  Для чого використовується попередній дільник?
  6.  Що таке сторожовий таймер, і яке його практичне застосування?
  7.  Який біт , і якого регістра реагує на переповнення TMR0?

6.ЗМІСТ ЗВІТУ:

6.1. Мета роботи.

6.2. Завдання.

6.3. Індивідуальне завдання і результати його виконання.

6.4. Лістинг програми (файл .lst) із докладним коментуванням виконання програми.

6.5. Письмові відповіді на контрольні питання.  




1. х гг I в до нэ Блестящие результаты первых экспедиций колоссально подняли престиж Цезаря в Риме; галльски
2. История государственного управления России по специальности 030501.
3. самый знаменитый и влиятельный социальный мыслитель XIX века
4. Тема 3 Метод главных компонент 3
5. реферат дисертації на здобуття наукового ступеня кандидата медичних наук Київ ~
6. Диалекты древнеанглийского периода
7. Вариант 13 1 Какие из ценностей характерны для общества традиционного типа 1 приоритет колле
8. своїх і чужих
9. В ходе восстания в Петрограде 25 октября 1917г
10. Учетная политика предприятия
11. Контрольная работа 1 Вариант 1
12. на тему- Эффект Ганна и его использование в диодах работающих в генераторном режиме
13. звучить коштує не менше 5000
14. I Развитие хрящевых тканей
15. тема в буровая вышка
16. 1 Диагностика
17. Карпообразные
18. первых регулируемые международным правом отношения возникающие между государствами а также между государ.
19. Организация и государственное управление охраной труда на предприятии Аттестация рабочего места руководителя
20. Яппи