Проще всего, наверное, начать с получения Presense от датчика. Если питание будет активное (а не в паразитном режиме), то за время Reset он наверняка нормально стартанёт. А вот с паразитным питанием... ХЗ.shads писал(а):Наверное..... ну вроде в этом не должно возникнуть сложностей
Всё по DS18(B/S)20.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
Здесь быстрее вопрос к длине/сопротивлению линии и наличию/отсутствию ёмкости по питанию датчика...shads писал(а):если контроллер будет ногой подавать питание на DS18B20, сколько времени надо ждать после пробуждения контроллера, чтобы DS18B20 пришел в себя, и нормально отрабатывал замер температуры?
При длине в несколько см. и отсутствию ёмкости по питанию можно рулить датчиком сразу...
"Я не даю готовых решений, я заставляю думать!"(С)
- Сообщения: 124
- Зарегистрирован: Сб окт 20, 2012 14:07:16
А кто как защищает датчики? Сделал термометр дом/улица. Пару лет назад во время грозы выгорели датчики (они на одной шине, похоже была наводка на кабель выносного), причем порт контроллера выжил. Напаял стабилитроны со стороны МК. Третьего дня опять сильная гроза - сгорел только уличный. Так DS-ок не напасешься. 
- Сообщения: 173
- Зарегистрирован: Вт дек 21, 2010 21:18:52
Есть проблема с измерением температуры.
У меня датчик DS18b20. Программа работала замечательно, пока не добавил дополнительное меню в своей программе.
Это меню ни как не связанно с работой датчиков. В это меню программа даже не заходит (надо поставить ловушку проверить).
Дак вот после того как я сделал это доп. меню, то у меня измеряемая температура всегд отображается как НОЛЬ (0) градусов.
Сами датчики программа находит, я их могу перебирать кнопкой: идет отображение количество подключенных датчиков в зависимости от того сколько датчиков подключенно.
Уважаемые Коты, подскажите с чем это может быть связанно?
У меня датчик DS18b20. Программа работала замечательно, пока не добавил дополнительное меню в своей программе.
Это меню ни как не связанно с работой датчиков. В это меню программа даже не заходит (надо поставить ловушку проверить).
Дак вот после того как я сделал это доп. меню, то у меня измеряемая температура всегд отображается как НОЛЬ (0) градусов.
Сами датчики программа находит, я их могу перебирать кнопкой: идет отображение количество подключенных датчиков в зависимости от того сколько датчиков подключенно.
Уважаемые Коты, подскажите с чем это может быть связанно?
- Реклама
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
В протеусе то же самое?Amstron писал(а):после того как я сделал это доп. меню, то у меня измеряемая температура всегд отображается как НОЛЬ (0) градусов.
Функция чтения данных с датчика проверяет CRC ?
Если CRC не верна, программа реализует вывод сообщения об ошибке?
- Сообщения: 173
- Зарегистрирован: Вт дек 21, 2010 21:18:52
Отлаживаю на железе.shads писал(а):В протеусе то же самое?Amstron писал(а):после того как я сделал это доп. меню, то у меня измеряемая температура всегд отображается как НОЛЬ (0) градусов.
Функция чтения данных с датчика проверяет CRC ?
Если CRC не верна, программа реализует вывод сообщения об ошибке?
Протеусом не пользуюсь.
Компилятор CV AVR версия 2.05.03
Подскажите как реализовать функцию проверки CRC?
Уважаемые профессора, у меня в подвале слышен подземный стук. Не подскажете, с чем это может быть связано?Amstron писал(а):Дак вот после того как я сделал это доп. меню, то у меня измеряемая температура всегд отображается как НОЛЬ (0) градусов.
Проверять код!
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
Тогда покупай железный отладчик.....Amstron писал(а):Отлаживаю на железе.
Ну раз не хош освоить полезную программу, тогда тем более покупай железный отладчик.....Amstron писал(а):Протеусом не пользуюсь.
Если хочеш чтобы шустро помогали, переходи на AVRStudio4+GCCAmstron писал(а):Компилятор CV AVR версия 2.05.03
Вот как я задавал этот же вопрос.....Amstron писал(а):Подскажите как реализовать функцию проверки CRC?
Тут еще от Леонида Ивановича есть рассчет CRC
А!!! Правда глаза колет!!! Ну, ну. А что благородный дон ожидал?, что мы подтвердим вашу версию, что датчики плохие и больше трёх меню не выдерживают - выдают сплошные нули. Ай-яй-яй, какие плохие датчики. Дык вот - копать код! Я тоже не апологет симуляторов - всё проверяю в железе. И всё-равно проскакивают ошибки. Был тут аналогичный случай - написал термометр. Код переносился из одного проекта в другой. И тут вдруг обнаружилось что 4-й датчик на шине не читается - выдаёт ошибку CRC. Догадайтесь с трёх раз кто был виноват? Увы, не датчик, а я сам - в одном месте был не внимательным - не переключил страницу памяти. И вылезло это только в одном проекте, где по случайному совпадению, эта не переключенная страница портила накопленный сериальник именно 4-го датчика. Так что - проверять код еще и еще раз. Вставлять контрольные точки.
А CRC как считать написано в AN27. О, еще тама есть интересная программка.
А CRC как считать написано в AN27. О, еще тама есть интересная программка.
- Сообщения: 173
- Зарегистрирован: Вт дек 21, 2010 21:18:52
В моем случае - глючный компилятор.
На версии 1,25,9 температура стала измерятся, но перестала работать другая функция, которая на других версиях отлично работает!
Или с настройками компилятора что то не то?
На версии 1,25,9 температура стала измерятся, но перестала работать другая функция, которая на других версиях отлично работает!
Или с настройками компилятора что то не то?
А возможно ли на этой шине реализовать так, чтобы система понимала, что скажем один датчик комнатный, один уличный, а один еще где-нибудь стоит.

- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
Я тут делал так:Biggy писал(а):А возможно ли на этой шине реализовать так, чтобы система понимала, что скажем один датчик комнатный, один уличный, а один еще где-нибудь стоит.
Отсоединял линию, подключал датчик №1, программировал его под номером 1, потом подключал датчик №2, программировал его под номером 2, ну и т.д.
Потом когда все датчики запрограммированы, подключаю линию и вешаю все датчики на эту линию..... Теперь у меня известно какой датчик где и под каким номером работает.....
Функцию автоматического поиска как раз не использую по той причине, что потом не понятно кто есть кто из датчиков.....
Это можно сделать если один датчик будет с паразитным питанием, другой — с "активным".Biggy писал(а):система понимала, что скажем один датчик комнатный, один уличный
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 173
- Зарегистрирован: Вт дек 21, 2010 21:18:52
Спасибо что "ответили" (((Amstron писал(а):В моем случае - глючный компилятор.
На версии 1,25,9 температура стала измерятся, но перестала работать другая функция, которая на других версиях отлично работает!
Или с настройками компилятора что то не то?
Скажите, сложно перейти на другой компилятор , например на AVRStudio4+GCC ?
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
Элементарно.....Amstron писал(а):Скажите, сложно перейти на другой компилятор , например на AVRStudio4+GCC ?
Вот ветка где можно задавать все вопросы по AVRStudio4+GCC
http://radiokot.ru/forum/viewtopic.php? ... start=1460
- Сообщения: 46
- Зарегистрирован: Ср апр 29, 2009 04:11:48
Доброго времени суток уважаемые коты, хотелось бы узнать кто как делает сортировку датчиков. пока работает вариант с предварительной записью в eeprom и чтением оттуда, но хотелось бы сделать вариант с чтением действительных номеров с последующим сравнением с eeprom
- Сообщения: 173
- Зарегистрирован: Вт дек 21, 2010 21:18:52
У меня проблема с измерением температуры DS18b20.
Как Вы объясните, что это не глюк компилятора?
Если я в любое место в программе вставляю следующий код, то у меня ответ от датчиков температуры DS18b20 всегда НОЛЬ градусов.
{
bukva_0 = 5; // S
bukva_1 = 10; // выкл
bukva_2 = 0; // 0
bukva_3 = 22; // n
};
if (stabilizator_GAZ == 0)
{
bukva_0 = 5; // S
bukva_1 = 0; // 0
bukva_2 = 23; // F
bukva_3 = 23; // F
};
if (knopka2==2)
{ while (knopka2==2){ } ;
stabilizator_GAZ = 1;
};
if (knopka3==3)
{ while (knopka3==3){ } ;
stabilizator_GAZ = 0;
};
if (knopka1==1)
{ while (knopka1==1){ } ;
vukluchit_bukvu();
rejim=31;
xg = 5;
};
Если я в этом коде исправляю строчку rejim=31; на rejim=28; то глюка нету.
Хочу заметить еще раз, что этот код я вставляю в места где у мена программа в цикле даже и не заходит туда!
Я уже с этим трахаюсь давно, решил перейти на AVR studio 4.
Есть идея попробовать использовать другую библиотеку , возможно само-писанную.
Поделитесь попробовать... мое мыло gsm-3@ya.ru
Как Вы объясните, что это не глюк компилятора?
Если я в любое место в программе вставляю следующий код, то у меня ответ от датчиков температуры DS18b20 всегда НОЛЬ градусов.
Спойлер
if (stabilizator_GAZ == 1){
bukva_0 = 5; // S
bukva_1 = 10; // выкл
bukva_2 = 0; // 0
bukva_3 = 22; // n
};
if (stabilizator_GAZ == 0)
{
bukva_0 = 5; // S
bukva_1 = 0; // 0
bukva_2 = 23; // F
bukva_3 = 23; // F
};
if (knopka2==2)
{ while (knopka2==2){ } ;
stabilizator_GAZ = 1;
};
if (knopka3==3)
{ while (knopka3==3){ } ;
stabilizator_GAZ = 0;
};
if (knopka1==1)
{ while (knopka1==1){ } ;
vukluchit_bukvu();
rejim=31;
xg = 5;
};
Хочу заметить еще раз, что этот код я вставляю в места где у мена программа в цикле даже и не заходит туда!
Я уже с этим трахаюсь давно, решил перейти на AVR studio 4.
Есть идея попробовать использовать другую библиотеку , возможно само-писанную.
Поделитесь попробовать... мое мыло gsm-3@ya.ru
А как Вы объясните, что это глюк компилятора, а не Ваш косяк ?Как Вы объясните, что это не глюк компилятора?
Я, например, не могу ничего объяснить, видя небольшой огрызок программы. Но по нему Ваш уровень сразу виден, который не даёт мне сомневаться в том, что глюк вовсе не компилятора...
Зачем он (этот код) тогда вообще нужен, если программа туда не заходит ?программа в цикле даже и не заходит туда!


