Gerik_PP, можно глянуть на места Вашей программы, где происходит обмен с датчиками ? Или, если это секрет, то поиграйтесь с временами в тайм-слотах, скорее всего там у Вас проблема.
Проблемы с сетью 1-wire
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Проблемы с сетью 1-wire
Сколько разговоров и решений, только никто не спросил у Gerik_PP как он реализует протокол, а точнее тайм-слоты. А ведь проблема может быть программной 
Gerik_PP, можно глянуть на места Вашей программы, где происходит обмен с датчиками ? Или, если это секрет, то поиграйтесь с временами в тайм-слотах, скорее всего там у Вас проблема.
Gerik_PP, можно глянуть на места Вашей программы, где происходит обмен с датчиками ? Или, если это секрет, то поиграйтесь с временами в тайм-слотах, скорее всего там у Вас проблема.
Re: Проблемы с сетью 1-wire
Gerik_PP писал(а):...1. На одном порту МК висят 4 датчика DS18B20. 2. Раз в 5 сек....3. Обращение к конкретному......Длинна "лучей" ~70, ~6, ~10 и ~9 метров...как можно решить эту проблему....
1) если следуете рекомендациям от далласа, то присмотритесь к оригинальным даташитам включения 1Wire шины. Особенно к DS9503. Это к слову. А то у вас выходные цепи - оставляют желать лучшего.
2) тут правильно уже прозвучало одно из последних замечаний - самое первое это временные слоты. потом всё остальное.
3) что такое "порт" ? Это один пин или группа пинов, как тут уже прозвучало - один на каждый "луч" ? Если есть ножки - подключите один пин - один датчик.
4) Раз в 5 секунд - это от лукавого. Разогрев при постоянном (не _паразитном_) сканировании датчиков менее 0,2 градуса.
5) 70 метров по пром-зоне это не предел для 1-Wire. На самый худой случай, опять-же следуя рекомендациям из DS - подключите нагрузочный резистор прям возле датчика - и будет вам счастье. (можно до пару-тройку сотен ом опустить даже). Опять жешь - тут уже правильно прозвучало, проконтролируйте завалы по осцилу и станет понятней о чём речь.
6) тут в хвалебном 148 рус. написано про всякие динамические подтяжки и отражённый сигнал. дык вот это - так же траблы в реализации. если коротко - не надо бросать выход при выходе в единицу. более правильно - выдать единицу, а уже потом перейти в Z состояние. Тогда таких проблем не будете видеть на осциле вообще, на более-менее средних линиях (десятки метров).
осадок - протокол как топор. прост и "надёжен" до безобразия. 99% всех проблем (как правило) от софта.
удачи вам
(круглый)
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
Аlex писал(а):Сколько разговоров и решений, только никто не спросил у Gerik_PP как он реализует протокол, а точнее тайм-слоты. А ведь проблема может быть программной
Gerik_PP, можно глянуть на места Вашей программы, где происходит обмен с датчиками ? Или, если это секрет, то поиграйтесь с временами в тайм-слотах, скорее всего там у Вас проблема.
Никакого секрета, это же моё любимое хобби... Вот, подпрограммы и попытался выдрать фрагмент программы для обмена с одним из 4-х датчиков. Кварц для PIC - 4MHz. Сильно не пинайте кота и извиняйте если много лишнего
Код: Выделить всё
;******************************************
;* DS18B20 *
;******************************************
;********основные функции для работы с DS18B20***************
;-----Reset-----------
HYL1
CALL WUX1 ;ВЫХОД НУЛЯ.
MOVLW .125 ;НУЛЕВОЙ ИМПУЛЬС
ADDLW -1 ;= 500 МКС.
BTFSS STATUS,2 ;
GOTO $-2 ;
CALL WXO1 ;ВЫХОД ЕДИНИЦЫ.
MOVLW .125 ;ИМПУЛЬС =
ADDLW -1 ;500 МКС.
BTFSS STATUS,2 ;
GOTO $-2 ;
RETURN
;---- изменение входа на приём/передачу.----------
WUX1
BCF PORTC,1 ;КОРОТКИЙ ЗАПРОС.
BSF STATUS,5 ;ПЕРЕХОДИМ В БАНК 1.
BCF TRISC,1 ;НА ВЫХОД.
BCF STATUS,5 ;ПЕРЕХОДИМ В БАНК 0.
RETURN
WXO1
BSF STATUS,5 ;ПЕРЕХОДИМ В БАНК 1.
BSF TRISC,1 ;НА ВХОД.
BCF STATUS,5 ;ПЕРЕХОДИМ В БАНК 0.
RETURN
; ---- задержка мкс, умноженная на 4
X4
ADDLW -1 ;
BTFSS STATUS,2 ;
GOTO $-2 ;
RETURN ;
; ---------ПОСЫЛ КОМАНДЫ В DS 1----------
POSIL1
MOVWF TEMP3 ;ПЕРЕПИШЕМ ВО ВРЕМЕННЫЙ.
MOVLW .8 ;ЗАПИШЕМ ЧИСЛО БИТ.
MOVWF COUN ;
POSI1
RRF TEMP3,1 ;ВЫТОЛКНЕМ МЛАДШИЙ БИТ.
BTFSS STATUS,0 ;ЕСЛИ ОН НУЛЕВОЙ,
GOTO W01 ;ПОШЛЕМ ИМПУЛЬС НУЛЯ.
GOTO W11 ;ИЛИ ЕДИНИЦЫ.
POS1
DECFSZ COUN,1 ;УМЕНЬШАЕМ СЧЕТЧИК.
GOTO POSI1 ;НА СЛЕДУЮЩИЙ БИТ.
RETURN ;ВОЗВРАТ.
W01
CALL WUX1 ;УСТАНОВИМ ВЫХОД В НОЛЬ.
MOVLW .15 ;УДЕРЖИВАЕМ 60 МКС.
CALL X4 ;
CALL WXO1 ;НА ВХОД = 1 НА ВЫХОДЕ.
GOTO POS1 ;ПОВТОРИМ.
W11
CALL WUX1 ;КОРОТКИЙ НУЛЕВОЙ ИМПУЛЬС.
CALL WXO1 ;НА ВХОД = 1 НА ВЫХОДЕ.
MOVLW .15 ;УДЕРЖИВАЕМ 60 МКС.
CALL X4 ;
GOTO POS1 ;ПОВТОРИМ.
;===========
PRIE1
MOVLW .8
MOVWF COUN ;ЗАПИШЕМ ЧИСЛО БИТ.
CLRF LSB ;ОБНУЛИМ РЕГИСТР ПРИЕМА.
PRI1
CALL WUX1 ;ВЫДАЕМ КОРОТКИЙ НОЛЬ И ЖДЕМ ОТКЛИКА.
CALL WXO1 ;НА ПРИЕМ.
MOVLW .2 ;ЗАДЕРЖКА
CALL X4 ;8 МКС.
MOVFW PORTC ;ПЕРЕПИШЕМ
MOVWF TEMP1 ;ЗНАЧЕНИЕ ПОРТА.
; BTFSC FLAG,1 ;ЕСЛИ ЭТО 9 БИТ,
; RETURN ;ВЕРНЕМСЯ.
BTFSS TEMP1,1 ;
BCF STATUS,0 ;УСТАНОВИМ БИТ ПРИЕМА В НОЛЬ.
BTFSC TEMP1,1 ;
BSF STATUS,0 ;ИЛИ ЕДИНИЦУ.
RRF LSB,1 ;ЗАПИШЕМ В РЕГИСТР.
MOVLW .15 ;ПАУЗА 60 МКС.
CALL X4 ;
DECFSZ COUN,1 ;УМЕНЬШИМ СЧЕТЧИК.
GOTO PRI1 ;ПОВТОРИМ ПРИЕМ.
movf LSB,0
RETURN ;ВЕРНЕМСЯ.
;***************************************************************************
;* ---------- основной программы для работы с DS18B20------------ *
;***************************************************************************
Online_label
CALL HYL1 ;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.
movlw 0CCh ;Команда "Skip ROM"
call POSIL1
movlw 044h ;Команда "Convert T" для всех датчиков на шине
call POSIL1
nop ;temp
;---------- окончания конвертирования DSx-------------
convt clrwdt ; пнуть собаку ))
CALL WUX1 ;ВЫДАЕМ КОРОТКИЙ НОЛЬ И ЖДЕМ ОТКЛИКА.
CALL WXO1 ;НА ПРИЕМ.
MOVLW .2 ;ЗАДЕРЖКА
CALL X4 ;8 МКС.
MOVFW PORTC ;ПЕРЕПИШЕМ
MOVWF TEMP1 ;ЗНАЧЕНИЕ ПОРТА.
MOVLW .15 ;ПАУЗА 60 МКС.
CALL X4 ;
BTFSS TEMP1,1 ;если "0", то следующая строка... "1" - конвертирование выполнено идём далее
goto $-.9 ;
;----------
ntl_try
mvi TRY,08h ;8 попыток чтения
Newtry_label ;Начинаем чтение данных из DS18B20
movlw .8 ; отправим 8 байт
movwf SecL
CALL HYL1 ;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.
movlw 0x55 ;Команда "Match ROM"
call POSIL1
ds_mth
movf INDF,0 ;Младший байт температуры
call POSIL1
decfsz SecL,1
goto $+2
goto rd_scr
INCF FSR,1 ; +1 В СЧЕТЧИК АДРЕСА.
GOTO ds_mth ; БЕГАЕМ ПО КРУГУ, передаём 8 байт
rd_scr movlw 0xBE ;Команда "Read Scratchpad"
call POSIL1
clrf CRCPIC
call PRIE1
movwf TL ;Младший байт температуры
call NewCRC
call PRIE1
movwf TH ;Старший байт температуры
call NewCRC
call PRIE1 ;Шесть ненужных байт
call NewCRC
call PRIE1
call NewCRC
call PRIE1
call NewCRC
call PRIE1
call NewCRC
call PRIE1
call NewCRC
call PRIE1
call NewCRC
call PRIE1 ; Примем CRC
xorwf CRCPIC,W ;Проверка совпадения CRC
jz OKCRC_label ;Совпадение - переход
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
kolobok0 писал(а):1) если следуете рекомендациям от далласа, то присмотритесь к оригинальным даташитам включения 1Wire шины. Особенно к DS9503. Это к слову. А то у вас выходные цепи - оставляют желать лучшего.
2) тут правильно уже прозвучало одно из последних замечаний - самое первое это временные слоты. потом всё остальное.....
В общем я подумал и родил!
Вкратце о схеме: Сопряжение с линией сделал на U2 – логика с тремя состояниями на выходе. Приемник U3 - аналоговый компаратор позволяющий микроконтроллеру определить, превысило ли напряжение в сети 1-Wire пороговое значение 0.95 В (AN132). Для активной подтяжки вниз использую U2.1. При подаче на него «0» выход переходит из третьего состояния в «0». Для активной подтяжки вверх использую U2.2. При подаче на него «0» выход переходит из третьего состояния в «1». Четыре отвода моей злополучной "звезды" через DS9503 подключены к коммутаторам U9-12 и управляются тоже с МК. При опросе коммутируется всегда только 1 из 4-х датчиков, по очереди.
P.S. Даташиты на некоторые микросхемы тоже прикрепляю, на всяк случ
P.P.S. Схема на дальнем конце провода (со стороны DS18B20) во вложении
- Вложения
-
- Схема со стороны датчика (дальняя).pdf
- (39.31 КБ) 503 скачивания
-
- Datasheet.zip
- (738.44 КБ) 307 скачиваний
-
- Microlan (схема).pdf
- (88.62 КБ) 451 скачивание
Re: Проблемы с сетью 1-wire
Gerik_PP писал(а):...В общем я подумал и родил!... коммутируемую 1-вайр микролан...P.P.S. Схема на дальнем конце провода (со стороны DS18B20) во вложении
Вы меня простите, но то ли лыжи не едут, то ли снег закончился...
задача какая? сделать чтоб работало или обязательно "коммутируемый 1-вайр микролан" ?
если первое то (тут немного оговорюсь, с пиками не на короткой ноге):
1) у вас 4 ноги заюзаны на усилители и 4 на переключения. а датчиков всего 4. Язык чешится спросить чего не заюзали ышо штук 20 - переключать переключатель, масштабирование и прочую, в данных рамках имхо не нужную вещь).
2) присмотритесь к схеме включения ds9503 фигура 4 если я правильно вижу из вашего аттача. Обратите внимание - там 4 резистора. и цифры ножек микросхемы посмотрите. т.е. два из нарисованных резисторов внутри милкосхемы, а два нужно подвесить внешнии. обычно это так-же 5 Ом - вполне.
я бы сделал следующее (если чисто по задаче):
1) выкинул бы всю коммутацию.
2) питание датчиков - от 5 вольт. обычно от того же самого, что и МК.
3) подключил бы датчики через схему с фигуры даташита на DS9503. Поверьте - оно рабочее (не одна тысяча продаваемых по всему миру пром. установок. в одной установке до 8 датчиков где то бывает). единственная доработка - поставте вместо разъёма для 1-ваир таблетки обычный разъём (на ваше усмотрение). у нас вошло в обиход юзанье телефонных, на 4 пина разъёмов. крепёжный инструмент прост, удобно менять датчики на лету (отдельный разъём - отдельный функционал датчика закреплённый за ним). т.е. всякую муть по поводу адресации - забудьте, глупости всё это в данном аспекте. протокол упрощается. датчик либо подключён либо нет.
всё.
профит - у вас освободяться ышо ноги.
как работать с ними. идеально повесить всё на один порт. так общение быстрее, обращение ко всем пинам в параллель сразу. сканировать можно без пауз - сразу. разогрев (чисто из практики) не более 0,2 градуса при постоянном (не паразитном питании).
при переключении вход-выход, старайтесь следовать следующей логике:
(чтение слота)
что требуется: необходимо выдать синхро импульс и далее перейти на чтение и через некий тайм аут прочитать его значение.
что нуна сделать: необходимо выдать нолик, необходимый тайм-аут, выдаём еденичку(!), переводим на приём, тайм-аут, чтение пина
т.е. в данном случае, при выдачи принудительно единички - мы делаем фронт круче.
резистор подтяжки внешний. его порядок около 4,5 кОм. внутренний резистор раз в десять больше - его юзать можно но это менее помехозащищённый вариант.
по поводу логики сканирования.
в инете уже пробегало решение:
делаете подпрограммки обработки элементарных действий. заводите таймер вызывающий эти обработчики. каждый обработчик должен иметь возможность: выставить новое время через которое сработает таймер, указать следующую команду (она может быть либо следующей, либо предыдущей - для организовывания циклов побитной записи либо чтения), и иметь доступ к некой структуре состояния (там обычно флаги синхронизаций, счётчики и прочая мелочь).
в главной программе теперь просто составляете список(очень удобно и наглядно если список команд выглядит типа: сбросить, результат сброса записать туда-то, записать байт - значение такое, прочитать байт в эту ячейку памяти и т.д.), команд которые должен ваш "шедуллер" выполнять тупо в цикле.
т.к. датчики в параллель, то сброс, запись в них, синхросигналы - можно выдавать параллельно(!), единственно где вам потребуется разрулить - это чтение с датчиков. т.е. вы читаете байт с порта(в нём есть ВСЕ пины ВСЕХ датчиков) - вам остаётся только методом выщёлкивания необходимых пин в нужные(разные) ячейки памяти(по кол-ву ваших датчиков).
идеально код получается таким - ваш код обработчика, параметры портов (настраивается от проекта к проекту), карта выполняемых команд шедуллера, параметр таймера. всё. т.е. код полностью партируемый при выше указанных условиях.
удачи вам
(круглый)
ЗЫ
Привёл реальный вариант работы с датчиками. сам код простите - дать не смогу. есть нюансы
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Проблемы с сетью 1-wire
Поиграйтесь. Можно НОПами. ИМХО, достаточно будет даже 4 мкс.Код: Выделить всё
MOVLW .2 ;ЗАДЕРЖКА
CALL X4 ;8 МКС.
Остальное, на первый взгляд, всё нормально.
Вот для примера, библа 1-вире на АСМе для ПИКов http://forum.chipmk.ru/index.php/topic/ ... t__p__1543
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
kolobok0 писал(а):при переключении вход-выход, старайтесь следовать следующей логике:
(чтение слота)
что требуется: необходимо выдать синхро импульс и далее перейти на чтение и через некий тайм аут прочитать его значение.
что нуна сделать: необходимо выдать нолик, необходимый тайм-аут, выдаём еденичку(!), переводим на приём, тайм-аут, чтение пина
Логика ясна если DS18 выдаёт "1". Только мне непонятно с передачей "0".... Неизвестно же, что будет передовать DS18. Если он будет передовать "0" зачем я буду "выдавать еденичку"??
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
kolobok0 писал(а):1) у вас 4 ноги заюзаны на усилители и 4 на переключения. а датчиков всего 4. Язык чешится спросить чего не заюзали ышо штук 20 - переключать переключатель, масштабирование и прочую, в данных рамках имхо не нужную вещь).
AN132, стр.8,9 (выкладывал выше):
Временной интервал чтения/записи "1" (Рис. 11 и 12; значения временных параметров см. в Табл. 4)
1)Активная подтяжка вниз APDR.
2)После достижения уровня VIAPO — активная подтяжка вверх (APU). Проверить логический уровень в момент MS (отсчет MS производится от начала временного интервала).
т.е. как я понял, чтобы определить уровень VIAPO без компаратора не обойтись. Соответственно подтяжка вниз и вверх на дополнительные пины. Получается на интерфейс 3 пина. Плюс 4 пина на переключение (мне от "звезды" обязательно надо уйти). Получается меньше, если я каждому датчику отдам по три пина... 7<12 )))
kolobok0 писал(а):я бы сделал следующее (если чисто по задаче):
1) выкинул бы всю коммутацию.
2) питание датчиков - от 5 вольт. обычно от того же самого, что и МК.
Я изначально так и сделал. Но уровень помех настолько большой, что датчик сходил с ума. При каждом конвертировании (раз в 5 сек.) значения темп. отличались в десятки градусов. Причём CRC была без ошибок. Спасли 12V с понижением до 5V непосредственно на стороне датчика.
kolobok0 писал(а):2) присмотритесь к схеме включения ds9503 фигура 4 если я правильно вижу из вашего аттача. Обратите внимание - там 4 резистора. и цифры ножек микросхемы посмотрите. т.е. два из нарисованных резисторов внутри милкосхемы, а два нужно подвесить внешнии. обычно это так-же 5 Ом - вполне..
Отдельное спасибо. Сразу не всосал, дельное замечание!!!
kolobok0 писал(а):задача какая? сделать чтоб работало или обязательно "коммутируемый 1-вайр микролан" ?
Собственно, для этого я всех тут и терзаю))) Хочу понять, что нужно сделать чтоб работало? На данный момент времени мне кажется чтоб работало, нужно делать коммутируемый 1 вире микролан.
P.S. Условия мягко говоря - оставляют желать лучшего (фото ниже). Витая пара на датчики проходит среди огромного количества других проводов, правда все слаботочные. Поэтому если нужно задействовать ишо 20 ног и микросхем для стабильной работы, я легко на это решусь. Уже год колупаюсь с этим девайсом и всё какие-то сюрпризы...
Re: Проблемы с сетью 1-wire
Gerik_PP писал(а):....чтобы определить уровень VIAPO без компаратора не обойтись......Но уровень помех настолько большой, что датчик сходил с ума. При каждом конвертировании (раз в 5 сек.) значения темп. отличались в десятки градусов. Причём CRC была без ошибок. Спасли 12V с понижением до 5V непосредственно на стороне датчика.....P.S. Условия мягко говоря - оставляют желать лучшего (фото ниже). Витая пара на датчики проходит среди огромного количества других проводов, правда все слаботочные. ...
1) знаете, я про 600 метров не буду утверждать, но те дальности что Вы заявляете, среди слаботочки - это всё таки не тот вариант что написан в русском пэдээфе. Хотя тут Вам виднее - хочется, ктоже запретить то может!!!
2) а с чего Вы взяли, что помехи влияют? Вы точно уверены что выдержали весь протокол? где то проскакивала фраза - что датчики серии DS18.. сильно не любят когда к ним обращаются в момент конвертации-вычисления температуры. И я больше скажу - потому, что там нет АЦП
И более того - у вас то (с ваших слов) помеха вообще на сами данные не влияют(СКС приходит корректная!!!). и на канал связи с датчиком. Зачем вы пытаетесь навернуть схемотехнику нацеленную именно на канал связи??? или типа ключите ищите там где светлее - под столбом, а не где потеряли?
у вас проблема может быть:
а) с питанием (слабая, т.к. влияет и на CRC опосредовано)
б) с не правильным восприятием результата
в) с не правильным управлением датчиком.
заметьте - две проблемы которые могут быть = Вы сами ёжик в тумане...
причину связанную с каналом передачи данных у вас нет (ну и не могло быть на такие короткие длины) - тому корректная CRC подтверждение(с Ваших слов).
вопрос остался открытым:
Ваша задача какая? Вы говорите "понять". А факты ваших же опытов не видите!!! = НЕТ у Вас проблем с каналом... нету..
с уважением
(круглый)
ЗЫ
Я один умный вещь скажу, ты только не обижайся - твоя машина в соседнем дворе стоит, да! (из кинухи)
о баранах:
Вы как детектируете-ожидаете конец преобразования-конвертации температуры?
ЗЫ ЗЫ
Рекомендую начать с начала.
Сделайте идеальные условия, выкиньте всё кроме оригинального даташита на DS18B20 заюзайте схему подключения 1Wire устройств DS9503. Запустите всё на столе. Если не идёт - опять погружайтесь в даташит и в код. И так по кругу пока не задышит. увеличьте метраж на ваш максимальный. Положите кабель рядом со столом. Должно работать. Если нет - опять даташит-код. Можно глянуть осцилом на этой стадии, если упрётесь(что вряд-ли). Далее подключаете ваши провода из стен и опять решайте проблемы отсекая рабочую от не рабочей части. Где то по дороге косяк Ваш и всплывет к верху пузиком.
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
kolobok0 писал(а):о баранах: Вы как детектируете-ожидаете конец преобразования-конвертации температуры?
ЗЫ ЗЫ
Рекомендую начать с начала.
Сделайте идеальные условия, выкиньте всё кроме оригинального даташита на DS18B20 заюзайте схему подключения 1Wire устройств DS9503. Запустите всё на столе. Если не идёт - опять погружайтесь в даташит и в код. И так по кругу пока не задышит. увеличьте метраж на ваш максимальный. Положите кабель рядом со столом. Должно работать. Если нет - опять даташит-код. Можно глянуть осцилом на этой стадии, если упрётесь(что вряд-ли). Далее подключаете ваши провода из стен и опять решайте проблемы отсекая рабочую от не рабочей части. Где то по дороге косяк Ваш и всплывет к верху пузиком.
В общем, я так и сделал за исключением DS9503, осцила и внешнего подтягивающего (напомню, что свободных портов нет и все четыре DS.. висят на одном пине звездой). И получилось - на столе: всё работает хорошо. На объекте: по отдельности датчики работают без проблем. Если включить все, то CRC с ошибкой на одном из четырёх. Если на этот, который с ошибкой пробросить другой (временный провод) - все четыре работают. Если временный провод удлинить на несколько метров и опять включить все четыре - CRC с ошибкой но уже на другом датчике, провод которого я вообще не трогал. Здесь делаю вывод, нужно уходить от "звезды".
Но вот что меня настораживает больше всего - до этой проблемы сеть отлично(!) функционировала на протяжении месяца!!! Когда фаза луны сменилась начались выше упомянутые проблемы. Другими словами - ни с того ни с сего... Это убеждает меня ещё больше - НУЖНО УХОДИТЬ ОТ "ЗВЕЗДЫ". А чтобы с новой фазой луны сеть опять не "легла" хочу перестраховаться и сделать, может быть, чуть больше чем нужно... Из расчёта, как бы, на 600 метров
P.S. Протокол - вроде всё правильно, проверял. А чтобы понять конец преобразования-конвертации температуры я его опрашиваю - если DS18B20 отвечает нулем, то конвертирование идет, если 1 – конвертирование выполнено и можно считывать температуру. (взял из Datasheet)
Re: Проблемы с сетью 1-wire
Gerik_PP, вы писали, что у вас витой парой прокинуто. Обычной для компьютерной сети с 4 парами?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
Да. Неэкранированная витая пара 5-й кат. с четырьмя парами. Из них 3 жилы для DS..., 2 отданы на телефон (пока не подключён) и 3 свободны.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Проблемы с сетью 1-wire
Gerik_PP писал(а):Неэкранированная витая пара с четырьмя парами. Из них 3 жилы для DS...
Нэхарашо.
Попробуйте пустить по одной витой паре в паразитном режиме.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Проблемы с сетью 1-wire
Да-да, разбивать пары не хорошо. Можно от звезды избавиться перейдя к цепочке. При паразитном питании это очень просто. А вот при отдельном питании может не получиться.
- Вложения
-
- 1-wire-chain.png
- (3.25 КБ) 772 скачивания
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
Kavka писал(а):Можно от звезды избавиться перейдя к цепочке.
По вашему, увеличенная протяжённость сети почти до двухсот метров будет лучше, чем разбитые пары сейчас? Но согласен, что это тоже как вариант имеет место...
P.S. Понадобится дополнительный порт МК для сильной подтяжки (strong pull-up) на время конвертирования и на время записи в EEPROM
Re: Проблемы с сетью 1-wire
Да, IMHO, такая цепочка будет намного лучше, чем разбитые пары да ещё и со звездой.
Витая пара на то и витая пара, чтобы избавляться от помех. А если пары разбить, то нейтрализации помех не будет.
Опять же IMHO, если уж разбивать, то парой должна идти 1-wire/gnd и отдельным проводом доп. питание (+12в). Земляной провод будет один. А можно доп. питание пустить по целой паре (по двум проводам), ведь нормально использовать оставшийся провод от пары уже не получиться.
Витая пара на то и витая пара, чтобы избавляться от помех. А если пары разбить, то нейтрализации помех не будет.
Опять же IMHO, если уж разбивать, то парой должна идти 1-wire/gnd и отдельным проводом доп. питание (+12в). Земляной провод будет один. А можно доп. питание пустить по целой паре (по двум проводам), ведь нормально использовать оставшийся провод от пары уже не получиться.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Проблемы с сетью 1-wire
Gerik_PP писал(а):P.S. Понадобится дополнительный порт МК для сильной подтяжки (strong pull-up) на время конвертирования и на время записи в EEPROM
Ничего не понадобится, питать прямо с порта, у AVR он 40 мА тянет.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
Ещё как вариант рассматриваю применить DS2482 (I2C <-> 1-Wire (аппаратный)), у неё есть 2 адресных пина, можно до 4-х шт. на одной линии заюзать. Как раз получится разбить мою "звезду" и мои 4 датчика будут изолированы друг от друга.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Проблемы с сетью 1-wire
I²C вообще разрабатывался как межплатный (внутриблочный) интерфейс, так что сомневаюсь.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Проблемы с сетью 1-wire
Ну так и получится, в одном корпусе плата с четырьмя DS2482 соединится по I2C с главным МК, а уже к датчикам витая пара пойдёт от каждого DS2482.