Добрый день. Имеется на руках контроллер серии STM32F107xx. Пользуюсь активно таймером реального времени. И вот, собственно, возник вопрос: а какой у этого таймера диапазон измерения времени? Т.к. там 32-битный секундный счетчик, то максимум он сможет отсчитать ~136 лет. Отсчет начинается, как я понял, с 1900 года, т.е. до 2036 года. А что будет после его переполнения, т.е. после 2036 года? Можно ли самому подвинуть точку отсчета? Или там совсем все устроено по-другому? Объясните, пожалуйста
Согласно документации там стоит обычный 32-разрядный счётчик. Этот счётчик может считать только от 0x00000000 до 0xFFFFFFFF. После этого происходит переполнение с обнулением счётного регистра. Счётчик считает импульсы и он понятия не имеет о привязке к конкретному году. Интерпретация начального значения отсчёта задаётся программистом в его программе.
Там обычный 32-битный счетчик. Если начинать считать с 1970 года (как в традиционном unix time, что проще, т.к. бывают готовые процедуры конверсии в человекочитаемую дату) - вас долбанет небезызвестная проблема 2038, соответственно. Но если это важно и вы уверены что ваша железка будет актуальна через 20 лет - что мешает завести счетчик с старшими 32 битами? Можно старшую часть в каких-нибудь backup регистрах сохранить, например. Там у счетчика даже прерывание при переполнении возможно вроде. Ну а 64-битного числа секунд хватит ... ну вам точно хватит, люди столько не живут. Да и микроконтроллеры тоже.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения