Основні особливості архітектури мікроконтролерів PlCmicro. Організація пам'яті програм. Непряма адресація, регістри INDF й FSR, страница 9


Введення

TMRO - таймер/лічильник, має наступні особливості:

•   8-ми розрядний таймер/лічильник;

•   можливість читання й запису поточного значення лічильника;

•   8-розрядний програмувальний предделитель;

•   внутрішнє або зовнішнє джерело тактового сигналу,

•   вибір активного фронту зовнішнього тактового сигналу

•   переривання при переповненні (перехід від FFh до 00h)

Примітка. Якщо попередній дільник включений перед WDT. то коефіцієнт розподілу тактового сигналу для TMR0 дорівнює 1:1

Керуючий регістр

Регістр ОPTION_REG доступний для читання й запису містить біти керування

•     Попереднім дільником TMR0/WDT.

•     Активним фронтом зовнішнього переривання RB0/INT:

•     резисторами, Що Підтягують, на вводах PORTB

Примітка. Якщо попередній дільник включений перед WDT, то коефіцієнт розподілу тактового сигналу для TMRO дорівнює 1 1


Робота таймера TMR0

Коли біт ТОCS скинутий в '0' (ОPTIО_REG<5>), TMR0 працює від внутрішнього тактового сигналу. Збільшення лічильника TMR0 відбувається в  кожному машинному циклі (якщо предделитель відключений). Після запису в TMR0 збільшення лічильника заборонене два наступні цикли. Користувач повинен скорегувати цю затримку перед записом нового значення в TMR0.

Якщо біт TOCS установлений в '1' (ОPTIО_REG <5>), TMRO працює від зовнішнього джерела тактового сигналу на вході TOCKI. Активний фронт зовнішнього тактового сигналу вибирається битому TOSE (OPTION_REG<4>) (TOSE=0 - активним є передній фронт сигналу).

Предделитель може бути включений перед WDT або TMRO залежно від стану біта PSA у регістрі OPTION_REG<3>. Якщо ,біт PSA скинутий в '0', то предделитель включений перед TMRO. Не можна прочитати або записати нове значення в перед дільник. Коли предделитель включений перед TMRO можна вибрати його коефіцієнт розподілу 1 2.1:4,. . ,1:256.

Будь-який запис у регістр TMRO викличе заборону збільшення таймера TMRO протягом двох наступних машинних циклів (2Тсy). Т.як після запису нового значення в TMRO таймер не відрекомендується поки не визначений, що 3-я команда не циклічно повторювана. Якщо предделитель включений перед TMRO то запис а регістр TMRO викличе негайну зміну TMRO і скидання предделителя. Збільшення TMRO і предделителя заборонене протягом 2-х машинних циклів (2Тс), після запису в TMRO. Наприклад якщо коефіцієнт предделителя дорівнює 2 те після операції запису в регістр TMRO збільшення таймера не буде відбуватися протягом 4 циклів для TMRO. Далі таймер працює в нормальному режимі.

Переривання від TMRO

Переривання від TMRO виникають при переповненні лічильника тобто, при переході його значення від FFh до Ооh. При виникненні переривання встановлюється в '1' біт T0IF (INTCО<2>). Саме переривання може бути дозволено/заборонено установкою/скиданням біта TOIE у регістрі INTCON<5>. Прапор переривання від TMRO T0IF (INTCON<2>) повинен бути скинутий у підпрограмі обробки переривань. В SLEEP режимі мікроконтролера модуль TMRO виключений і не може генерувати переривання. На малюнку показана тимчасова діаграма виникнення переривання від TMRO.

Використання зовнішнього джерела тактового сигналу для TMRO

При використанні зовнішнього тактового сигналу для TMRО необхідно враховувати деякі деталі роботи таймера. Активний фронт зовнішнього тактового сигналу синхронізується із внутрішньою тактовою частотою мікроконтролера (Fоsc), через що виникає затримка від одержання активного фронту сигналу до збільшення TMRO.

Синхронізація зовнішнього сигналу

Якщо предделитель не використається, зовнішній тактовий сигнал надходить безпосередньо на синхронізатор. Синхронізація TOCKI з таким сигналом мікроконтролера ускладнюється через опитування виходу синхронізатора в машинні цикли Q2 й Q4. Тому тривалість високого або низького логічного рівня зовнішнього сигналу повинна бути не менше 2Тоsс (плюс невелика затримка внутрішньої RC ланцюга 20нс). Якщо предделитель включений перед TMRO, то на вхід синхронізатора надходить сигнал з асинхронного предделителя. Період сигналу T0CKI повинен бути не менш 4Тоsс (плюс невелика затримка внутрішньої RC ланцюга 40нс) ділене на коефіцієнт перед дільника.