Таймеры, ШИМ и измерение времени
Цель: Понять аппаратные таймеры микроконтроллера, делители частоты, сравнение и захват значения счётчика, а также формирование широтно-импульсного сигнала без программных задержек.
3 часа короткая теория, самостоятельная практика, проверка результата и тест.
Суть темы
Аппаратный таймер — счётчик, который изменяет своё значение от тактового сигнала независимо от выполнения обычного программного кода. Его используют для точных задержек, периодических событий, измерения длительности внешних импульсов и формирования широтно-импульсной модуляции (ШИМ).
Перед счётчиком может стоять делитель частоты. При достижении заданного предела возникает событие переполнения или обновления. Регистр сравнения позволяет выполнить действие при совпадении значения счётчика с заданным числом, а режим захвата сохраняет текущее значение счётчика в момент внешнего фронта.
Ключевые связи и параметры
Сначала определяют фактическую частоту тактирования таймера по дереву тактирования микроконтроллера. Если после делителя частота счёта равна 1 МГц, один отсчёт соответствует 1 мкс. При тысяче отсчётов период составляет примерно 1 мс. Конкретный счётчик может считать от нуля до N включительно, поэтому программируемое значение всегда сверяют с документацией.
fсч = fтаймера / коэффициент_деленияT ≈ N / fсчВ режиме ШИМ период задаётся диапазоном счёта, а момент переключения — значением сравнения.
Разбор примера
После деления частоты таймер считает с частотой 1 МГц. Для периода около 1 мс требуется около 1000 отсчётов. Если момент сравнения установлен примерно на четверть периода, получаем заполнение около 25% при соответствующей полярности выхода.
При измерении внешнего сигнала два соседних захваченных значения отличаются на 100 отсчётов. При цене отсчёта 1 мкс период равен примерно 100 мкс, то есть частота — около 10 кГц.
Практическая работа и проверка
- По документации определите реальную частоту таймера.
- Рассчитайте делитель и период для сигнала около 1 кГц.
- Измерьте частоту осциллографом.
- Сформируйте несколько значений заполнения ШИМ и сравните расчёт с осциллограммой.
- Измерьте внешний период режимом захвата и учтите переполнение счётчика.
Типичные ошибки и диагностика
- Считать частоту таймера равной частоте ядра без проверки дерева тактирования.
- Ошибаться на единицу из-за границ счёта.
- Формировать точный период программным переключением вывода при переменной загрузке процессора.
- Вычитать захваченные значения без учёта переполнения счётчика.
Связь с реальным устройством
Таймеры используются в управлении приводами, измерителях частоты, генерации звука, опросе датчиков и временных протоколах. Их преимущество — аппаратная повторяемость времени при правильной настройке тактового сигнала.
Что нужно запомнить
- Таймер считает аппаратные отсчёты от известной частоты.
- Делитель частоты задаёт цену одного отсчёта.
- Сравнение удобно для генерации событий, захват — для измерения времени внешнего сигнала.
- Период и заполнение ШИМ задаются параметрами счётчика.
- Фактическую частоту таймера определяют по документации и дереву тактирования.