День добрый! Вопрос: 1. t1=RTC.get(DS1307_DATE, true); 2. t1=RTC.get(DS1307_DATE, false); я не могу найти описания в чем отличие строк и что при этом происходит.
То же вопросик по часикам: Код (Text): #include <DS1307new.h> uint16_t startAddr = 0x0000; // Начальный адрес для хранения в NV-RAM uint16_t lastAddr; // новый адрес для хранения в NV-RAM uint16_t TimeIsSet = 0xaa55; // По этой переменной проверяется то, что время не нужно устанавливать заново void setup(void) { // Запускаем наши часики (RTC) RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t)); RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t)); if (TimeIsSet != 0xaa55) { RTC.stopClock(); RTC.fillByYMD(2015,01,24); //устанавливаем дату RTC.fillByHMS(23,57,0); //устанавливаем время RTC.setTime(); TimeIsSet = 0xaa55; RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t)); RTC.startClock(); } else { RTC.getTime(); } RTC.setCTRL(); sensors.begin(); } Вот такой фрагмент кода - скажите - я прошил ардуино, при прошивке установил текущую дату и время - если уже часы были установлены - они не поменяют значение? Надо перед прошивкой вытащить батарейку?
RTC.fillByYMD(2015,01,24); //устанавливаем дату RTC.fillByHMS(23,57,0); //устанавливаем время , вот эти строки при повторной компиляции надо закоментить и тогда время не собьется.
Я имел ввиду немного другое - как я понял - при каждой компиляции - время устанавливалось то, которое указано в этих строках. Но вот вопрос про строчку uint16_t TimeIsSet = 0xaa55; ???? // По этой переменной проверяется то, что время не нужно устанавливать заново ??? Т.е. может время один раз установилось, но при повторных компиляциях оно не менялось?? И чтобы его поменять, надо для начала сбросить батарейку, потом прошить и все будет хоккей? А то у меня что то с контроллером - сегодня свет включился в 6 утра, хотя должен был в 9... Могло вообще время сбиться? Например при отключении света(хотя батарейка новая - такого быть по идее не должно)?
А есть фото модуля RTC ??? Я на своем модуле не замечал чтобы время убегало. Лично ситуация была: батарейка новая, но напряжения нормального не давала и часы выключались при отключении света (ардуино из сети). Заменил батарейку все стало ок. По коду не такой код лично использовал.
Для того, чтобы не нужно было вытаскивать батарею для того, чтобы перевести время нужно сделать аналогично тому, как описано в конце статьи (вообще весь код можете забрать, чип RTC одинаковый) http://wiki.amperka.ru/время:rtc-индикатор время будет корректироваться раз при первом закуске после новой закачки. Я развлекался с часами DS3231, делал возможность корректировки времени с кнопок с секундной синхронизацией. У меня за 2-е суток погрешность хода не ушла более 1сек.
Ну модуль стандартный - фотки нет, так как уже установлено в готовое устройство. батарею сегодня попробую поменять. Сами то часы не убегают - у меня походу отключался свет, и при включении, автоматически установилось новое время (хотя по идее там должно было устанавливаться, только если ранее не установлены часы - ну может кусок кода где потерял). В принципе сегодня попробую вынуть батарейку, перешить с установкой времени и сразу перешить с закоменченными строками установки - после этого уж точно не должно сбиваться... А насчет ухода времени - ну например у меня в бегущей строке с такими же модулями немного идут вперед, ну в год получается минут 7-9... Мне не страшно, так как в этом проекте +- 30 минут не страшно Просто когда сегодня включился аквариум в 6 утра - и ребенок проснулся - от жены много интересного услышал Спасибо всем за ответы.