Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Вс авг 06, 2017 22:29:20
батарейку не подключал. А без батарейки не будет работать? А если батарейка сдохнет, то после замены батарейки опять программатор тащить что ли?
А как правильно то инициализировать часы?
Вс авг 06, 2017 23:08:44
А с парашютом я прыгать боюсь, а то вдруг он не раскроется.
Часовая микруха ведёт счёт времени в ОЗУ, т.е. в энергозависимой памяти. Да и тупо сам генератор требует для хода питание. Именно по этому нужно держать микруху под напряжением.
Микруха требует разовой инициализации (описано в даташите, выставление частоты SQW). А дальше достаточно выставить дату и время, которые будут актуальны пока есть достаточно напряжения питания.
После замены батарейки, устройство должно (после включения) обеспечить провести иницализацию автоматически, предоставить возможность настройки даты и времени, и вывод актуальных данных на устройство вывода.
Вс авг 06, 2017 23:53:46
Если батарейка таки сдохнет, через несколько лет, то надо просто настроить время, и программатор для этого не нужен.
Пн авг 07, 2017 20:25:51
При старте МК должен проверить бит СН по нулевому адресу. Если он равен нулю, значит все нормально, можно считывать все данные.
Если же он в единице, значит часы стоят и их нужно проинициализировать и включить генерацию СН = 0.
Батарея только подпитывает DS1302 на время отсутствия основно питания, ее на годы хватит.
Вт авг 08, 2017 04:25:02
При старте МК должен проверить бит СН по нулевому адресу.
На память писал, всё не упомнишь. По любому RTFM или хотя бы в сети поискать как это у кого-то реализовано...
Вт окт 10, 2017 15:49:52
кусок кода си для 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 ();
}
Ср окт 11, 2017 00:13:11
Бывает дело во флюсе. После простоя флюса (без питания) типа "отпускает". После подачи питания регенерирует и начинает снова пропускать и коротить. Я тут попал на флюс TT
viewtopic.php?p=3201059#p3201059
Ср дек 27, 2017 04:42:49
подскажите почему когда к 1307 прикасаешься она перестает считать, и МК зависает.
Добавлено after 32 seconds:
может есть схемотехническое решение этого беспредела
Сб янв 06, 2018 13:40:59
а зачем прикасаться к ней? скоре всего сбивается от наводок или статики кварк его корпус надо землитть на полигон GND
Добавлено after 49 seconds:
а флюса после паяк должны быть тщателно удалены и обмыты
Сб янв 06, 2018 14:36:23
Есть вариант, что стоят не те резисторы подтяжки на шине ай-квадрат-си. 4К7 должно быть.
Ср фев 21, 2018 19:49:32
Приветствую! Прикрутил сей часики к МК,вроде как работают...на данный момент считывание и вывод данных с часов происходит в основном цикле программы постоянно. за секунду цикл проходит от 8 до 9 раз, т.е. за чуть менее чем за секунду происходит бестолковое считывание и вывод одних и тех же данных.Хотелось бы узнать специалистов как обычно происходит считывание данных и вывод их в проектах посерьезнее...
Ср фев 21, 2018 20:12:00
Вывод SQW настраиваете на 1Гц и заводите его на внешнее прерывание, в обработчике которого выставляете флаг что пора считать время (время считываем в основном цикле!).
Ср фев 21, 2018 20:23:00
Вывод SQW настраиваете на 1Гц и заводите его на внешнее прерывание, в обработчике которого выставляете флаг что пора считать время (время считываем в основном цикле!).
не много ли привилегий затрачивать внешнее прерывание,ну или даже целую ножку на это дело?
Ср фев 21, 2018 20:26:24
Думаю не много, смотря какой мк используете, другого варианта нет, иначе придется бомбить их все время по i2c и отслеживать изменилось ли время. И есче настораживает что основной цикл за секунду проходит всего 9 раз, это что ж там такое "тяжеловесное"?
Ср фев 21, 2018 20:33:24
другого варианта нет
программно думаю можно, что-то корявое сварганить...
Ср фев 21, 2018 20:36:25
Хотелось бы посмотреть на другое, "oригинальное" решение проблемы.
Ср фев 21, 2018 20:38:25
это что ж там такое "тяжеловесное"?
Atmega16+LCD1602+RTCds1307
Ср фев 21, 2018 20:42:01
9 раз это очень мало, где-то лишние задержки. Как в таком случае кнопки опрашивать или что другое делать?
Ср фев 21, 2018 20:47:11
Хотелось бы посмотреть на другое, "oригинальное" решение проблемы.
надеюсь отзовется, кто блеснет оригинальностью)) ну а я могу предложить считывание по таймеру. если время прохода цикла около 100 ms,буду считывать через каждые 500-700ms...
Ср фев 21, 2018 20:53:48
Не прокатит, так, как часы не синхронизированы с мк, на дисплее будет заметно. Некоторые секунды будут длинее обычного и потом перескакивать через одну. Как часто это будет происходить зависит от величины "разсинхрона". Проверено!
P.S. и по аналогии с Вашим мнением про ножку: А не жирно ли для этого использовать таймер? тоесть для работы одного таймера (RTC) нужно задействовать есче один в мк.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.