- •Конспект лекцій з дисципліни “Мікропроцесорні пристрої”
- •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)
- •Система команд
- •Література
Модуль таймера tmr1
TMR1 – 16-розрядний таймер/лічильник, що складається з двох 8-розрядних регістрів (TMR1H і TMR1L), доступних для читання і запису. Рахунок виконується в спарених регістрах (TMR1H:TMR1L), при цьому інкрементується їх значення від 0000h до FFFFh, далі рахує з 0000h. При переповнюванні лічильника встановлюється в «1» прапор переривання TMR1IF в регістрі PIR1<0>. Само переривання можна дозволити/ заборонити установленням/скиданням біта TMR1IE в регістрі Р1Е1<0>. Блок-схема модуля TMR1 показана на рисунку 4.11.
Рисунок 4.11 – Блок схема модуля TMR1
Примітка. Якщо T1OSCEN=0, то інвертуючий елемент і резистивний зворотний зв'язок вимкнені для зменшення струму споживання.
TMR1 може працювати в двох режимах:
Режим таймера;
Режим лічильника.
Включення модуля TMR1 здійснюється установкою бита TMR1ON в
«1» (Т1СОМ<0>).
Бітом TMR1CS (T1CON<1>) вибирається джерело тактових імпульсів. У режимі таймера TMR1 інкрементується на кожному машинному циклі. Якщо TMR1 працює із зовнішнім джерелом тактового сигналу, то приріст відбувається за кожним переднім фронтом сигналу.
TMR1 має внутрішній вхід скидання від модуля СРР .
Коли включений генератор тактових імпульсів (T1OSCEN=1), виводи RC1/T1OSI/CCP2 і RCO/T1OSO/T1CKI настроєні як входи. Значення бітів TRISC<1:0> ігнорується, а читання даних з цих виводів дає результат «0».
Керуючі биті TMR1 знаходяться в регістрі T1CON (адреса 10h):
b7 b6 b5 b4 b3 b2 b1 b0
- |
- |
T1CKPS1 |
T1CKPS0 |
T1OSCEN |
-T1SYNC |
TMR1CS |
TMR1ON |
біти 7-6: не реалізовані: читаються як «0»;
біти 5-4: T1CKPS1:T1CKPS0: вибір коефіцієнта ділення переддільника TMR1 11 = 1:8, 10= 1:4, 01 = 1:2, 00=1:1;
біт 3:T1OSCEN: включення тактового генератора TMR1: 1 = генератор включений, 0 = генератор вимкнений (інвертуючий елемент і резистивний зворотний зв'язок вимкнені для зменшення струму споживання);
біт 2: - T1SYNC: синхронізація зовнішнього тактового сигналу TMR1CS = 1 1= не синхронізувати зовнішній тактовий,
0= синхронізувати зовнішній тактовий, TMR1CS = 0 : значення біта ігнорується;
біт 1: TMR1CS: вибір джерела тактового сигналу:
1= зовнішнє джерело з виведення RCO/T1OSO/T1CKI (активним є передній фронт сигналу),
0= внутрішнє джерело Fosc/4
біт 0: TMR1ON: Включення модуля TMR1: 1=включений, 0 = вимкнений.
У режимі таймера приріст походить від внутрішнього сигналу Fosc/4, коли біт TMR1CS (T1CON<1>) скинутий в «0». У цьому режимі біт синхронізації T1SYNC (Т1СОМ<2>) ігнорується, тому що внутрішній тактовий сигнал завжди синхронізований.
У режимі лічильника TMR1 може працювати в синхронному або асинхронному режимі залежно від стану бита TMR1CS. Коли TMR1 використовує зовнішній тактовий сигнал, приріст таймера відбувається за переднім фронтом. Включивши TMR1 в режим зовнішнього тактового сигналу, рахунок почнеться тільки після появи заднього фронту.
У режимі синхронного лічильника робота TMR1 від зовнішнього
джерела тактового сигналу вибирається установкою біта TMR1CS в «1». У цьому режимі приріст таймера відбувається за кожним переднім фронтом сигналу на виведенні RC1/T1OSI/CCP2 (якщо T1OSCEN=1) або RCO/T1OSO/T1CKI (якщо T1OSCEN=0).
Якщо -T1SYNC=0, то активний фронт зовнішнього тактового сигналу синхронізується з внутрішнім тактовим сигналом на виході асинхронного переддільника.
У режимі SLEEP мікроконтролера лічильник не буде інкрементуватися (за наявності тактового сигналу), оскільки синхронізатор вимкнений (переддільник продовжує рахунок тактових імпульсів)
У режимі асинхронного лічильника, якщо біт -T1SYNC (T1CON<2>) встановлений в «1», зовнішній тактовий сигнал TMR1 не синхронізується з внутрішнім тактовим сигналом мікроконтролера, таймер продовжує працювати в режимі SLEEP. Переповнювання таймера викличе
«пробудження» мікроконтролера, якщо дозволено переривання від TMR1. Проте потрібна обережність при записі/читанні TMR1. У цьому режимі TMR1 не може використовуватися для захоплення/порівняння даних модуля РСР.
Читання TMR1Н або TMR1L, під час рахунку в асинхронному режимі, гарантує отримання поточного значення лічильника (реалізовано апаратно). Проте користувач повинен мати на увазі, що читання 16-розрядного значення виконується за кожним байтом. Це накладає деякі обмеження, оскільки таймер може переповнитися між читаннями байтів.
Запис в TMR1 рекомендується виконувати після зупинки таймера. Запис в регістри TMR1 під час приросту таймера може призвести до непередбачуваного значення регістра.
Якщо модуль ССР1 або ССР2 працює в режимі порівняння з трігером спеціальних функцій (ССР1МЗ : ССР1 М0=1011), то сигнал трігера скине TMR1. TMR1 повинен працювати в режимі синхронізованого зовнішнього тактового сигналу або внутрішнього тактового сигналу. У асинхронному режимі ця функція не працює.
Коли запис в TMR1 співпадає із сигналом скидання від трігера спеціальних подій, пріоритет віддається запису в TMR1.
У цьому режимі модуля ССР період скидання TMR1 зберігається в регістрах CCPRxH:CCPRxL.
Регістри TMR1Н і TMR1L не скидаються в 00h при скиданні по включенню живлення POR і інших видах скидання, окрім скидання по сигналу трігера спеціальних подій модуля ССР1 або ССР2.
Регістр T1CON скидається в 00h при скиданні POR і BOR (TMR1 вимикається, коефіцієнт переддільника рівний 1:1). При решті всіх видів скидання значення регістра Т1CON не змінюється.
Переддільник TMR1 очищається при записі в регістр TMR1L або TMR1Н.
