Так ведь интерфейс I2C, значит, временнЫе интервалы зависят от тактовых импульсов с МК.
С данным датчиком я общалса поверхностно,в следствии чего не могу вспомнить его задержки.А вот например его молочный брат(тоже с ииц на борту) DS1820 требует 750мкс на опрос,и если будет времени меньше,то с него считаютса не верные данные!Я не про протокол сети говорю,а про считывание данных с датчика! Учите матчасть!
_________________ У кошки четыре ноги: вход, выход, земля и питание. Но трогать её не моги: получится замыкание
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Собрал часы, в них стоит DS1307. Периодически на индикаторах появляется белиберда в виде ненужных цифр (например, было 12 часов, но вдруг проскакивает 45 часов).
*Trigger* писал(а):
Ещё выяснил, чем больше частота прерываний, тем больше глюков.
Добавлено несколько минут спустя: Сделал так: время из RTC читается 3 раза с задержкой 200 мс, если все три раза совпали - время считано правильно.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
микроLAN (ds18b20) очень критично к прерыванию,остановке обмена I2C (ds1307) допускает полный останов обмена , но... за время останова содержимое регистров, естественно, изменится - так что надо "мурыжить" в разумных пределах. возможны "глюки" за счет неотслеженных наложений прерываний в программе только вот по "родному" даташиту полагается читать сразу весь "пакет" ОЗУ...дабы небыло непоняток с последующим чтением без предварительно указанного адреса. есть еще приемчик "чтение по заданному адресу" - но это отступление от стандартного протокола для DS1307
Ну почему же отступление, это вполне разумное решение, и для протокола i2c вполне себе норма.
Для DS3231 я вообще использовал циклическое чтение (начинал с середины пакета, проходит через конец в начало, и читал еще несколько байт). Так было удобно, потому что по середине были байты которые мне были не нужны.
Замерял длительность выполнения чтения времени и даты. примерно 3 млсек для TWI и 4 млсек для программного I2C. Плюс еще пара млсек для вывода значения на ЖКИ. Т.е. все достаточно быстро и должно протекать незаметно. Вот такая нехитрая функция отображает время на жки индикаторе:
Код:
//выводит на жки текущее время void ind_real_time (char line, char row) { rtc_get_time(&hour,&minute,&sec); // прочесть время из DS1307 make_buf_rtc_time (hour,minute, sec); // преобразовать в строку lcd_out (line, row, buf_rtc); // вывести значение на ЖКИ }
Функция вызывается один раз в секунду, по флагу, устанавливаемому по прерыванию Т0. Все работает как надо, но один непонятный момент наблюдается. Иногда индикация секунд как-бы приостанавливается на одну-две секунды. Т.е. 12:12:59 -> пауза -> 12:13:02. Думал , что возможно мк там где-то стопорится почему-то. Для проверки вывел рядом со временем мигающее каждые полсекунды двоеточие ':'. Так во время паузы часов, это двоеточие продолжает мигать в нормальном режиме, т.е. мк работает нормально.. Вот и не пойму теперь в чем причина такого притормаживания секунд? Толи сама мс часов неисправна, хотя за четверо суток часы не ушли ни вперед ни назад, толи ..... Может кто сталкивался с подобным? А то у меня пока одно решение в голове - выкинуть эти секунды вообще..
У меня вопрос: Как реализовать настройку даты DS1307, я понимаю что есть функция rtc_set_date(); и значение переменных просто записывается в DS1307. Но как быть с переполнением? Например чтобы настроить день я решил поступить так:
Я решил эту проблему так: сначала ставим год, потом месяц. В начале программы создаём массив с максимальным числом дней в месяцах (в феврале - 28). Устанавливаем дату и, если месяц не равен 2, сравниваем её элементом массива: max_date[month-1]. Если месяц равен 2, то если год не делится на 4, то сравниваем с max_date[month-1], а если делится - то с max_date[month-1]+1.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
???? в микросхемах RTC календарь прошит маской - он сам контролирует количесиво дней в месяце, нужно только правильно их задать при вводе, но данная проверка - функции программы ввода данных с клавиатуры управления, а не ввода в RTC
RTC правильно считает время, только если значения в его памяти допустимые. Если поставить там 255, он спокойно это значение запишет, но может уже никогда не выйти на нормальный режим. Да, нужно самому проверять количество дней в месяце, и в т.ч. учитывать високосные года. И при переходе между 12/24 форматами, тоже нужно программно поправлять часы.
Там внутри нету никакого контроллера, простая логика, которая никак не проверяет правильность данных в памяти.
Хотя вроде особых сложностей нет, я в своё время за несколько часов это всё написал на ассемблере (не учитывая время на оптимизацию кода).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения