Ошибка в программе проявлялась бы постоянно, а тут когда попало и как правило в диапазоне температур 0..+8*С. Посылаю запрос ещё раз - данные правильные.
_________________ Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Ну значит или где-то память бьётся или считываете не то, всё одно - это, вероятнее всего, программная ошибка. При отсутствии питания датчик выдаёт +85, при недостатке питания завышает измеренную температуру. Возможно, вы не выдерживаете интервал измерения и считываете показания за рано. Вы после посылки команды на преобразование ведете проверку готовности датчика? или просто делаете таймоут?
Увы, у меня самого были программы, в которых я был "апсалютно уверен". Но тем не менее, при всплывании проблемы, оказывалось, что сам накосячил (Было так, что на шине не работал восьмой датчик - оказалось, в одном месте банк памяти не переключал. На малых кристаллах проблема не всплывала, так как там тех банков попросту не было и так и так писалось куда нужно, а при переносе на более крупный кристал - проблема всплыла).
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Проверка по контрольной сумме - не панацея. Просто, при проверке по CRC будет меньше ошибок, но это не спасёт от "проскока" ошибочных данных. Постарайтесь найти и устранить причину получения ложных данных. Это может быть как программная, так и аппаратная ошибка (включая прокладку провода для DS параллельно с силовыми кабелями).
Ошибка в программе проявлялась бы постоянно, а тут когда попало и как правило в диапазоне температур 0..+8*С. Посылаю запрос ещё раз - данные правильные.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
При отсутствии питания датчик выдаёт +85, при недостатке питания завышает измеренную температуру. Возможно, вы не выдерживаете интервал измерения и считываете показания за рано. Вы после посылки команды на преобразование ведете проверку готовности датчика? или просто делаете таймоут?
Насчёт +85 знаю - видел это на другом устройстве, когда был плохой контакт в разъёме под датчик. Тут же вся цепь запаяна и не имеет разъёмов. Таймаут ровно 1 секунда - этого должно хватать всегда. Если бы не хватало - ошибки летели бы с большой частотой, а не несколько раз в день при одном измерении в минуту, причём ошибка всегда одна и та же - к измеренной температуре добавляется +48. Подозреваю всё-таки битую память в датчике...
_________________ Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Здравствуйте!!!набросал функцию вычисления СRC8 для DS18b20 по 56 битам,прошу протестить и вынести вердикт))с калькуляторами чет не разобрался...не знаю чему верить)
Код:
int main() { uint64_t DATA = 0xB8C53028; char polynomial_CRC8 = 0x8C; uint64_t intermediate = 0; char counter = 0;
while (counter <= 55) { if (DATA & 1)
{ DATA >>= 1; intermediate = (DATA^polynomial_CRC8) & 0xFF; DATA >>= 8; DATA <<= 8; DATA |= intermediate; counter++; } else { DATA >>= 1; counter++; } }
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения