осциллка простая, мастер просто кидает импульсы длиной 0,5мс и все , больше ничего не происходит
вот увеличенные фронты , зум 0,2мс
на конце шины
в начале шины
без длинной шины , когда напрямую к МК
6,8к много. Смотрите в APPLICATION NOTE 244 Advanced 1-Wire Network Driver Здесь около 1к подтяг. И осциллограммы странные. Обычно фрейм 8 бит, у Вас после импульса присутствия 13 бит. Число бит не кратное 8 может быть при поиске устройств.
Возможно, после команды это уже идут просадки напряжения на шине из-за потребления датчика.
https://radiokot.ru/articles/13/
Теоретически мастер после презента обнаруженного должен метнуть 0xF0 и контрольку, а дс-ка откликнуться чем-то там. Адресом, наверно.
Т.е. я бы посмотрел цикл скана - от ресета шины до ресета. На короткой и на длинной - начинает ли дс-ка передачу, в принципе или её там на середине кривит.
18b20 же с такими “просадками” норм работают, что странно.
Макс, а у тебя 85 градусов на шине с t бывало?
кому интересно рассмотреть осциллки детально, вот архив , там и программа и сами осциллки
на даче да, проскакивало, я нафиг в логике не признаю ответ датчика действительным, когда такая температура прилетает
85 градусов - это когда датчик на конверсии ребутится по питанию.
я знаю, я провал от 2к до 10к с шагом 2к , и в разных местах резюк. вообще абсолютно никаких изменений в поведении всех элементов
Чем же еще объяснить лишние импульсы?
Мысли такие, ключу надо поддерживать открытое состояние, зарядить емкость затвора внутреннего полевика, в этот момент просадка, как то так…
Чёрт его знает. Но это же мастер пульсирует, таймслоты примерно похожи по длительности. На срыв не похоже.
В качестве бреда - осциллом на питание 2406 подсесть. Проверить - проваливается или нет.
Если разрабатывается схема, которая целиком умещается на одной плате вместе со всеми устройствами на шине 1-Wire, то в результате получается практически идеальная линия. Фронты нарастания высокого уровня в шине будут минимальными, а это избавит от большинства проблем.
Но если несколько устройств подключается через длинный соединительный шлейф – придётся бороться с погонной ёмкостью линии. При это следует учитывать, что соединение по свитым вручную обычным монтажным проводам при типовом подтягивающем резисторе возможно на расстоянии до 10 м, а для соединения по очень длинной телефонной “лапше” может потребовать уменьшения подтягивающего резистора до 510 ом и даже менее.
©
короче длинная 1wire, судя по тестированию практикой, подходит только для DS18B20. Даже если добиться, чтобы хоть как то работало. Стабильности от такой системы будет никакой. Остается последний вариант , с чип и дипа микруху попробовать, вдруг все таки китайцы братья во всем виноваты.
Так бы и позиционировали эту шину - внутрикорпусная, аля и2ц или спи
У Вас на шине не паразитное питание? Я то думал, что все только по двум проводам.
я ж писал , выше , что питание НЕ паразитное, от 5В. Нюанс. я замерял все осцилки не возле ардуины а в месте , куда и подключал 2406. Наверное надо снять возле ардуины, когда 2406 на конце шины, ведь по осциллке где она на конце шины без датчиков t видно, что она отвечает на импульс мастера. Кроме нее ведь не кому. просто ардуина ответ видимо коряво видит
8 бит должно быть на search, верно. Потом read пошёл.
18b20 на search так же кратко отвечает, как и 2406?
// issue the search command
if (search_mode == true) {
write(0xF0); // NORMAL SEARCH
} else {
write(0xEC); // CONDITIONAL SEARCH
}
// loop to do the search
do
{
// read a bit and its complement
id_bit = read_bit();
cmp_id_bit = read_bit();
Ещё предположение - таймслот затягивается при ответе почему-то и мастер забивает на все по таймауту.
интересно, что срыв общения всегда происходит на одном и том же месте, рассматриваем две осциллки, обе без датчиков t , чтобы точно знать , что отвечает 2406.
вот пакет где 2406 ответила и МК ее увидел
а вот ответ есть, но он оборвался, и всегда в одном и том же месте
может дело все в этом бите? оранжевым обведен, на крашевых пакетах он всегда больше по длине, двойной
Энергии ему ну хватает на приземление линии что ли…
После формирования мастером команды “Search ROM” все устройства посылают на шину значение своего младшего бита; при этом сначала в течение одного такта ведомыми посылается “прямое” значение бита, а в течение следующего такта – “обратное” (логическое НЕ, дополнение) значение этого же бита.
Тогда мастер может считать следующие последовательности:
- “01” - если у всех ведомых устройств младший бит равен “0” (сначала они отсылают “0”, потом {НЕ “0”} = “1”)
- “10” - если у всех ведомых устройств младший бит равен “1”
- “00” - если есть так называемый конфликт – у некоторых устройств младший бит равен “1”, у остальных – “0”. Тогда при передаче “прямого” значения устройства с “0” опускают линию, при передаче “обратного” - устройства с “1” также опускают линию.
Далее мастер в следующем временном слоте отсылает “0” или “1”, таким образом определяя, с какими устройствами дальше будет общаться – все устройства, у которых младший бит не соответствует биту, сформированному мастером на этом этапе, перейдут в состояние ожидания и будут находиться в нём, пока не получат импульс сброса. Затем происходят аналогичные 63 цикла чтения-выбора, пока, наконец, ведущее устройство не определит код ROM одного из подчинённых устройств и не обратится к нему.
Для мастера каждая стадия выбора состоит из двух тайм-слотов чтения и одного тайм-слота записи.