Перейти к содержанию
    

STM32F4xx вопрос по календарю

Всегда работал с обычным 32бит счетчиком в RTC. Но в STM32F405 вставлен календарь. Возникли вопросы.

значение для года 0 в календаре стмки какому году в реальности соответствует?

месяцы и дни считаются с 0 или с 1?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.09.2022 в 12:32, VladislavS сказал:

Там же BCD формат. 

Вы намекаете что год не может быть больше 99? 

спрошу по другому. Если я, к примеру, буду просто писать туда 22 для 2022 года, то будет ли правильно работать календарь в  високосные года?

Изменено пользователем viakon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

читал я это, но ответа на мой вопрос не нашел потому и спрашиваю тут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, viakon сказал:

Если я, к примеру, буду просто писать туда 22 для 2022 года, то будет ли правильно работать календарь в  високосные года?

1215867990__2022-09-09_104148771.thumb.png.235ff0b0067c008816f4411cd9d74671.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А с днями и месяцами как? январь это 0 или 1?

1 число месяца это 0 или 1?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, viakon сказал:

1 число месяца это 0 или 1?

Вы прикалываетесь? 0-е января, 31-е января, 32-е января, 99-е января...

Там описания то хрен да нихрена. Читайте внимательней.

1587792862__2022-09-09_105502276.thumb.png.49327d1978db01c87d51fb97736cc91a.png

Изменено пользователем VladislavS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, viakon сказал:

Если я, к примеру, буду просто писать туда 22 для 2022 года, то будет ли правильно работать календарь в  високосные года?

Просветите - в чём разница для високосности = 22 или 2022?

55 минут назад, viakon сказал:

нулевой год должен быть високосным.

0-й год?!!  :shok: Это в каком календаре такой есть? Или вы свой календарь изобретаете?  :biggrin:

1 час назад, VladislavS сказал:

Там же BCD формат. 

Как показывает практика, во многих таких календарях по настоящему не BCD-формат хранения, а BCD-формат инкремента (9->0) значения. Т.е. - BCD применяется только при инкременте значения 9. В остальных случаях может вести себя как обычная hex-тетрада. Это надо учитывать.

PS: Это не конкретно про этот МК (как в нём - не знаю), а про другие реализации подобных RTC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Боюсь представить, когда ТС узнает правило високосного года

Цитата

В григорианском календаре обычный год состоит из 365 дней. Поскольку фактическая продолжительность звездного года (период обращения Земли вокруг Солнца) составляет 365.2425 дней, «високосный год» в 366 дней используется один раз каждые четыре года для устранения ошибки, вызванной тремя обычными (но короткими) годами. Любой год, который делится на 4 без остатка, является високосным годом: например, 1988, 1992 и 1996 годы являются високосными годами.

Тем не менее, есть еще небольшая ошибка, которая должна быть учтена. Чтобы устранить эту ошибку, григорианский календарь предусматривает, что год, который делится без остатка на 100 (например, 1900) является високосным годом только в том случае, если он также без остатка делится на 400.

По этой причине следующие годы не являются високосными:

1700, 1800, 1900, 2100, 2200, 2300, 2500, 2600

Это потому, что они делятся без остатка на 100, но не на 400.

Следующие годы – високосные: 1600, 2000, 2400

Это потому, что они делятся без остатка на 100 и 400.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.09.2022 в 13:35, jcxz сказал:

0-й год?!!  :shok: Это в каком календаре такой есть? Или вы свой календарь изобретаете?  :biggrin:

поскольку значение года в календаре стмки имеет диапазон 0-99, потому и спрашиваю про 0-й год. Есть там привязка к реальному году например 2000 или я сам могу выбрать? опять же, подозреваю, что если в качестве начала отсчета выбрать 2010, то календарь нормально не будет обрабатывать високосные года.

 

В 09.09.2022 в 13:46, VladislavS сказал:

Боюсь представить, когда ТС узнает правило високосного года

В применении к стм достаточно правила деление без остатка на 4. Рад за Вашу эрудицию, но к данной теме она практического применения не имеет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, viakon сказал:

В применении к стм достаточно правила деление без остатка на 4

Чё эта? STM запретила их в машине времени использовать? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, viakon сказал:

поскольку значение года в календаре стмки имеет диапазон 0-99, потому и спрашиваю про 0-й год.

Вообще-то там не "значение года", а "2 последние цифры года". Почувствуйте разницу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.09.2022 в 15:15, jcxz сказал:

Берите 2000-й в качестве базового и не будет проблем.

Так и собирался сделать. осталось понять 1-е число месяца это 1 или 0 надо в календарь записывать? И январь также 0 или 1?

В 09.09.2022 в 15:35, jcxz сказал:

Почувствуйте разницу

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...