Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КЛ_Мікропроцесорні пристрої.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆
      1. Модуль таймера 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, але не змінить його режиму роботи.