- •Конспект лекцій з дисципліни “Мікропроцесорні пристрої”
- •1 Основи теорії мікропроцесорних пристроїв
- •Класифікація мікропроцесорів. Варіанти архітектури
- •Базова структура мікропроцесорної системи
- •Основні характеристики мп
- •Типова структура мікропроцесора
- •Система команд мп і режими адресації
- •Організація передачі інформації в мпс. Інтерфейс
- •1.6.1 Способи передачі інформації
- •Методи обміну інформацією в мікропроцесорній системі
- •2 Мікроконтролери
- •Структура мк
- •Процесорне ядро мк
- •Резидентна пам'ять мк
- •Порти уведення/виводу
- •Таймери і процесори подій
- •Аналогово-цифрові й цифро-аналогові перетворювачі
- •Мінімізація споживання енергії в мп-системах
- •Моніторинг напруги живлення мк
- •Апаратні і програмні рішення по підвищенню надійності роботи мк
- •Контролери Intel mcs-51
- •3.1 Структурна організація Intel 8051
- •3.1.1 Арифметично-логічний пристрій
- •Зовнішня пам'ять
- •Пристрій керування і синхронізації
- •Програмна модель омк
- •Система команд Intel 8051
- •Арифметичні операції:
- •Логічні команди:
- •Бітові команди:
- •Периферійні присторої омк
- •Порти введення/виводу
- •Звертання до портів можливе тільки за прямою адресою.
- •Лічильники/таймери
- •Послідовний порт
- •Примітка
- •Мікроконтролер pic16f877
- •Характеристика мікроконтролера
- •Cтруктурна схема мікроконтролера pic16f877
- •Організація пам'яті
- •Пам’ять програм
- •Організація пам'яті даних
- •Регістр стану status
- •Лічильник команд
- •Порти введення/виводу
- •Регістри portа і trisa
- •Регістри portb і trisb
- •Регістри portc і trisc
- •Регістри portd і trisd
- •Регістри porte і trise
- •Таймери
- •Модуль таймера tmr0
- •Модуль таймера tmr1
- •Модуль таймера tmr2
- •Модуль 10-розрядного ацп
- •Adcon0 (адреса 1Fh)
- •Adcon1 (адреса 9Fh)
- •Переривання
- •Сторожовий таймер wdt
- •Біти конфігурації
- •Слово конфігурації (адреса 2007h)
- •Система команд
- •Література
Модуль таймера tmr0
TMR0 – таймер/лічильник, має наступні особливості:
8-розрядний таймер/лічильник;
можливість читання і запису поточного значення лічильника;
8-розрядний програмований переддільник;
внутрішнє або зовнішнє джерело тактового сигналу;
вибір активного фронту зовнішнього тактового сигналу;
переривання при переповнюванні (перехід від FFh до 00h).
Блок-схема модуля TMR0 і загального з WDT переддільника показана на рисунку 4.10.
Примітка. Біти управління TOCS, TOSE, PS2, PS1, PSO, PSA розташовані в регістрі OPTION_REG.
Коли біт TOCS скинутий в «0» (OPTION_REG<5>), TMR0 працює від внутрішнього тактового сигналу. Приріст лічильника TMR0 відбувається в кожному машинному циклі (якщо переддільник відключений). Після запису в TMR0 приріст лічильника заборонений два наступні цикли. Користувач повинен скоректувати цю затримку перед записом нового значення в TMR0.
Рисунок 4.10 – Блок-схема модуля TMR0
Якщо біт TOCS встановлений в '1' (OPTION_REG<5>), TMR0 працює від зовнішнього джерела тактового сигналу з боку входу RA4/TOCKI. Активний фронт зовнішнього тактового сигналу вибирається бітом TOSE в регістрі OPTION_REG<4> (TOSE=0 – активним є передній фронт сигналу). Переддільник може бути включений перед WDT або TMR0, залежно від стану біта PSA (OPTION_REG<3>). Не можна прочитати або записати нове значення в переддільник.
Переривання від TMR0 виникають при переповнюванні лічильника, тобто під час переходу його значення від FFh до 00h. При виникненні переривання встановлюється в «1» біт TOIF(INTCON<2>). Само переривання може бути дозволено/заборонено установленням/скиданням біта TOIE (INTCON<5>). Прапор переривання від TMR0 TOIF (INTCON<2>) повинен бути скинутий в підпрограмі обробки переривань. У SLEEP режимі мікроконтролера модуль TMR0 вимкнений і не може генерувати переривання.
Якщо переддільник не використовується, зовнішній тактовий сигнал поступає безпосередньо на синхронізатор. Синхронізація TOCKI з таким сигналом мікроконтролера ускладнюється із-за опиту виходу синхронізатора в машинні цикли Q2 і Q4. Тому тривалість високого або низького логічного рівня зовнішнього сигналу повинна бути не менше 2Tosc (плюс невелика затримка внутрішнього RC ланцюга – 20 нс).
8-розрядний лічильник може працювати як переддільник TMR0 або вихідний дільник WDT. Для простоти опису цей лічильник завжди
називатимемо «переддільник». Зверніть увагу, що існує тільки один переддільник, який може бути включений перед TMR0 або WDT. Використання переддільника перед TMR0 означає, що WDT працює без переддільника, і навпаки.
Коефіцієнт ділення переддільника визначається бітами PSA і PS2:PSO в регістрі OPTION_REG<3:0>.
Якщо переддільник включений перед TMR0, будь-які команди запису в TMR0 (наприклад, CLRF 1, MOVWF 1, BSF 1,х і т.д.) скидають переддільника. Коли переддільник підключений до WDT, команда CLRWDT скине переддільника разом з WDT. Переддільник також очищається при скиданні мікроконтролера. Переддільник недоступний для читання/запису.
Примітка. Запис у регістр TMR0 скине переддільника, якщо він підключений до TMR0, але не змінить його режиму роботи.
