Реалізація функцій часу
Включає в себе такі дії, як реалізація (витяг) інтервалів часу, вимірювання тривалості часових інтервалів, підрахунок кількості імпульсів. Існують дві принципово відмінні форми реалізації функцій часу: програмна - виконання програмних циклів заданої тривалості, яку розраховують на основі відомого часу виконання команд, і апаратна - на основі таймерів. rn Таймер - це апаратний блок або мікросхема, виконана на основі лічильно регістру з Передвстановлення ( згадати матеріал дисципліни «Комп'ютерна схемотехніка» ). rn Реалізація або вимірювання часових інтервалів виконуються на основі апаратного підрахунку кількості імпульсів з постійним відомим періодом , укластися в реалізується або вимірюється часовий інтервал , де N - кількість підраховані імпульсів. rn Точність вимірювання інтервалу складає . Підрахунок асинхронних (неперіодичних) зовнішніх імпульсів також виконується на таймера, хоча може бути реалізований і програмним шляхом. rn Оскільки таймер є самостійним апаратним блоком, виконаним окремо від процесора, з'являється можливість распараллеліть роботу процесора з виконання обробки даних, і таймера - по реалізації функцій часу, чим досягається розвантаження процесора. rn Узагальнена структура таймера показана на мал. 7.3. rn Таймер запускається програмно в результаті виконання певної команди, за якою в МП-системі може бути сформований сигнал Запуск . Після цього протягом деякого часу відбувається паралельна робота процесора і таймер: процесор виконує поточні команди програми, а таймер підраховує імпульси від заданого джерела. Коли підрахунок завершено, таймер формує сигнал INT , з допомогою якого інформує процесор про завершення рахунку. Цей сигнал зазвичай обробляється в МП-системі як сигнал переривання. Таким чином, у програмі немає необхідності весь час аналізувати поточний стан таймера (хоча в принципі це можливо). rn rn Рис. 7.3. Типова структура таймера rn Видача сигналу переривання від таймера відбувається в момент досягнення нульового стану або переповнення, що відповідає моменту завершення реалізується тимчасового інтервалу. rn За механізмом реалізації рахунку таймери бувають: rn - сумуються з виконанням операції , де i, i-1 - моменти часу, що відповідають поступлению чергового імпульсу; rn - віднімаються з виконанням операції rn Як правило, таймери мають можливість програмної установки на різні режими роботи (вибір конфігурації лічильних регістрів), а саме: rn - різну розрядність (8,16). визначає максимальний інтервал рахунку (тобто реалізації або вимірювання тривалості): ; де , р - розрядність лічильно регістру; rn - режим рахунку з попереднім розподілом частоти; rn - режим автоперезагрузкі стартового числа - для реалізації непреривнойпоследовательності інтервалів однакової тривалості; rn - режим генерації меандра на виході OUT. rn Оскільки таймер є більш складним пристроєм, ніж звичайні ІВ лічильників, то перед запуском таймера необхідно програмно виконати його ініціалізацію . Вона складається з таких етапів, як програмна настройка конфігурації лічильних регістрів (режиму роботи) і запис стартового числа в лічильних регістри. Правила програмної установки визначаються специфікою конкретного таймера і містяться в документації на нього. rn Вибір і завдання стартового числа необхідні для реалізації інтервалів часу необхідної тривалості . rn Для таймерів, що працюють в режимі віднімання, ; rn Для таймерів, що працюють в режимі підсумовування, , де - максимальне можливе вміст лічильно регістра. rn Оскільки завершення інтервалу часу може бути ідентифіковано тільки по сигналу переривання від таймера, то всі дії, пов'язані з обробкою завершення інтервалу часу, зазвичай мають у процедурі обробки цього переривання. rn При переповнення (досягненні нульового стану) таймер продовжує рахунок, тому в процедурі обробки переривання від таймера слід, по крайней мере, зупинити таймер і налаштувати на новий (наступний) інтервал. Виняток становить режим автоперезагрузкі. У цьому випадку має бути заблоковано переривання від таймера, або у процедурі не слід виконувати останов таймера і програмну запис стартового числа.
|