Главная / Без рубрики / Таймеры‑счётчики в микроконтроллерах: режимы работы

Таймеры‑счётчики в микроконтроллерах: режимы работы

1. Введение: роль таймеров в микроконтроллерных системах

Таймеры‑счётчики — ключевые периферийные модули микроконтроллеров (МК), обеспечивающие:

  • измерение временных интервалов;
  • генерацию точных временных задержек;
  • формирование периодических сигналов (в т. ч. ШИМ);
  • подсчёт внешних событий;
  • синхронизацию задач в реальном времени;
  • управление двигателями, светодиодами, коммуникационными интерфейсами.

Основные характеристики:

  • разрядность (8-, 16-, 32‑битные);
  • источник тактования (внутренний осциллятор, внешний сигнал);
  • число независимых каналов;
  • поддерживаемые режимы работы.

2. Базовая архитектура таймера‑счётчика

2.1. Ключевые регистры

  • Счётный регистр (TCNT) — хранит текущее значение.
  • Регистр сравнения (OCRA/OCRB) — задаёт порог для событий.
  • Регистр периода (ARR, ICR) — определяет максимальную величину счёта.
  • Регистр управления (TCCR) — конфигурирует режим, предделитель, полярность.
  • Регистр флагов (TIFR) — отражает события (переполнение, сравнение).
  • Регистр маски прерываний (TIMSK) — разрешает/запрещает прерывания.

2.2. Основные блоки

  • предделитель частоты (prescaler);
  • компараторы;
  • логическая схема управления выводами (OCx);
  • блок генерации прерываний.

3. Режимы работы таймеров

3.1. Нормальный режим (Normal Mode)

  • Принцип: счёт от 0 до максимума (0xFF для 8 бит, 0xFFFF для 16 бит), затем переполнение.
  • События:
    • установка флага переполнения (TOV);
    • генерация прерывания (если разрешено).
  • Применение:
    • измерение длинных интервалов;
    • базовые временные задержки;
    • подсчёт событий (если вход — внешний сигнал).
  • Ограничения: нет автоматического перезапуска с заданным периодом.

3.2. Режим «Сброс при сравнении» (CTC, Clear Timer on Compare)

  • Принцип:
    • счётчик увеличивается до значения в регистре OCRA;
    • при совпадении:
      • счётчик сбрасывается в 0;
      • устанавливается флаг OCF (Output Compare Flag);
      • может сгенерироваться прерывание.
  • Период импульса:T=FCLK​(OCRA+1)⋅Предделитель​
  • Применение:
    • генерация периодических прерываний с точным периодом;
    • тактирование протоколов связи;
    • простые генераторы частоты.

3.3. Быстрый ШИМ (Fast PWM)

  • Принцип:
    • счётчик считает от 0 до ARR (или фиксированного максимума), затем сбрасывается.
    • при совпадении с OCRA/OCRB меняется состояние выходного сигнала.
  • Особенности:
    • высокая частота ШИМ (до половины тактовой);
    • асимметричная форма сигнала;
    • быстрая реакция на изменение коэффициента заполнения.
  • Режимы записи OCR:
    • немедленное обновление;
    • по переполнению (для избежания гонок).
  • Применение:
    • управление яркостью светодиодов;
    • аналоговое управление через фильтр НЧ;
    • сервоприводы (если частота подходит).

3.4. Фазо- и частотно-корректируемый ШИМ (Phase and Frequency Correct PWM)

  • Принцип:
    • двунаправленный счёт (0 → ARR → 0);
    • сравнение происходит на подъёме и спаде;
    • период ШИМ:
    TPWM​=FCLK​2⋅ARR⋅Предделитель​
  • Преимущества:
    • симметричная форма сигнала;
    • минимальная фазовая ошибка при изменении коэффициента заполнения.
  • Недостатки:
    • максимальная частота в 2 раза ниже, чем в Fast PWM.
  • Применение:
    • высокоточное управление двигателями;
    • аудиогенераторы;
    • системы с требованиями к симметрии сигнала.

3.5. Режим захвата ввода (Input Capture)

  • Принцип:
    • внешний сигнал (на выводе ICP) фиксирует текущее значение счётчика в регистр ICR.
    • сохраняется время наступления события.
  • События:
    • захват по фронту/спаду (настраивается);
    • прерывание по захвату.
  • Применение:
    • измерение длительности импульсов;
    • определение частоты сигнала;
    • декодирование ИК‑пультов;
    • синхронизация с внешними событиями.

3.6. Режим счёта внешних событий (External Event Counting)

  • Принцип:
    • таймер считает импульсы на внешнем входе (T0, T1 и т. п.);
    • предделитель может быть отключён или настроен.
  • Применение:
    • подсчёт оборотов вала (энкодер);
    • учёт продукции на конвейере;
    • измерение частоты низкоскоростных сигналов.

3.7. Режимы с двойным буфером (Dual‑Buffer)

  • Принцип:
    • регистры OCRA/OCRB имеют буферные копии;
    • обновление выходного значения происходит:
      • по переполнению;
      • по событию сравнения.
  • Цель:
    • избегание «рваных» импульсов при динамической настройке ШИМ;
    • синхронизация изменений с циклом счёта.
  • Применение:
    • динамическое изменение коэффициента заполнения без артефактов;
    • мультиплексированные ШИМ‑выходы.

4. Источники тактования

4.1. Внутренний тактовый сигнал

  • от системного генератора МК (через предделитель);
  • стабильность зависит от кварцевого резонатора или RC‑генератора.

4.2. Внешний тактовый сигнал

  • подаётся на вход таймера (например, T1);
  • позволяет синхронизироваться с внешним оборудованием;
  • используется для измерения частоты.

4.3. Асинхронный режим

  • таймер работает от отдельного низкочастотного генератора (например, 32 768 Гц);
  • применяется для часов реального времени (RTC).

5. Предделитель (Prescaler)

5.1. Назначение

  • деление входной частоты для:
    • увеличения периода счёта;
    • снижения частоты прерываний;
    • экономии энергии.

5.2. Коэффициенты деления

  • типичные значения: 1, 8, 64, 256, 1024;
  • настраиваются битами в регистре TCCR.

5.3. Особенности

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

6. Генерация прерываний и событий

6.1. Основные источники прерываний

  • переполнение счётчика (TOV);
  • совпадение с OCRA/OCRB (OCF);
  • захват ввода (ICF);
  • ошибка счёта (если поддерживается).

6.2. Использование

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

7. Практические примеры применения

7.1. Измерение частоты сигнала

  • режим Input Capture:
    • фиксировать время между фронтами;
    • вычислять частоту как F=1/Δt.

7.2. Генерация ШИМ для управления мотором

  • режим Fast PWM или Phase Correct PWM:
    • OCRA задаёт коэффициент заполнения;
    • ARR — период ШИМ.

7.3. Точное время задержки

  • режим CTC:
    • установить OCRA для нужного периода;
    • в прерывании увеличивать счётчик миллисекунд.

7.4. Подсчёт импульсов с датчика

  • режим External Event Counting:
    • каждый импульс увеличивает TCNT;
    • по переполнению — прерывание для обработки.

7.5. Часы реального времени

  • таймер в асинхронном режиме от 32 768 Гц;
  • прерывание по переполнению каждые 1 сек.

8. Оптимизация и типичные ошибки

8.1. Оптимизация производительности

  • использовать предделитель для снижения нагрузки на CPU;
  • применять двойной буфер при динамическом ШИМ;
  • минимизировать обработку в ISR таймера.

8.2. Типичные ошибки

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *