А как правильно то инициализировать часы?
Всё по DS1307 и прочим часам Dallas (Maxim)
- Сообщения: 567
- Зарегистрирован: Ср дек 19, 2012 12:16:22
батарейку не подключал. А без батарейки не будет работать? А если батарейка сдохнет, то после замены батарейки опять программатор тащить что ли?
А как правильно то инициализировать часы?
А как правильно то инициализировать часы?
- Реклама
А с парашютом я прыгать боюсь, а то вдруг он не раскроется.
Часовая микруха ведёт счёт времени в ОЗУ, т.е. в энергозависимой памяти. Да и тупо сам генератор требует для хода питание. Именно по этому нужно держать микруху под напряжением.
Микруха требует разовой инициализации (описано в даташите, выставление частоты SQW). А дальше достаточно выставить дату и время, которые будут актуальны пока есть достаточно напряжения питания.
После замены батарейки, устройство должно (после включения) обеспечить провести иницализацию автоматически, предоставить возможность настройки даты и времени, и вывод актуальных данных на устройство вывода.
Часовая микруха ведёт счёт времени в ОЗУ, т.е. в энергозависимой памяти. Да и тупо сам генератор требует для хода питание. Именно по этому нужно держать микруху под напряжением.
Микруха требует разовой инициализации (описано в даташите, выставление частоты SQW). А дальше достаточно выставить дату и время, которые будут актуальны пока есть достаточно напряжения питания.
После замены батарейки, устройство должно (после включения) обеспечить провести иницализацию автоматически, предоставить возможность настройки даты и времени, и вывод актуальных данных на устройство вывода.
Если в голове каша, значит ваш котелок варит!
Если батарейка таки сдохнет, через несколько лет, то надо просто настроить время, и программатор для этого не нужен.
При старте МК должен проверить бит СН по нулевому адресу. Если он равен нулю, значит все нормально, можно считывать все данные.
Если же он в единице, значит часы стоят и их нужно проинициализировать и включить генерацию СН = 0.
Батарея только подпитывает DS1302 на время отсутствия основно питания, ее на годы хватит.
Если же он в единице, значит часы стоят и их нужно проинициализировать и включить генерацию СН = 0.
Батарея только подпитывает DS1302 на время отсутствия основно питания, ее на годы хватит.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
[uquote="Zhuk72",url="/forum/viewtopic.php?p=3158014#p3158014"]При старте МК должен проверить бит СН по нулевому адресу.[/uquote]
На память писал, всё не упомнишь. По любому RTFM или хотя бы в сети поискать как это у кого-то реализовано...
На память писал, всё не упомнишь. По любому RTFM или хотя бы в сети поискать как это у кого-то реализовано...
Если в голове каша, значит ваш котелок варит!
- Реклама
- Сообщения: 9
- Зарегистрирован: Вс май 14, 2017 14:49:50
кусок кода си для ds1307 и at98c2051:
...
if (mode == 0) Out_1Hz ();//отображение времени
if (mode == 7) Stop_Out_1Hz ();//отображение температуры
/ ************************************************* ********************************* /
void Stop_Out_1Hz (void) // SQW / OUT on
{
start ();
write (0xd0);
write (0x07);
write (0x10);
stop ();
}
/ ************************************************* ********************************* /
void Stop_Out_1Hz (void) // SQW / OUT on
{
start ();
write (0xd0);
write (0x07);
write (0x80);
stop ();
}
/ ************************************************* ********************************* /
Выход SQW работает как положено, но сами часы произвольно останавливаются когда им вздумается. Никак не пойму в чем проблема может быть?
Добавлено after 1 minute 55 seconds:
ошибся, конечно же
void Out_1Hz (void) // SQW / OUT on
{
start ();
write (0xd0);
write (0x07);
write (0x10);
stop ();
}
...
if (mode == 0) Out_1Hz ();//отображение времени
if (mode == 7) Stop_Out_1Hz ();//отображение температуры
/ ************************************************* ********************************* /
void Stop_Out_1Hz (void) // SQW / OUT on
{
start ();
write (0xd0);
write (0x07);
write (0x10);
stop ();
}
/ ************************************************* ********************************* /
void Stop_Out_1Hz (void) // SQW / OUT on
{
start ();
write (0xd0);
write (0x07);
write (0x80);
stop ();
}
/ ************************************************* ********************************* /
Выход SQW работает как положено, но сами часы произвольно останавливаются когда им вздумается. Никак не пойму в чем проблема может быть?
Добавлено after 1 minute 55 seconds:
ошибся, конечно же
void Out_1Hz (void) // SQW / OUT on
{
start ();
write (0xd0);
write (0x07);
write (0x10);
stop ();
}
Бывает дело во флюсе. После простоя флюса (без питания) типа "отпускает". После подачи питания регенерирует и начинает снова пропускать и коротить. Я тут попал на флюс TT http://radiokot.ru/forum/viewtopic.php? ... 9#p3201059
Если в голове каша, значит ваш котелок варит!
- Сообщения: 490
- Зарегистрирован: Вс май 01, 2016 17:51:38
подскажите почему когда к 1307 прикасаешься она перестает считать, и МК зависает.
Добавлено after 32 seconds:
может есть схемотехническое решение этого беспредела
Добавлено after 32 seconds:
может есть схемотехническое решение этого беспредела
а зачем прикасаться к ней? скоре всего сбивается от наводок или статики кварк его корпус надо землитть на полигон GND
Добавлено after 49 seconds:
а флюса после паяк должны быть тщателно удалены и обмыты
Добавлено after 49 seconds:
а флюса после паяк должны быть тщателно удалены и обмыты
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Есть вариант, что стоят не те резисторы подтяжки на шине ай-квадрат-си. 4К7 должно быть.
Если в голове каша, значит ваш котелок варит!
Приветствую! Прикрутил сей часики к МК,вроде как работают...на данный момент считывание и вывод данных с часов происходит в основном цикле программы постоянно. за секунду цикл проходит от 8 до 9 раз, т.е. за чуть менее чем за секунду происходит бестолковое считывание и вывод одних и тех же данных.Хотелось бы узнать специалистов как обычно происходит считывание данных и вывод их в проектах посерьезнее...
Вывод SQW настраиваете на 1Гц и заводите его на внешнее прерывание, в обработчике которого выставляете флаг что пора считать время (время считываем в основном цикле!).
«И всё-таки она вертится!»
[uquote="Apparatchik",url="/forum/viewtopic.php?p=3314256#p3314256"]Вывод SQW настраиваете на 1Гц и заводите его на внешнее прерывание, в обработчике которого выставляете флаг что пора считать время (время считываем в основном цикле!).[/uquote] не много ли привилегий затрачивать внешнее прерывание,ну или даже целую ножку на это дело?
Думаю не много, смотря какой мк используете, другого варианта нет, иначе придется бомбить их все время по i2c и отслеживать изменилось ли время. И есче настораживает что основной цикл за секунду проходит всего 9 раз, это что ж там такое "тяжеловесное"?
«И всё-таки она вертится!»
[uquote="Apparatchik",url="/forum/viewtopic.php?p=3314263#p3314263"]другого варианта нет[/uquote] программно думаю можно, что-то корявое сварганить...
Хотелось бы посмотреть на другое, "oригинальное" решение проблемы.
«И всё-таки она вертится!»
[uquote="Apparatchik",url="/forum/viewtopic.php?p=3314263#p3314263"]это что ж там такое "тяжеловесное"?[/uquote]
Atmega16+LCD1602+RTCds1307
Atmega16+LCD1602+RTCds1307
9 раз это очень мало, где-то лишние задержки. Как в таком случае кнопки опрашивать или что другое делать?
«И всё-таки она вертится!»
[uquote="Apparatchik",url="/forum/viewtopic.php?p=3314272#p3314272"]Хотелось бы посмотреть на другое, "oригинальное" решение проблемы.[/uquote] надеюсь отзовется, кто блеснет оригинальностью)) ну а я могу предложить считывание по таймеру. если время прохода цикла около 100 ms,буду считывать через каждые 500-700ms...
Не прокатит, так, как часы не синхронизированы с мк, на дисплее будет заметно. Некоторые секунды будут длинее обычного и потом перескакивать через одну. Как часто это будет происходить зависит от величины "разсинхрона". Проверено!
P.S. и по аналогии с Вашим мнением про ножку: А не жирно ли для этого использовать таймер? тоесть для работы одного таймера (RTC) нужно задействовать есче один в мк.
P.S. и по аналогии с Вашим мнением про ножку: А не жирно ли для этого использовать таймер? тоесть для работы одного таймера (RTC) нужно задействовать есче один в мк.
«И всё-таки она вертится!»


