Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите организовать проверку на обрыв линии ds18b20
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт авг 14, 2025 13:04:17

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пт апр 08, 2016 20:24:28 
Встал на лапы

Зарегистрирован: Ср апр 29, 2009 10:35:56
Сообщений: 88
Откуда: кр. лиман украина
Рейтинг сообщения: 0
доброго времени суток. я сделал себе для котла автоматику на атмега 8 и 18b20 но вот не могу програмно организовать проверку на обрыв или замыкание проводов во время работы. пишу на си. если включить прибор и по шине i2c нет ответа то ошибка высвечивается а если во время работы отключать то тупик.и мне именно надо получать ошибку в случае обрыва или замыкания проводов а не ту которую может передавать сам ds . поделитесь мыслями как поступить .вроде задача пустяковая а толкусь на месте. спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пт апр 08, 2016 20:51:19 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
i2c, ds18b20 - вы точно ничего не попутали?
Presence impulse, CRC - как минимум это можно использовать для проверки работоспособности шины и адекватности устройств.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пт апр 08, 2016 20:56:16 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
При команде инициализации шины, проверяй отклик датчика и состояние самой шины (есть сигнал высокого уровня, или нет), вот по этим параметрам и делай вывод о готовности самой шины и присутствии на ней датчика.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пт апр 08, 2016 21:00:04 
Встал на лапы

Зарегистрирован: Ср апр 29, 2009 10:35:56
Сообщений: 88
Откуда: кр. лиман украина
Рейтинг сообщения: 0
ясн. типа есть кто живой)))и опрашивать каждый раз перед опросом температуры? я так понимаю что будет некая пауза еще в довесок к той где идет температура и динамическая индикация получит дополнительное моргание ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пт апр 08, 2016 21:38:22 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
CRS надёжней будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пт апр 08, 2016 22:43:22 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 3
culibin 100 писал(а):
я так понимаю что будет некая пауза еще в довесок к той где идет температура и динамическая индикация получит дополнительное моргание ?

Не понял… какая пауза? Код опроса датчика сам писал, или библиотеку используешь? Если библиотека толковая, то там уже это всё организовано… если писал сам, то алгоритм опроса должен начинаться с проверки высокого уровня на шине… затем производишь сброс шины (подтягиваешь шину к «земле») и отпускаешь её… затем следишь за ответом датчика… если он ответил и шина восстановилась в высокий уровень, значит шина в полном порядке и датчик присутствует… только после этого начинаешь общаться с датчиком…
Если пишешь код на асме, то даже CRC можно считать, но это уже на пределе интервала динамической индикации… на Си 9 байт прочесть за 5 мс сложновато…
otest писал(а):
надёжней будет

До CRC ещё нужно дойти… какой смысл опрашивать датчик если шина неисправна или датчика вовсе нет… :wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Сб апр 09, 2016 07:35:13 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4569
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Наличие датчика или КЗ/обрыв линии, определяется во время импульса присутствия, с которого начинается любой обмен данными с датчиком. Ничего сверхъестественного тут нет, в интернете полно статей на эту тему. Даже в любом даташите на 1-Wire девайс есть все диаграммы.

АСУ писал(а):
на Си 9 байт прочесть за 5 мс сложновато…
А какая разница на каком языке ? Время ограничивает сам интерфейс, а не язык.
Да и индикация тут совсем не при чём. Реализуем на прерывании по таймеру и радуемся жизни :)

АСУ писал(а):
До CRC ещё нужно дойти…
Да ну ? Примеров в сети - вагон и маленькая тележка. Тут даже думать не надо, тупой копипаст сойдёт :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Сб апр 09, 2016 21:32:56 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Аlex писал(а):
АСУ писал(а):
на Си 9 байт прочесть за 5 мс сложновато…

А какая разница на каком языке ? Время ограничивает сам интерфейс, а не язык.

Не только… :)
Если использовать библиотеку как есть, то большая… если её поправит, то никакой…
Аlex писал(а):
АСУ писал(а):
До CRC ещё нужно дойти…
Да ну ?

Имелось ввиду, что нужно вначале проверить шину и датчик, а затем уже по СRC определять правильность прочитанных данных. :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Сб апр 09, 2016 21:48:58 
Это не хвост, это антенна
Аватар пользователя

Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22
Сообщений: 1368
Откуда: Беларусь
Рейтинг сообщения: 0
Как показала практика - при работе на внутреннем генераторе расчет CRC очень даже необходим. А проверка линии на замыкание - перед опросом. Если совсем уж заморачиваться - запускать таймер, если опрос за 0,1 сек (например) не прошел - у нас зависание с аварией датчика.

_________________
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Сб апр 09, 2016 21:50:38 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 444
Зарегистрирован: Чт дек 27, 2012 20:46:09
Сообщений: 2029
Откуда: Болгария, г. Лом
Рейтинг сообщения: 0
Я не могу понать - зачем вам CRC?
Как я делал (делаю)
Нашел прогу читающая под Windows ROM кода. Етот код забъваю в EEPROM-а МК. И работаю. Работаю двумя 18В20 на одной линией. И никакой CRC. Да и в документаций написано, что CRC только для проверки правилности чтение ROM code. И если уже имеется правилнъй код то никакой CRC нам не нужно. Если ТС думает менят датчики в процесе работъ - тогда да - нужно.

_________________
Лом - ето город в Болгарии, а не инструмент юстировки електроники.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Сб апр 09, 2016 21:54:15 
Это не хвост, это антенна
Аватар пользователя

Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22
Сообщений: 1368
Откуда: Беларусь
Рейтинг сообщения: 3
ПИД регулятор для инкубатора "непредсказуемо" подрагивал до тех пор, пока не выловил, что читаемая из датчика температура иногда бывает +50, а иногда - минус 12... А вот когда сделал проверку - проблемы ушли. Это хорошо, если на DS-ке простой термометр сделан, а когда устройство, да еще и ответственное?

_________________
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Сб апр 09, 2016 22:04:50 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 444
Зарегистрирован: Чт дек 27, 2012 20:46:09
Сообщений: 2029
Откуда: Болгария, г. Лом
Рейтинг сообщения: 0
Откръваем даташеет и читаем
Вложение:
DS18B20_komm.pdf [35.1 KiB]
Скачиваний: 203

и видим что CRC генерируетса только при въполнение одной командъ Read ROM 0х33 и при никакой другой командъ.

Ето не я говорю, ето документация ....

_________________
Лом - ето город в Болгарии, а не инструмент юстировки електроники.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Сб апр 09, 2016 22:11:29 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 3
botchin писал(а):
Ето не я говорю, ето документация ....

Всё верно, потому при подсчёте CRC нужно читать все 9 байт. А если просто термометр, то читать достаточно всего 2 байта температуры, без подсчёта CRC. Всё зависит от задачи… :wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Сб апр 09, 2016 22:25:20 
Это не хвост, это антенна
Аватар пользователя

Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22
Сообщений: 1368
Откуда: Беларусь
Рейтинг сообщения: 0
Найдите в datasheet строчку "DS18B20 Memory Map". Именно из этой памяти мы и читаем данные. А уж кто сколько их читает...

_________________
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Вс апр 10, 2016 06:51:05 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 81
Рейтинг сообщений: 444
Зарегистрирован: Чт дек 27, 2012 20:46:09
Сообщений: 2029
Откуда: Болгария, г. Лом
Рейтинг сообщения: 0
Да, команду Read Scratchpad (0xbe) я не использую. Но все таки я читаю первъе два байта етой паняти по команде Convert (0x44) и у меня проблем не бъло.
Прав АСУ, "зависит от задачи" - у меня термометр на две температуръ - и все (по части DS18B20).

_________________
Лом - ето город в Болгарии, а не инструмент юстировки електроники.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пн апр 11, 2016 18:10:45 
Встал на лапы

Зарегистрирован: Ср апр 29, 2009 10:35:56
Сообщений: 88
Откуда: кр. лиман украина
Рейтинг сообщения: 0
дорогие друзья. в том и вся заморочка что если обрыв в линии то никакого чтения байт не возможно.пишу на си и использую библиотеку из кодевижн. вот функция касаема температуры она вызывается цыклически.

void izmerenie(void)
{
#asm("cli"); // запрещаем прерывания
if (!ds18b20_select(0)) ; // выбираем датчик по адресу
w1_write(0x44); // запускаем преобразование температуры
#asm("sei"); // разрешаем прерывания
delay_ms(100); // ожидаем преобразования
#asm("cli"); // запрещаем прерывания
if (!ds18b20_read_spd(0)); // читаем регистры памяти
#asm("sei"); // разрешаем прерывания
work_18b20 = __ds18b20_scratch_pad.temp_msb; // формируем число int из двух байтов
work_18b20 = work_18b20 << 8;
work_18b20 |= __ds18b20_scratch_pad.temp_lsb;
lcd_18b20 = ((int) work_18b20 * 0.0625)*10;
digit_1=number[lcd_18b20/100%10]; тут выводим данные температуры
digit_2=number[lcd_18b20/10%10];
};


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пн апр 11, 2016 18:48:23 
Потрогал лапой паяльник

Карма: 5
Рейтинг сообщений: 81
Зарегистрирован: Вс июл 29, 2012 16:25:39
Сообщений: 312
Рейтинг сообщения: 0
culibin 100 писал(а):
если обрыв в линии то никакого чтения байт не возможно.пишу на си и использую библиотеку из кодевижн.
Исходник библиотеки или хотя бы хеадер изучался?
culibin 100 писал(а):
if (!ds18b20_select(0)) ; // выбираем датчик по адресу
Ничего тут не настораживает?
В каких-то случаях функция вернёт "0"... может при ошибке?
culibin 100 писал(а):
if (!ds18b20_read_spd(0)); // читаем регистры памяти
И тут аналогично.
Во, эта функция возвращает return !w1_dow_crc8(&__ds18b20_scratch_pad,9);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пн апр 11, 2016 18:52:30 
Встал на лапы

Зарегистрирован: Ср апр 29, 2009 10:35:56
Сообщений: 88
Откуда: кр. лиман украина
Рейтинг сообщения: 0
этот кусочек мне товарищ наделил я в него не в вникал что касаемо датчика


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пн апр 11, 2016 19:18:02 
Грызет канифоль

Зарегистрирован: Ср дек 30, 2009 09:55:39
Сообщений: 277
Рейтинг сообщения: 0
culibin 100 писал(а):
..

Код:
void  izmerenie(void)
{
...
      w1_write(0x44);  // запускаем преобразование температуры
      #asm("sei");   // разрешаем прерывания
      delay_ms(100);   // ожидаем преобразования
      #asm("cli"); // запрещаем прерывания
...
 };




Совет дня типа...
Заведите таймер на декремент счётчика. При входе в функцию чтения - пауза пока счётчик не обнулится.
Тогда меньше будете ждать в этой функции если на выходе из неё(после чтения и обработки результата) будете запускать преобразование и взводить таймер. А то Ваша функция "измерение" слишком жестоко себя ведёт - "зависон" для всего камня или минимальные требования - вытесняющая ОС.

(круглый)
ЗЫ
Меня забавляют "разработчики" которые пытаются тащить в свои творения глюкало-библиотеки, экономя на пару минут собственной разработки при сложности задачки 2+2.
ЗЫ ЗЫ
Хорошие библиотеки могут выкладывать только те, кто имеет профит с другого. Ну например разработчики камня, или там скажем сложность кода достаточно высока и область обособленна (ну скажем там расчёт по каким-нить матрицам, с использованием навороченной тригонометрии). Да и то, всё требует контроля с точки зрения ошибок. Увы, идеальный фри код редко можно найти на просторах инета.


Последний раз редактировалось kolobok0 Пн апр 11, 2016 19:22:29, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите организовать проверку на обрыв линии ds18b20
СообщениеДобавлено: Пн апр 11, 2016 19:21:19 
Встал на лапы

Зарегистрирован: Ср апр 29, 2009 10:35:56
Сообщений: 88
Откуда: кр. лиман украина
Рейтинг сообщения: 0
спасибо. ну для того и общение чтобы ктото пинка волшебного давал.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y