Внутреннее устройство реальных часов микроконтроллеров (RTC): дизайн, точность и безопасность
Часть 3 серии таймеров микроконтроллеров: Внутри Real-Time Clocks (RTC)
В этом выпуске мы погружаемся в сердце микроконтроллерных реальных часов (RTC). Предыдущие посты охватывали основы таймеров и широтно-импульсную модуляцию. Эта статья объясняет, как RTC поддерживают точные интервалы в одну секунду, управляют временем и датой, компенсируют дрейф и защищают от подделок.
Что делает RTC
RTC — это выделенное оборудование, генерирующее стабильный тик в одну секунду и поддерживающее непрерывный счётчик. Простая временная диаграмма показывает генератор тиков, программную рутину, читающую секундный счётчик, и аларм, срабатывающий через три секунды. Ключевые требования — точность и непрерывная работа.

Рисунок 1. Базовая временная диаграмма RTC
Типичные аппаратные особенности
Современные микроконтроллерные RTC обычно включают:
- внутренний генератор 32 768 Гц (часто с опцией кварца или TCXO)
- внешний тактовый вход, способный дать высокоточный референс
- мультиплексор для выбора источника, за которым следует предделитель, делящий на 32 768 (2¹⁵) для генерации 1 Гц тика
- 32-битный (или больше) секундный счётчик, и опциональные счётчики минут, часов, дней, месяцев и лет
- выходной пин прямоугольной волны 1 Гц
- прерывания для алармов, секундных тиков или других событий
- выделенный пин резервного питания, обычно монетной батареей, чтобы часы продолжали идти, когда остальной чип выключен

Рисунок 2. Общие аппаратные особенности RTC
Точность и компенсация частоты
Сердце RTC — его кварц 32 768 Гц. В хорошо спроектированном генераторе сам кварц является главным источником ошибки. Внешние TCXO могут давать суб-ppm стабильность, в то время как внутренние генераторы могут быть скомпенсированы для достижения сравнимой производительности.
Типичные источники ошибки включают:
- начальную допуск кварца и окружающей схемы
- температурный дрейф, следующий предсказуемой квадратичной кривой
- старение, обычно всего несколько ppm в год
График ниже, любезно предоставленный Texas Instruments, иллюстрирует, как температура и начальная ошибка комбинируются, и как тщательная калибровка может привести общую ошибку в жёлтую зону — достижимую цель после измерения на уровне платы.

Рисунок 3. Ошибка против температуры (Texas Instruments)
С точностью 1 ppm за год часы отклоняются примерно на 30 секунд — намного лучше большинства хоббийных проектов, но всё ещё стоит учитывать в миссионно-критичных системах.
Компенсация ошибок тайминга
Существует две распространённые стратегии исправления малого дрейфа без жертвы простотой оборудования:
Настраиваемый предделитель. Если RTC предоставляет программируемый предделитель, ПО может корректировать модуль каждые несколько секунд. Например, часы, бегущие на 0.00010 с быстро, могут изменить предделитель с 32 768 на 32 781 раз в четвёртую секунду, добавляя недостающие 0.00010 с каждый раз.

Рисунок 4. Корректировка предделителя для борьбы с дрейфом
Преимущества: тонкая коррекция и минимальный код. Недостаток: требует настраиваемого предделителя и дополнительных регистров.
Программная коррекция. Когда оборудование не имеет программируемого предделителя, прошивка может вести накопленный счётчик секунд. Когда накопленная ошибка достигает одной секунды, она добавляет или вычитает тик. Коррекция видна только раз за цикл, что может ощущаться как резкий скачок.

Рисунок 5. Программная коррекция тайминга
Преимущество: работает с любым RTC. Недостаток: заметные скачки частоты тиков.
Вопросы безопасности
В приложениях, где время привязано к биллингу, лимитам использования или критической последовательности, защита RTC от взлома обязательна. Многие микроконтроллеры предоставляют:
- защищённые от записи регистры, которые могут быть навсегда заблокированы ПО
- требование аппаратного сброса для изменения времени (полный сброс стирает блокировку)
- обнаружение взлома на уровне корпуса для оповещения о физическом вмешательстве
Например, MCU, используемый в этой статье, имеет бит блокировки, который, будучи установленным, не может быть сброшен до перезагрузки чипа, предотвращая изменение часов вредоносным кодом.
Управление временем и датой
Некоторые RTC интегрируют полные счётчики времени суток и календаря. Если оборудование их не имеет, прошивка может выводить дату из 32-битного секундного счётчика, используя стандартные алгоритмы. Стандартная библиотека C time.h ожидает функцию, возвращающую секунды с эпохи (обычно 1 янв 1970). Простая обёртка get_time(), читающая счётчик RTC, кормит библиотеку, которая затем обрабатывает високосные годы, летнее время и форматирование.
Ограничения 32-битных секундных счётчиков
32-битный счётчик переполнится после 2³² секунд — чуть более 136 лет. Однако, когда эпоха начинается в 1970 году, счётчик перевернётся в 2038 году (проблема Y2038). Системы, полагающиеся на библиотеку C, могут столкнуться с неопределённым поведением, когда счётчик достигнет 2³¹ – 1.
Миссия NASA Deep Impact потеряла связь в 2013 году после того, как 32-битный таймер, отслеживавший время в 0.1-секундных инкрементах, переполнился, потенциально повредив команды управления.
«Хотя точная причина потери неизвестна, анализ выявил потенциальную проблему с временными метками компьютера, которая могла привести к потере управления ориентацией Deep Impact».
— NASA News Release, 2013
Проектировщики должны использовать счётчики, комфортно превышающие ожидаемую жизнь системы, или реализовать обработку переполнения в прошивке.
Дальнейшие шаги
Финальная статья этой серии охватит сторожевые таймеры (watchdog timers), сеть безопасности, поддерживающую микроконтроллер живым даже при зависании ПО.
Промышленные технологии
- Трансформация управления облаком в стратегическую IT-практику
- Заряд и разряд конденсатора: Практический эксперимент с RC-цепью
- Расчет напряжения и тока в реактивных DC цепях
- Раскрытие промышленного роста: как IoT движет новой промышленной революцией
- Когда обновлять рабочее оборудование: умные бизнес-решения
- Семь ключевых драйверов ускорения цифровой трансформации
- Внедряйте высокопроизводительную обработку: повысьте скорость, точность и ROI
- Робот в реальном времени обнаруживает 3D-изменения и повышает безопасность солдата через AR
- Продвинутый авиационный сенсор обеспечивает обнаружение льда в реальном времени и мониторинг скорости таян…
- OPC Unified Architecture: достижение реального времени Enterprise Interoperability