По работе с датой

Здесь рассматриваются вопросы относящиеся к работе библиотеки AXLIB
Ответить
Алексей bird
Сообщения: 39
Зарегистрирован: 20 мар 2017, 22:38

По работе с датой

Сообщение Алексей bird » 08 янв 2019, 13:41

Алексей, добрый день!
Есть в твоей библиотеке команда void ds1307_write_data(BYTE data, BYTE day, BYTE month, BYTE year);
чтобы она работала, нужно указывать все параметры. Но вбивать день недели, имхо, глупо, RTC должны сами вычислять день. Эту команду полностью стоит выполнять первый раз при включении новых часов, когда часы "пустые" и нужно залить в них правильную дату. Но в последствии это уже не нужно, дата ставится без дня недели. Как заставить команду работать без указания дня недели?
Также, я так понимаю, функция не проверяет, ЧТО я записываю в RTC?

Аватара пользователя
gurvinok
Сообщения: 1525
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: По работе с датой

Сообщение gurvinok » 08 янв 2019, 14:59

RTC не умеют сами выставлять день недели. Данные пишутся в память часов.
Если долго мучиться, может быть получится.

Алексей bird
Сообщения: 39
Зарегистрирован: 20 мар 2017, 22:38

Re: По работе с датой

Сообщение Алексей bird » 08 янв 2019, 16:16

день недели устанавливается однажды, затем он рассчитывается уже RTC

Аватара пользователя
gurvinok
Сообщения: 1525
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: По работе с датой

Сообщение gurvinok » 08 янв 2019, 17:10

Где это написано в документации?
Если долго мучиться, может быть получится.

Алексей bird
Сообщения: 39
Зарегистрирован: 20 мар 2017, 22:38

Re: По работе с датой

Сообщение Алексей bird » 08 янв 2019, 18:55

Написано что? Что все данные загоняются только скопом? Не видел такого. Лет восемь назад, ещё на BASCOMе делал устройство, так там при запуске проверялось состояние DS1307(если новая микросхема или была вынута батарейка), если время не установлено(т.е. неверное), то записывались проверенные и верные значения. А уже через меню заносились текущие значения даты и времени. При внесении даты проверялся февраль на 28/29. А вот про день недели не было такого. Поэтому и спрашиваю, как можно занести дату РАЗДЕЛЬНО, а не скопом как в команде.

Аватара пользователя
gurvinok
Сообщения: 1525
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: По работе с датой

Сообщение gurvinok » 08 янв 2019, 19:24

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

Алексей bird
Сообщения: 39
Зарегистрирован: 20 мар 2017, 22:38

Re: По работе с датой

Сообщение Алексей bird » 08 янв 2019, 19:39

Алексей, а просить об корректировке имеет смысл? :oops: :oops: :oops:
Может можно(без лишних телодвижений) сделать так, что если параметр пустой, процедура i2c_send_byte(data); не использовалась бы. Т.е. идёт ds1307_write_data(, BYTE day, BYTE month, BYTE year); просто запятая и следующий параметр, как в том же цикле for можно без параметров указывать, просто запятые. Вот было бы отлично. :roll:

Алексей bird
Сообщения: 39
Зарегистрирован: 20 мар 2017, 22:38

Re: По работе с датой

Сообщение Алексей bird » 08 янв 2019, 23:21

Посмотрел я старые исходники, для BASCOM которые, похоже всё-таки DS1307 не умеют вычитать день недели из введённой даты, даже если она была перед этим введена. А я почему-то был уверен что она умеет, мнда... Теперь надо придумать алгоритм вычитания этого дня недели....

Ответить