Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР2.docx
Скачиваний:
0
Добавлен:
12.02.2026
Размер:
2.6 Mб
Скачать

Таймеры-счётчики. Источники тактовой частоты. Регистры, определяющие работу таймера. Предделитель таймера. Основные режимы работы таймера: стандартный счётный режим (Normal), режим сброса при совпадении. Источники прерываний таймера.

Таймеры-счётчики.

Отсчитывает такты тактового сигнала работы МК ядра и позволяет в любое время пользоваться результатами счета. Входит в состав стандартной периферии любого 8-битного МК семейства AVR. Кол-во варьируется от 1 (в мл. линейке Tiny) до 6 (в ст. линейке AtXmega). В МК ATtiny104 1 таймер.

Таймер Т0:

  • минимальный набор функций, зависящий от модели МК

  • в одних моделях может использоваться только для отсчета и измерения временных интервалов или как счетчик внешних событий.

  • в других: к этим функциям добавляется возможность генерации сигналов с ШИМ фиксированной разрядности, а также возможность работать в асинхронном режиме в качестве часов реального времени.

В составе всех МК семейства имеется сторожевой таймер (Watch Dog Timer). Он позволяет избежать несанкционированного зацикливания программы, возникающего по тем или иным причинам.

Источники тактовой частоты.

Для работы любого микроконтроллера его необходимо обеспечить стабильным источником тактовых импульсов. Для МК Atmel возможно несколько вариантов:

  1. Внутренний генератор на RC-цепочке.

  • самый простой (+)

  • не требует дополнительных внешних компонентов (+)

  • особой точности от такого генератора ждать не стоит (-), его частота может меняться в зависимости от внешних условий в пределах 3 – 5 процентов

  1. Внешний кварцевый резонатор (или керамический).

  • максимальная поддерживаемая частота – 16 МГц.

  • для подключения используются специальные выводы – XTAL1 и XTAL2.

  • также для подключения используются дополнительные конденсаторы емкостью в 15 – 30 пФ, в зависимости от частоты.

  1. Внешний генератор на RC-цепочке.

  • вариант, нетребовательный к точности задаваемой системной частоты

  • для подключения используются те же самые выводы, что и в предыдущем случае

  • тактовая частота, которую даёт такая RC-цепочка, приблизительно описывается следующим выражением:

f = 1/3RC

  • емкость конденсатора RC-цепочки должна быть не ниже 22пФ

  • также, с помощью фьюз-бита CKOPT мы можем подключить между выводом XTAL1 и землёй внутренний конденсатор емкостью 36 пФ, что позволяет избавиться от внешнего конденсатора

  1. Внешний генератор.

  • подключаем выход генератора к выводу XTAL1

  • подобный способ тактирования микроконтроллера обеспечивает максимальную точность (+)

  • подобные генераторы имеют достаточно высокую стоимость (-)

  • Для подключения часового кварца используются отдельные выводы TOSC1 и TOSC2, причём использование дополнительных внешних конденсаторов не требуется.

Регистры, определяющие работу таймера.

Основными управляющими регистрами являются регистры TCCRxn (Timer/Counter Control Register) которые определяют:

  1. режим работы таймера

  2. значение коэффициента предделителя.

Режим работы таймера T0 определяется состоянием четырех битов WGM01…WGMx03 регистра TCCR0A и TCCR0B.

Значение предделителя можно изменить в регистре TCCR1B, за него отвечают три бита: CS12:CS11:CS10 (Clock Select), которые как раз и определяют коэффициент деления тактовых импульсов микроконтроллера.

За прерывания от таймеров отвечают регистры:

  • TIMSK (Timer/Counter Interrupt Mask)

  • TIFR (Timer/Counter Interrupt Flag Register)

TIMSK – это регистр масок, биты, находящиеся в нем, локально разрешают прерывания. Если бит установлен, значит конкретное прерывание разрешено. Если бит сброшен в ноль, значит данное прерывание запрещено. По умолчанию после системного сброса все биты регистра TIMSK сброшены в ноль.

TIFR – это непосредственно флаговый регистр. Когда какое-то прерывание срабатывает, устанавливается соответствующий ему флаг (то есть каждому из четырех прерываний регистра TIMSK соответствует свой собственный флаг регистра TIFR, так прерыванию TOIE1 соответствует флаг TOV1). Этот флаг сбрасывается на аппаратном уровне, когда программа совершает переход по вектору прерываний. Если прерывания запрещены, то флаг так и будет стоять до тех пор, пока прерывания не разрешат и программа не уйдет на их обработку.