- •Цифрові пристрої, ч. 2
- •1. Компоненти мікропроцесорної техніки
- •2. Структура мпс
- •3 Архітектура ядра мк avr
- •3.1 Склад і принцип дії мк
- •3.2 Конвеєр команд
- •3.4 Формат команд і способи адресації
- •3.5 Пам'ять програм (Flash)
- •3.7 Регістровий файл
- •3.6 Регістр стану
- •4 Система команд мк avr
- •4.5 Стекова адресація
- •5 Eeprom
- •6. Напівпровідникові запам'ятовувальні пристрої
- •5.1. Загальні відомості
- •5.2. Класифікація зп
- •5.2. Структура запам’ятовувальних пристроїв
- •5.2. Оперативні запам’ятовувальні пристрої
- •7. Таймери-лічильники
- •7.1. Загальні відомості
- •7.3. Селектор синхроімпульсів
- •7.4. Блоки лічильників
- •Так само здійснюється керування також виводами ос1в і ос0. Докладніше застосування режимів виводів сигналів збігу обговорюються під час розгляду режимів т/л.
- •Pfcp: Phase and Frequency Correct pwm – шім із симетрією по фазі і періоду.
- •Де якщо використовується внутрішнє джерело синхросигналу (Kn – коефіцієнт поділу передподільника частоти).
- •Fast pwm – швидкодійна шім (б)
- •7.9. Переривання від таймерів-лічильників
- •Прапорів переривань (б) та приклад (в)
- •8. Аналогові компаратори
- •8.1. Загальні відомості
- •8.2. Детектори рівня
- •8.3. Підсилювачі-обмежувачі
- •8.4. Аналоговий компаратор з позитивним зворотним зв’язком
- •8.5. Інтегральний аналоговий компаратор у складі мк avr
- •8.6. Модуль аналогового компаратора
7.9. Переривання від таймерів-лічильників
Таблиця 7.8 – Біти РВВ прапорів переривань TIFR
Біт |
Назва та призначення прапора переривання |
TOV1 |
Timer/Counter1, Overflow Flag – Переповнення Т/Л1 |
OCF1A |
Timer/Counter1, Output Compare A Match Flag – Збіг у каналі А Т/Л1 |
OCF1B |
Timer/Counter1, Output Compare B Match Flag – Збіг у каналі В Т/Л1 |
ICF1 |
Timer/Counter1, Input Capture Flag – Подія захоплення Т/Л1 |
TOV0 |
Timer/Counter0 Overflow Flag – Переповнення Т/Л0 |
OCF0 |
Output Compare Flag 0 – Збіг у Т/Л0 |
Таймери-лічильники генерують запити на переривання за настання таких подій (табл. 7.8): TOVn (n = 0, 1) – переповнення лічильника, OCFx (x = 0, 1A, 1B) – рівність кодів лічильника і регістра порівняння, ICF1 – зміст лічильника збережено у регістрі захоплення. Ці запити фіксуються в регістрі прапорів переривань TIFR (рис. 13, а, б).
Рис. 13. Переривання від Т/Л (а), формат РВВ маски і
Прапорів переривань (б) та приклад (в)
Таблиця 7.9 – Біти РВВ маски переривань TIMSK
Біт |
Назва та призначення дозволу переривання |
TOIE1 |
Timer/Counter1, Overflow Interrupt Enable – Переповнення Т/Л1 |
OCIE1A |
Timer/Counter1, Output Compare А Match Interrupt Enable – Збіг у каналі А Т/Л1 |
OCIE1B |
Timer/Counter1, Output Compare B Match Interrupt Enable – Збіг у каналі B Т/Л1 |
TICIE1 |
Timer/Counter1, Input Capture Interrupt Enable – Подія захоплення Т/Л1 |
TOIE0 |
Timer/Counter0 Overflow Interrupt Enable – Переповнення Т/Л0 |
OCIE0 |
Timer/Counter0 Output Compare Match Interrupt Enable – Збіг у Т/Л0 |
Кожному біту регістра прапорів TIFR відповідає свій біт регістра маски переривань TIMSK (табл. 7.9). Для дозволу вибраного переривання потрібно встановити відповідний йому біт у регістрі маски (див. рис. 13, а, б), наприклад, записом біта ОСІЕА1 = 1 дозволяємо переривання за збігом у каналі А Т/Л1 (рис. 13, в). Дозволені переривання надходять до модуля переривань і в разі наявності загального дозволу на переривання обробляються за схемою, описаною в п. Х.Х. Під час переходу до обробки переривання, біт І загального дозволу переривання і відповідний прапор у регістрі TIFR скидаються, а по виходу з підпрограми обробки переривання біт І автоматично встановлюється, отже, МК готовий до обробки наступного переривання. На рис. 14 наведено приклад налаштування модуля лічби та частоти Т/Л1, канал А мовою асемблер з макросами.
Рис. 14. Налаштування модуля лічби та частоти Т/Л1, канал А мовою асемблер
7.10. Вартовий таймер
Вартовий таймер (ВТ) – Watchdog Timer (WDT), що міститься у складі кожного МК AVR, призначений для убезпечення від зациклювання МК через помилки в програмі або під дією завад. Його основу (рис. 15) становить двійковий лічильник – передподільник частоти власного незалежного тактового генератора частоти 1 МГц (стандартний ВТ) або 128 кГц (розширений ВТ). Цей генератор ніколи не вимикається, навіть коли МК перебуває у будь-якому зі сплячих режимів.
Період ВТ (інтервал, що називається тайм-аутом), коли зміст лічильника досягає заданого значення, вибирається мультиплексором. Відтак, по закінченні цього періоду на виході ВТ формується сигнал системного скидання МК MCU Reset. Завдяки цьому, якщо відбудеться несанкціоноване зациклювання програми, МК скидається, тобто здійснюється перехід на початок програми. Але щоб уникнути скидання МК за нормального виконання програми, ВТ необхідно регулярно скидати командою WDR через проміжки часу, що не перевищують тайм-аут.
Рис. 15. Вартовий таймер (ВТ) та формат його регістра керування
Керування ВТ здійснюється регістром WDTCR, формат якого наведено на рис. 15, призначення його бітів подано в табл. 7.10, а вибір коефіцієнта поділу і, отже, період тайм-ауту – у табл. 7.11.
Таблиця 7.10 – Біти РВВ керування вартового таймера WDTCR
Біт |
Назва та призначення |
WDCE |
Watchdog Change Enable – Дозвіл зміни конфігурації ВТ |
WDE |
Watchdog Enable – Дозвіл ВТ: 1 – увімкнути, 0 - вимкнути |
WDP[2:0] |
Watchdog Timer Prescaler 2 … 0 – К-т поділу передподільника BT |
Таблиця 7.11 – Вибір коефіцієнта поділу передподільника BT
WDP2 |
WDP1 |
WDP0 |
Кількість тактів генератора |
Період тайм-ауту, мс (Vcc = 5 В) |
0 |
0 |
0 |
16K (16 384) |
16.3 |
0 |
0 |
1 |
32K (32 768) |
32.5 |
0 |
1 |
0 |
64K (65 536) |
65 |
0 |
1 |
1 |
128K (131 072) |
130 |
1 |
0 |
0 |
256K (262 144) |
260 |
1 |
0 |
1 |
512K (524 288) |
520 |
1 |
1 |
0 |
1 024K (1 048 576) |
1000 |
1 |
1 |
1 |
2 048K (2 097 152) |
2100 |
Аби не відбулося несанкціонованого вимкнення або ввімкнення ВТ, наприклад, через заваду, передбачено процедури його налаштування, за яких спочатку однією командою потрібно дозволити зміни у ВТ бітами WDCE і WDE (після цієї команди біт WDCE автоматично скидається), а відтак уже за скинутого біта WDCE вносити зміни (приклади на рис. 16).
; ***** Процедура ввімкнення ВТ і налаштування його тайм-ауту
; (Макрос LDIO @1,@2 див. на рис. 14)
cli ; Заборона переривань (щоб вони не завадили виконати процедуру)
wdr ; Скидання ВТ (щоб не відбулося скидання МК під час процедури)
LDIO WDCR,(1<<WDCE) | (1<<WDE) ; Дозвіл змін у ВТ
; Увімкнення ВТ і налаштування його тайм-ауту ~ 2 с (WDP[2:0] = 7):
LDIO WDCR,(1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0)
sei ; Дозвіл переривань
;=======================================================
; ***** Процедура вимкнення ВТ
cli ; Заборона переривань (щоб вони не завадили виконати процедуру)
wdr ; Скидання ВТ (щоб не відбулося скидання МК під час процедури)
LDIO WDCR,(1<<WDCE) | (1<<WDE) ; Дозвіл змін у ВТ
LDIO WDCR,(0<<WDE) ; Вимкнення ВТ
sei ; Дозвіл переривань
Рис. 16. Процедури ввімкнення та вимкнення ВТ
