Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Удаленная работа
Помощь проекту


Калькулятор таймера микроконтроллера



Таймер/прескейлер МК

Подбор предделителя (prescaler) и значения перезагрузки (ARR/reload) под нужную частоту или период прерывания. Подходит для AVR, STM32, ESP и др.

Прескейлер и перезагрузка — что подбирает калькулятор

Аппаратный таймер микроконтроллера — это счётчик, который тикает от тактовой частоты ядра или шины. Чтобы получить редкое прерывание (скажем, раз в секунду) от быстрого кварца (десятки мегагерц), одного счётчика мало: он переполнится за доли миллисекунды. Поэтому перед счётчиком ставят предделитель (prescaler, PSC), который делит тактовую частоту, а сам счётчик считает до значения перезагрузки (ARR, TOP, reload) и сбрасывается, вызывая прерывание переполнения. Две ручки — PSC и ARR — вместе задают частоту событий. Калькулятор берёт тактовую частоту fclk (её обычно определяет кварцевый резонатор и множитель PLL), нужную частоту или период и разрядность таймера, а затем перебирает предделители, подбирая такую пару PSC и ARR, при которой ARR помещается в разрядность, а ошибка минимальна.

f = fclk / (PSC · (ARR + 1))    T = (PSC · (ARR + 1)) / fclk

Прибавка единицы к ARR не случайна: счётчик проходит значения 0, 1, 2 … ARR — это ARR + 1 состояний, и только на переполнении генерируется событие. Отсюда прямое следствие: удвоив PSC, вы вдвое понижаете частоту прерываний при том же ARR; то же делает удвоение (ARR + 1). Один и тот же результат почти всегда достижим множеством пар — калькулятор выбирает ту, что даёт наименьшую погрешность округления. Практический совет: держите ARR как можно больше, а предделитель — как можно меньше. Крупный ARR даёт мелкий шаг подстройки частоты (разрешение тем выше, чем больше делений умещается в счётчик), а заодно оставляет место для точных режимов захвата и сравнения, которые считают в тех же тиках, что и переполнение.

Разрядность таймера и минимальная частота

Разрядность ограничивает максимальный ARR: 8-битный таймер считает до 255, 16-битный — до 65 535, 32-битный — до 4 294 967 295. Чем шире счётчик, тем реже прерывания можно получить без экстремального предделителя и тем точнее ложится нужная частота. Предделитель в калькуляторе ограничен диапазоном 1…65 536 — это типичный 16-битный PSC-регистр большинства МК. Перемножив пределы, легко оценить самую низкую достижимую частоту при данной тактовой: для 8-битного счётчика она в 256 раз выше, чем для 16-битного. Если цель недостижима — например, 8-битный таймер не может тикать раз в секунду от 72 МГц — калькулятор честно об этом сообщит, и решение здесь — взять таймер пошире или снизить fclk.

Ошибка округления и как её убрать

Поскольку PSC и ARR — целые числа, точное попадание в частоту возможно лишь тогда, когда fclk нацело делится на произведение PSC · (ARR + 1). Если делится не нацело, остаётся погрешность, которую калькулятор показывает в процентах — это та же природа, что у ошибки бодрейта UART, где целочисленный делитель не всегда даёт ровную скорость. Убрать ошибку помогает выбор «удобной» тактовой частоты, кратной цели: например, 72 МГц идеально делится под 1 кГц и 1 Гц, тогда как 72 МГц под 1024 Гц уже даст остаток. Для звуковых и связных задач, где важна стабильность интервала, к погрешности стоит относиться так же серьёзно, как к тайм-слотам кадра UART или к битовому таймингу CAN, где рассинхрон приёмника и передатчика приводит к ошибкам.

Регистры разных МК: PSC−1, TOP, делители

Важный практический нюанс: значения из калькулятора — «математические». В STM32 предделитель и перезагрузка записываются как PSC−1 и ARR, потому что железо само добавляет единицу: чтобы делить на 1125, в регистр PSC пишут 1124. В AVR предделитель не произвольный — доступны только фиксированные коэффициенты (1, 8, 64, 256, 1024), а роль ARR играет TOP через регистры OCRnA или ICRn в режиме CTC; из-за скудного набора делителей ошибка на AVR обычно заметнее, чем на STM32 с его плавным PSC. В ESP32 таймер-группа имеет 16-битный делитель и 64-битный счётчик, поэтому 32-битная разрядность здесь — запас с огромным резервом, а очень длинные интервалы задаются одним регистром сравнения без программного досчёта. Всегда сверяйтесь с даташитом своего чипа: смысл «поделить на N» одинаков, но раскладка по регистрам, момент прибавки единицы и доступные делители различаются. Отдельно проверьте, от какой шины тикает таймер: на STM32 таймеры на APB1/APB2 при включённом предделителе шины получают удвоенную частоту, и если подставить в калькулятор частоту ядра вместо реальной частоты таймера, результат уедет ровно вдвое.

Диапазоны разрядности — справочная таблица

Ниже — предельные значения для разной разрядности и самая низкая частота прерываний, достижимая при тактовой 72 МГц и предделителе до 65 536 (типовой сценарий STM32F1). Числа получены прямой подстановкой в формулу f = fclk / (PSC · (ARR + 1)).

РазрядностьМакс. ARRМин. частота (fclk 72 МГц)Макс. периодГде встречается
8 бит2554,29 Гц0,233 сTimer0/Timer2 AVR, базовые
16 бит65 5350,0168 Гц59,7 сTIMx STM32, Timer1 AVR
32 бита4 294 967 2952,56·10⁻⁷ Гц≈ 45 сутTIM2/TIM5 STM32, ESP32

Где применяют — и где не годится

Таймер с прескейлером — основа тактирования во встраиваемой технике: периодические прерывания планировщика RTOS, опрос датчиков с фиксированным шагом, генерация ШИМ-сигнала заданной частоты, формирование импульсов для сервопривода (стандартные 50 Гц) и шага шагового двигателя. Если нужен единичный аппаратный интервал без ядра МК, иногда проще внешний таймер NE555. Метод не годится там, где требуется частота выше половины тактовой (счётчику не хватает тактов на один период) или где нестабилен сам кварц — тогда никакая пара PSC/ARR не спасёт, и джиттер задаёт источник тактов, а не делитель. Для очень длинных интервалов (минуты, часы) вместо предельного растягивания ARR разумнее считать переполнения программно.

Пример

На значениях по умолчанию (fclk = 72 МГц, задаём частоту прерывания 1 Гц, 16-битный таймер) калькулятор даёт PSC = 1125 и ARR = 63999 (0xF9FF). Проверка: делитель 1125 · (63999 + 1) = 1125 · 64000 = 72 000 000, и f = 72·10⁶ / 72 000 000 = 1,0000 Гц, ошибка ≈ 0%. Пара найдена точной, потому что 72 000 000 нацело делится на 1125 · 64000. Для STM32 в регистры запишите PSC = 1124 и ARR = 63999.

См. также: ШИМ · таймер NE555 · ошибка бодрейта · битовый тайминг CAN · сервопривод · все калькуляторы


Частые вопросы

Как рассчитать прескейлер и период таймера?

Частота таймера = тактовая частота / (прескейлер · (N+1)), где N — значение перезагрузки (ARR/период). Задав нужную частоту или период прерывания, подбирают такой прескейлер, чтобы N поместилось в разрядность таймера. Калькулятор находит подходящую пару и показывает ошибку.

Почему получается ошибка частоты таймера?

Значение перезагрузки — целое число, поэтому не любую частоту можно получить точно. Калькулятор показывает реальную частоту после округления и её отклонение от заданной; для меньшей ошибки иногда меняют прескейлер или тактовую частоту.

Что такое ARR и prescaler в STM32?

Prescaler (PSC) делит тактовую частоту таймера, а ARR (Auto-Reload Register) задаёт, до какого значения таймер считает перед переполнением. Вместе они определяют период: T = (PSC+1)·(ARR+1)/fтакт.


Похожие калькуляторы — Embedded / интерфейсы
Pull-up I2C  ·  RS-485 линия  ·  ADC ↔ напряжение  ·  ШИМ (скважность)  ·  ШИМ-ЦАП фильтр  ·  R-2R ЦАП  ·  все калькуляторы →


© 2003—2026 «KAZUS.RUN - Электронный портал»