Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Часы реального времени (RTC) в таймерах микроконтроллера

Эта статья является третьей из серии о таймерах микроконтроллеров, в которой описываются RTC внутри микроконтроллера.

Эта статья является третьей из серии, посвященной таймерам микроконтроллеров. В первой статье описываются основные функции большинства типов таймеров и рассматриваются периодические таймеры, а во второй - таймеры MCU с широтно-импульсной модуляцией.

Часы реального времени (RTC) - это таймеры, предназначенные для поддержания временной развертки в одну секунду. Кроме того, RTC часто используется для отслеживания времени на часах и календарной даты в программном или аппаратном обеспечении. Многие функции RTC очень специализированы и необходимы для поддержания высокой точности и очень надежной работы. Существуют устройства RTC, внешние по отношению к микроконтроллеру, которые взаимодействуют с I 2 Шина C или SPI.

В этой статье описываются RTC внутри микроконтроллера.

Обзор часов реального времени

Основная функция часов реального времени - производить интервалы в одну секунду и поддерживать непрерывный счет.

Вы можете увидеть это на диаграмме ниже.

Рисунок 1. На этой временной диаграмме показана основная функция RTC

Также показана программная функция A, считывающая счетчик секунд и планирующая событие B, которое должно произойти через три секунды в будущем. Это действие называется тревогой. Обратите внимание, что счетчик секунд работает непрерывно и не останавливается и не запускается. Два основных требования к RTC - это точность и непрерывная работа.

На следующей схеме показаны общие аппаратные функции RTC.

Рисунок 2. Аппаратные функции часов реального времени

RTC часто имеет собственный внутренний генератор с внешним кварцевым резонатором и возможность использования внешнего опорного сигнала частоты. Все источники тактовой частоты работают на частоте 32 768 Гц. Внешний источник синхронизации позволяет использовать очень точное и стабильное устройство, такое как TCXO (кварцевый генератор с температурной компенсацией).

Источник тактовой частоты выбирается с помощью мультиплексора и вводится в предварительный делитель частоты, который делит тактовую частоту на коэффициент 32 768 (215) для получения тактовой частоты в одну секунду.

Базовый RTC имеет счетчик секунд, который обычно составляет 32 бита или более. В некоторых RTC есть специальные счетчики для отслеживания времени суток и календарной даты.

Базовый RTC без счетчиков времени и даты использует для этой цели программное обеспечение. Распространенный вариант - прямоугольная волна с частотой 1 Гц от выходного контакта. RTC будет иметь несколько возможных событий для генерации прерывания процессора.

RTC часто имеет специальный вывод питания, позволяющий работать, когда остальная часть микроконтроллера отключена. Этот вывод питания обычно подключается к батарее или отдельному источнику питания.

Точность RTC и частотная компенсация

Точность RTC зависит от источника тактовой частоты 32 768 Гц. В хорошо спроектированном кварцевом генераторе основным источником ошибок является кристалл. Для высокоточной синхронизации можно использовать внешний TCXO или использовать специальные методы частотной компенсации с менее дорогими кристаллами и внутренним генератором. Есть три основных источника ошибок кристалла.

На приведенном ниже графике показаны несколько концепций, связанных с точностью RTC.

Рисунок 3. График, показывающий погрешность измерения с использованием температуры, предоставлено Texas Instruments

Темно-синяя кривая на этом графике показывает типичный начальный допуск и изменение с температурой. Розовая кривая показывает только температурную погрешность. Ключом к компенсации температуры является тот факт, что поведение кристалла хорошо известно и предсказывается с помощью квадратного уравнения. Если начальная ошибка измеряется после того, как печатная плата изготовлена ​​и температура известна, можно компенсировать самые большие источники ошибок.

Желтая полоса - разумная цель для точности после тщательной компенсации. Имейте в виду, что 1 ppm в год - это около 30 секунд. Старение кристаллов трудно компенсировать. К счастью, старение обычно составляет всего несколько частей на миллион в год.

Как изменить время RTC

Вот два способа изменить время RTC как части системы для компенсации ошибок.

На первой диаграмме (рис. 4) показано количество циклов генератора, подсчитываемых предварительным делителем для каждого периода счетчика секунд.

Первые две секунды - это обычные 32 768 циклов. Программное обеспечение использует показания температуры и начальную ошибку, чтобы определить, что генератор работает немного быстро, и 32 768 циклов на самом деле составляют период 0,99990 секунды. Чтобы компенсировать эту небольшую ошибку, программное обеспечение сообщает RTC об изменении модуля предварительного делителя до 32 781 на каждую четвертую секунду, чтобы добавить некоторое время.

Рисунок 4. Представление циклов осциллятора, подсчитанных предварительным делителем

Преимущество этого метода заключается в небольшом изменении периода от секунды до секунды. Однако для этого метода требуется настраиваемый предделитель и дополнительные регистры для хранения специального предварительного отсчета и количества секунд между применением специального отсчета. Я думаю, это круто. Немного сложно, но довольно круто.

Что делать, если в RTC нет специального предделителя для настройки времени? На этой схеме показан другой метод.

Рисунок 5. Та же ситуация, что и на рисунке 4, но без предварительного делителя частоты

В этом случае число в квадратах - это счетчик секунд. Показанный счетчик - 100251, за которым следует 100252. Программное обеспечение постоянно вычисляет корректировку и отслеживает счетчик секунд RTC. Когда ошибка накапливается ровно до одной секунды, программное обеспечение добавляет или вычитает секунду, чтобы скорректировать накопленную ошибку.

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

Безопасность в RTC

Безопасность - интересное требование. Есть приложения, в которых время используется для выставления счетов клиентам за использование услуги или потребление ресурса. Существует обширная практика предотвращения или обнаружения взлома RTC. Методы варьируются от обнаружения вторжений для корпусов до специальных функций в микроконтроллере.

RTC на микроконтроллере, который я использую в настоящее время, имеет специальные регистры, позволяющие программному обеспечению постоянно блокировать критические регистры. После блокировки они не могут быть изменены и защищены от взлома или неконтролируемого кода. Для изменения времени требуется полный сброс микроконтроллера.

Время и дата

В некоторых RTC есть аппаратные счетчики для отслеживания времени дня и календарной даты. Для этого требуются счетчики минут, часов, дней, месяцев, лет и учет високосных лет. Время дня и календарные даты также могут быть сохранены с помощью программного обеспечения.

Ярким примером могут служить функции стандартной библиотеки C, представленные в файле time.h. Для микроконтроллера эта система может быть основана на счетчике секунд RTC. Для полной поддержки библиотеки time.h необходимо написать четыре небольшие пользовательские функции.

Одна интересующая нас функция вызывается функцией time () в библиотеке, которая возвращает время в виде количества секунд с момента начала, называемого «эпохой», обычно 1 января 1970 г. Как правило, пользовательская функция для чтения аппаратный таймер называется get_time () или аналогичным вариантом. Все, что делает get_time (), - это считывает счетчик секунд и возвращает значение. Библиотека сделает все остальное, чтобы перевести это время в секундах на текущее время дня и дату.

Проблемы с 32-битными счетчиками секунд

32-битный счетчик секунд работает долго, но не вечно. Могут возникнуть серьезные проблемы из-за ограниченного диапазона счета. Например, системное время, основанное на 32-битном счетчике с использованием стандартной библиотеки C и эпохи 1 января 1970 г., может дать сбой в январе 2038 г., когда счетчик перевернется после максимального отсчета. Эта проблема известна как проблема Y2038.

Ошибка произошла во время космической миссии NASA Deep Impact по изучению кометы. Основная цель миссии была достигнута, и космический корабль продолжил изучение других объектов. Однако в 2013 году связь внезапно прервалась. Вот официальный комментарий НАСА.

<цитата>

«Хотя точная причина потери неизвестна, анализ выявил потенциальную проблему с компьютерными метками времени, которая могла привести к потере контроля над ориентацией Deep Impact».

- Выпуск новостей НАСА за 2013 г.

Вероятная причина сбоя заключается в том, что 32-битный таймер поддерживал время с шагом 0,1 секунды и перебрасывался, вызывая «завершение» миссии.

Мое предложение, когда речь идет о времени и дате, состоит в том, чтобы использовать в вашем дизайне более длительный, чем ожидалось, срок службы.

Что дальше

Следующая статья завершает серию сторожевых таймеров.


Промышленные технологии

  1. Пора превратить управление облаком в реальную ИТ-практику
  2. Зарядка и разрядка конденсатора
  3. Расчет напряжения и тока
  4. Настоящая возможность - это промышленная возможность
  5. Рабочее оборудование:пришло ли время для обновления?
  6. 7 драйверов цифровой трансформации
  7. Пришло ли время для высокопроизводительной обработки?
  8. Робот обнаруживает изменения в 3D и делится ими в режиме реального времени
  9. Улучшенный датчик обнаруживает нарастание льда в режиме реального времени
  10. Взаимодействие предприятия в режиме реального времени