Електроний посібник з
дисципліни "Мікропроцесорні системи"
 
Дипломный проект
                        5. ОРГАНІЗАЦІЯ ТИМЧАСОВИХ ЗАТРИМОК У МІКРОПРОЦЕСОРНИХ    СИСТЕМАХ

  Реалізація закону керування в мікропроцесорних системах (МПС) здійснюється за допомогою впливу на об'єкт як апаратно (формування усіляких сигналів, наприклад, увімкнення реле, тиристора), так і програмно, при цьому сигнали керування виробляються програмою, яка виконується мікропроцесором. Для прикладу розглянемо роботу звичайного автодорожнього світлофора. Час горіння зеленого й червоного світла - у межах 40 - 150 секунд залежно від інтенсивності руху. Жовтого - 3 - 7 секунд. Якщо світлофор обладнано кнопкою для увімкнення зеленого світла або звуковим сигналом для незрячих, то зелене світло повинно горіти від 50 до 100 секунд. Із цього прикладу можна зробити висновок, що в системі керування світлофором необхідно формувати кілька різних тимчасових інтервалів. Вони залежать від результатів подій у системі. Натиснута пішоходом кнопка - завершився часовий інтервал горіння червоного або жовтого світла і т.п.
  Мікроконтролер відрізняється від мікропроцесора тим, що  апаратні функції керування реалізуються периферійними пристроями, розміщеними на тому самому кристалі, що й мікропроцесор (таймери, послідовний порт, АЦП, контролер переривань і т.п.) При цьому реалізація апаратного й програмного впливів на об'єкт здійснюється паралельно, як правило, цей час називають системним. Він організований на основі деякого елементарного інтервалу, що формується тактовим генератором мікропроцесора, і являє собою сукупність різних тимчасових інтервалів, яку називають тимчасовою сіткою. Тимчасова сітка, як правило, формується таймерами.
  При цьому в системі  формуються сигнали початку 
( ), закінчення  ( ) інтервалу й, власне, величина тимчасового інтервалу  ( ) (рис. 5.1).
Рис. 5.1. Графічне зображення тимчасового інтервалу
  У базовій моделі МК-51 для формування тимчасових інтервалів є два таймери, які являють собою регістри, що працюють у рахункових режимах.
  Ідею роботи таймера розглянемо на прикладі посудини, яка наповнюється із крапельниці (рис. 5.2)
Рис. 5.2. Принцип роботи таймера
  Краплі починають надходити в посудину, якщо відкритий кран.
  Під час наповнення посудини до верху відбувається відкривання дна, рідина виливається, посудина стає порожньою, дно закривається й система приходить у вихідний стан (роботу механізму відкривання й закривання дна посудини для спрощення не розглядаємо).
  Якщо краплі починають капати в порожню посудину, то для її заповнення необхідно Nmax крапель. Якщо ж попередньо в посудину налити N стартове число крапель і потім відкрити кран, то для її заповнення знадобиться менше число крапель. При постійній швидкості руху краплі час наповнення ємності до верху так само буде менше.
  Таким чином, завдяки зміні стартового числа крапель можна змінювати час заповнення посудини до верху.
При цьому початку затримки відповідає відкриття крана для руху крапель, закінчення затримки фіксується замиканням контакту при заповненні посудини до верху й відкриванні її дна. Величина тимчасового інтервалу пропорційна числу крапель, яке необхідно накапати в посудину, щоб вона наповнилася до верху.
  У базовій моделі МК-51 використовуються два 16-розрядних лічильники, Таймер 0 і Таймер 1, кожний з яких працює незалежно в чотирьох режимах 0, 1, 2, 3.
  Логіку функціонування таймера зображено на рис. 5.3, а графіки тимчасового аналізу роботи на рис. 5.4.


Рис. 5.3. Функціональна схема таймера в режимі 0
Рис. 5.4. Графік тимчасового аналізу роботи таймера в режимі 0
  Кожен таймер може бути запрограмований, власне, у свій режим, у цьому випадку здійснюється підрахунок імпульсів тактового генератора МП (підрахунок крапель). А також - в режим лічильника зовнішніх подій (тобто є два види крапельниць).
  Для керування організацією взаємодії таймерів із системою переривання й установлення режимів їх роботи використовується два регістри спеціальних функцій. Регістр режиму ТМОD і регістр керування TCON.
  Вибір режиму роботи кожного таймера здійснюється шляхом пересилання в регістр режиму ТМОD керуючого слова, яке складається відповідно до табл. 5.1.
  У режимі таймера вміст регістру лічильника збільшується на 1 (інкрементується)  у  кожному  машинному  циклі  МП,  при  цьому  частота рахування складає Fosc / 12 (при частоті кварцового резонатора 12 МГц, частота рахування складає 1 МГц).
  У режимі лічильника інкрементування регістру лічильника (ТН, ТL) здійснюється при переході вхідного сигналу (Т0 або Т1) з «1» в «0».
Входи аналізуються у фазі S5Р2 кожного машинного циклу. Інкрементування вмісту регістру лічильника здійснюється в циклі, що слідує за тим, у якому було виявлено перехід з «1» в «0». Таким чином, на розпізнавання переходу в цьому  режимі  необхідно два  машинні  цикли роботи мікропроцесора,частота  рахунку в  цьому  випадку  складе Fosc / 24 (частота рахунку 500 КГц).
  Вибір типу підраховуваних подій визначається станами бітів ТМОD.2 і ТМОD.6 регістру режиму ТМОD. При одиничному стані цих бітів рахункові регістри працюють як лічильники, при нульовому стані як таймери.
  Особливістю регістру режиму ТМОD є неможливість керування окремими бітами. Таким чином, для встановлення режиму роботи таймера або рахункового регістру необхідно в регістр ТМОD переслати керуюче слово, яке складається відповідно до обраного режиму, згідно табл. 5.2.
  Біти ТМОD.0 і ТМОD.1 регістру режиму визначають режим роботи таймера 0, а ТМОD.4 і ТМОD.5 - режими роботи таймера 1 (табл. 5.3.)
  Наприклад, Таймер 0 потрібно встановити в режим лічильника зовнішніх подій, а Таймер 1 у режим таймера.  Тоді  біт ТМОD.2 повинен бути встановлений в 1, а ТМОD.6 в 0. У Таймері 0 і в Таймері 1 використовуємо конфігурацію 0, тобто біти ТМОD.0, ТМОD.1, ТМОD.4 ТМОD.5 перебувають у стані 0. Біти ТМОD.3, ТМОD.7 (сигнали GATE0 і GATE1) ухвалюємо такими, що дорівнюють 0.
Тоді для програмування режиму роботи таймерів у регістр ТМОD занесемо керуюче слово
          
                                                                  MOV ТМОD, #04H (00000100B).

  Стан бітів ТМОD.7 і ТМОD.3 впливає на те, як здійснюється керування початком рахунку регістрів ТH і ТL (відкривання крана в крапельниці). При одиничному стані зазначених бітів запуск таймера (початок рахунку) здійснюється бітами запуску таймера ТR0 або ТR1 (біти SETB ТСОN.6 або SETB TCON.4) регістру керування ТСОN (табл. 5.4.).
  При нульовому стані бітів ТМОD7 і ТМОD.3 запуск таймера здійснюється попередньою установкою ТR0 або TR1 і наявності сигналу INT0 або INT1, які є інверсними (активним нулем), у цьому випадку при переході сигналу на вході INT0 або INT1 з «0» в «1» відбувається запуск таймера, а при переході з «1» в «0» рахунок зупиняється, рис. 5.5.
  Таким чином, уміст лічильника прямо пропорційний тривалості імпульсу сигналу INT0 або INT1, тобто в цьому режимі за допомогою таймера можна вимірювати тривалість імпульсів, які подаються на входи INT0 або INT1.
Після того, як лічильник повністю заповнено (посудина наповнилася до верху) стан «усі одиниці» (FFFFH) переходить у стан «усі нулі» (0000Н) (відкрилося дно посудини), формується сигнал закінчення рахунку TF0 (замкнувся контакт при відкриванні дна посудини) або TF1, які використовується  як  запити  на  переривання  від  таймерів  Т0  або  Т1.  Якщо вважати тривалість машинного циклу 1 мкс при частоті тактування Tt 12 МГц,а  максимальне  число  імпульсів Nmax (число  крапель,  яке  розміщується  в посудині), яке може порахувати рахунковий регістр складає FFFFН (65536 десятковий еквівалент), то максимальний часовий інтервал на одному таймері (на початку рахунку посудина пуста) складе 65,536 мс.
  Регулювати величину затримки, що формується таймером, можна зміною стартового числа NCT, яке  попередньо  записується  в  рахунковий  регістр (попереднє накапування рідини в посудину). Тоді тривалість затримки можна визначити відповідно до виразу, оскільки

                                                                                 Nз = Nmax - NCT ,
а
- число, яке пропорційне величині часової затримки, тоді
Наприклад, потрібно сформувати часову затримку тривалістю Т з = 1мс, тоді




  Це число попередньо необхідно записати в рахунковий регістр Таймера, а потім встановити біт запуску Таймера (TR0 або TR1).
  У режимі 0 рахунковий регістр містить 13 розрядів, у якому регістр ТН працює як 8-розрядний лічильник, а регістр ТL як 5-бітовий переддільник.
  У режимі  1 рахунковий регістр містить 16 розрядів, тобто ТН має  8
розрядів і ТL - 8 розрядів.
  Режим 2 можна назвати режимом програмувального генератора, рис. 5.6.
Рис. 5.6. Функціональна схема таймера в режимі 2
  При цьому регістр ТL працює як 8-розрядний рахунковий регістр, а в ТН завантажується число, яке визначає частоту імпульсів на виході таймера.
  Після переповнення регістру ТL автоматично вміст регістру ТН перезавантажується в регістр ТL, при цьому вміст регістру ТН зберігається. На графіку тимчасового аналізу (рис. 5.7) для прикладу показано, що в регістр TH попередньо занесене число EAH (250 у десятковому еквіваленті, тобто для заповнення посудини до верху необхідно всього 5 крапель) і через кожні 5 імпульсів на виході таймера буде формуватися імпульс, частота повторення якого в розглянутому прикладі складе
  Таким чином, змінюючи вміст регістру ТН (MOV Thx, #nx), можна змінювати частоту імпульсів на виході рахункового регістру.
Рис. 5.7. Графік тимчасового аналізу роботи таймера в режимі 2
  У режимі 3 Таймер 1 заблоковано еквівалентно (TR1=0), а Таймер 0 працює як два 8-розрядні рахункові регістри, причому регістр ТL0 керується бітами Таймера 0, а ТН0 - бітами Таймера 1 (рис. 5.8).
Рис. 5.8. Функціональна схема таймера в режимі 3
 
  Взаємодія таймера із системою переривання визначає регістр TCON, у якому установлена бітова адресація. Призначення бітів цього регістру наведено в табл. 5.4. Біти TCON.7 і TCON.5 фіксують переповнення таймера й використовуються як сигнали запиту переривання від таймера до мікропроцесора. Біти TCON.4 і TCON.6 керують запуском таймерів  за командою SETB TCON.4 або SETB TCON.6. Біти TCON.3 і TCON.1 фіксують зовнішні сигнали запитів переривання. Біти TCON.2 і TCON.0 керують системою скидання сигналів INT0 і INT1. При одиничному стані TCON.2 аналіз сигналу INT1 виконується за зрізом, а скидання автоматично (апаратно). При нульовому стані біта TCON.2 аналіз запиту сигналу INT1 здійснюється за низьким рівнем сигналу на вході, а скидання сигналу INT1 виконується програмно після закінчення підпрограми обслуговування переривання.
  У режимі 0 рахунковий регістр містить 13 розрядів, у якому регістр ТН працює як 8-розрядний лічильник, а регістр ТL як 5-бітовий переддільник.
  У режимі 1 рахунковий регістр містить 16 розрядів, тобто 8 розрядів ТН і вісім ТL.
Режим 2 можна назвати режимом програмного генератора. При цьому регістр ТL працює як 8-розрядний рахунковий регістр, а в ТН завантажується число пропорційне до частоти імпульсів на виході таймера.
  Після переповнення регістру ТL автоматично вміст регістру ТН перезавантажується в регістр ТL, при цьому вміст регістру ТН зберігається.
  Таким чином, змінюючи вміст регістру ТН (MOV Thx, #nx), можна змінювати частоту імпульсів на виході рахункового регістру.
  У режимі 3 (рис. 5.8) Таймер 1 заблоковано еквівалентно (TR1=0), а Таймер 0 працює як два 8-розрядні рахункові регістри, причому регістр ТL0 керується бітами Таймера 0, а ТНО - бітами Таймера 1.

                                                                        Контрольні запитання

1. Скільки таймерів містить МК51?
2. Скільки режимів роботи має таймер МК51?
3. Який сигнал МК51 формує початок затримки?
4. Який сигнал формує закінчення затримки?
5. Яке максимальне число можна завантажити в таймер?
6. Яку максимальну затримку можна організувати на одному таймері?
7. Вміст таймера в процесі роботи?
8. Який регістр забезпечує установку режимів роботи таймера?
9. Під дією яких сигналів змінюється вміст таймера?
10. Скільки розрядів використовується при роботі таймера в режимі 0?