Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кофанов_ЦП, ч. 2 (КЛ_ел.варіант).docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3.69 Mб
Скачать

Так само здійснюється керування також виводами ос1в і ос0. Докладніше застосування режимів виводів сигналів збігу обговорюються під час розгляду режимів т/л.

7.7. Блок захоплення

Вимірювання у цифровий спосіб потребують зняття показів таймера-лічильника в деяких часових позначках, наприклад, між початком і кінцем півперіоду вхідного сигналу, і наступного підрахунку параметрів, наприклад, частоти цього сигналу. Блок захоплення (рис. 8,а) якраз і призначений для збереження в певні моменти часу стану лічильника Т/Л1 у регістрі захоплення ICR1, формат якого наведено на рис. 8,б. Крім того, як уже зазначалося, у певних режимах цей регістр може використовуватися також для того, щоб задати максимальний код лічильника ТОР.

Рис. 8. Блок захоплення (а) та формат РВВ захоплення (б)

Вхідний сигнал, який визначає моменти захоплення коду Т/Л1 до регістра ICR1, може надходити від зовнішнього виводу МК ІСР1 (Input Capture pin – вивід входу захоплення), якщо вивід порту РЕ.0 сконфігуровано як вхід. Альтернативним варіантом є сигнал з виходу аналогового компаратора (АК) АСО (Analog Comparator Output). Перемикання вхідного сигналу здійснюється мультиплексором, на адресний вхід якого надходить біт АСІС (Analog Comparator Input Capture – вхід захоплення АК) з РВВ ACSR (Analog Comparator Control and Status Register – регістр стану і керування АК). При АСІС = 0 АК відключений від блоку захоплення, вхід якого з'єднується із зовнішнім виводом, а при АСІС = 1, навпаки, зовнішній вивід виконує стандартну функцію порту і на вхід блоку надходить сигнал АСО з виходу АК.

Як із зовнішнього виводу ІСР1, так і з виходу АК АСО вхідний сигнал захоплення має бути прямокутним імпульсом. Його активний фронт, що визначає момент запису коду з Т/Л1 до регістра ICR1, формується в детекторі фронтів і задається бітом ICES1 з РВВ TCCR1B (див. табл. 7.2): імпульс запису вибирається за негативним перепадом напруги, якщо ICES1 = 0, і за позитивним перепадом, якщо ICES1 = 1. Одночасно встановлюється прапор ICF1 запиту на переривання, який сигналізує, що дані записано до регістра захоплення ICR1.

Інший біт ICNC1 з РВВ TCCR1B (див. табл. 7.2) керує схемою пригнічення завад. Якщо цей біт скинуто, то за умовчанням пригнічувач вимкнено, і захоплення відбувається першим імпульсом з детектора фронтів, що відповідає активному перепаду вхідного сигналу захоплення. Але внаслідок дії завад можливі сплески сигналу, зокрема деренчання фронтів, що може спричинити виникнення паразитних коротких імпульсів у детекторі фронтів. Встановленням біта ICNC1 вмикається схема пригнічення завад на основі простої цифрової фільтрації: з появою активного фронту робляться вибірки з частотою синхроімпульсів clk і, якщо протягом чотирьох тактів усі вибірки підтверджують вибраний активний рівень (лог. 0 або 1), захоплення виконується, інакше короткочасні завади ігноруються. Слід враховувати, що детектор фронтів разом із синхронізатором вносить затримку 2,5 … 3 такти, а за ввімкненого пригнічувача завад затримка збільшується ще на 4 такти.

Обмін інформацією між шиною даних з 16-розрядним регістром захоплення ICR1 здійснюється за допомогою тимчасового регістра ТЕМР у складі Т/Л1 і порядок обміну має бути таким самим, як описано в п. 7.4.

7.8. Режими таймерів-лічильників

Таймери-лічильники мають декілька різновидів режимів роботи, які задаються регістрами керування (див. табл. 7.2). Для Т/Л0 режими встановлюються бітами WGM0[1:0] регістра TCCR0 (табл. 7.3), а для Т/Л1 – бітами WGM1[3:0] регістрів TCCR1В, TCCR1А (табл. 7.4). Розглянемо типові режими роботи таймерів-лічильників.

а) Режим Normal підсумовувальний лічильник (WGM0[1:0] = 0b00 = 0, WGM1[3:0] = 0b0000 = 0). У цьому режимі кожний Т/Л є звичайний підсумовувальний лічильник, тобто працює з інкрементом. З надходженням вхідних синхроімпульсів clkT0, clkT1 його вихідний код N (рис. 9) зростає від BOTTOM = 0 до максимально можливого значення МАХ = M – 1 (МАХ = $FF – для Т/Л0 та $FFFF – для Т/Л1, М – модуль лічби), після чого код N скидається до нуля і цикл лічби повторюється, як і в звичайного підсумовувального лічильника. Одночасно під час переходу Т/Л з МАХ до нуля генерується переривання за переповненням, яке фіксується прапором TOVn (n = 0 або 1). Якщо це переривання дозволене, прапор скидається, як тільки МК переходить до його обробки.

Таблиця 7.3 – Waveform Generation Mode: режими Т/Л0

Номер режима

TCCR0

TCCR0

Режим Т/Л0

WGM01

WGM00

0

0

0

Normal – підсумовувальний лічильник

1

0

1

Phase correct PWM – ШІМ із симетрією по фазі

2

1

0

Clear Timer on Compare Match (CTC) – скидання Т/Л під час збігу

3

1

1

Fast PWM – швидкодійна ШІМ

Таблиця 7.4 – Waveform Generation Mode: режими Т/Л1

Номер режима

TCCR

TCCR

TCCR

TCCR

Режим*)

Т/Л1

TOP = = M - 1

WGM13

WGM12

WGM11

WGM10

0

0

0

0

0

N, 16 біт

$FFFF

1

0

0

0

1

PCP, 8 біт

$00FF

2

0

0

1

0

PCP, 9 біт

$01FF

3

0

0

1

1

PCP, 10 біт

$03FF

4

0

1

0

0

CTC

OCR1A

5

0

1

0

1

FP, 8 біт

$00FF

6

0

1

1

0

FP, 9 біт

$01FF

7

0

1

1

1

FP, 10 біт

$03FF

8

1

0

0

0

PFCP

ICR1

9

1

0

0

1

PFCP

OCR1A

10

1

0

1

0

PCP

ICR1

11

1

0

1

1

PCP

OCR1A

12

1

1

0

0

CTC

ICR1

13

1

1

0

1

14

1

1

1

0

FP

ICR1

15

1

1

1

1

FP

OCR1A

*) Позначення: N: Normal – підсумовувальний лічильник;

CTC: Clear Timer on Compare Match – скидання Т/Л під час збігу;

FP: Fast PWM – швидкодійна ШІМ;

PCP: Phase correct PWM – ШІМ із симетрією по фазі;