Помогите разобраться c DS18B20

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Ray
Родился
Сообщения: 7
Зарегистрирован: Чт ноя 05, 2009 22:36:22

Сообщение Ray »

Здравствуйте! Есть контроллер ATtiny2313V и датчик DS18B20. Датчик воспринимает как сигнал сброса и формирует ответ при удержании низкого уровня в линии более 28 мкс (при эмуляции в AVRStudio), а не 480, как должно быть. Не понятно как все остальные задержки формировать. Пишу на asm-е, все задержки программные. Помогите разобраться...
Последний раз редактировалось Ray Вт ноя 10, 2009 23:03:06, всего редактировалось 1 раз.
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

Всё по даташиту...
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Реклама
Ray
Родился
Сообщения: 7
Зарегистрирован: Чт ноя 05, 2009 22:36:22

Сообщение Ray »

По даташиту, после Reset-а ответ PRESENCE приходит через 15 - 60 мкс, ещё 60 - 240 мкс сам PRESENCE. При проверке ответа (организован цикл) через 15 мкс ответ фиксируется, а через 65 мкс уже нет (15 мкс + 60 мкс = 75 мкс). Длительность при передаче/приёме данных 60 - 120 мкс, а я уже при 28 мкс получаю RESET и PRESENCE...
help, Help, HELP!!!
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

А расскажите по подробнее, как Вы эмулируете работу 1820 в студии?
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 7382
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Ray писал(а):Здравствуйте! Есть контроллер ATtiny2313V и датчик DS18B20. Датчик воспринимает как сигнал сброса и формирует ответ при удержании низкого уровня в линии более 28 мкс (при эмуляции в AVRStudio), а не 480, как должно быть. Не понятно как все остальные задержки формировать. Пишу на asm-е, все задержки программные. Помогите разобраться...
imho Это требование не к 1-wire устройству, а к хосту - удержать линию не менее чем 480 мксек. устройство может сброситься и от более короткого импульса, но это не значит, что все устройства это отработают. Насчет сигнала presence, я лично не заморачиваюсь - делаю окно в 480мксек после сброса и проверяю - был ли сигнал и снялся ли за это время. А нет, всё же проверяю еще, чтобы появился в течение 60 мкс.
По поводу коротких импульсов - возможно это связано с HighSpeed 1-wire протоколом. Некоторые новые устройства поддерживают такую фичу.
Реклама
Ray
Родился
Сообщения: 7
Зарегистрирован: Чт ноя 05, 2009 22:36:22

Сообщение Ray »

Pooher писал(а):А расскажите по подробнее, как Вы эмулируете работу 1820 в студии?
Build and Run. При отладке смотрю время выполнения программы в контрольных точках, где происходят переключение состояний линии и задержки.
uldemir писал(а): imho Это требование не к 1-wire устройству, а к хосту - удержать линию не менее чем 480 мксек. устройство может сброситься и от более короткого импульса, но это не значит, что все устройства это отработают. Насчет сигнала presence, я лично не заморачиваюсь - делаю окно в 480мксек после сброса и проверяю - был ли сигнал и снялся ли за это время. А нет, всё же проверяю еще, чтобы появился в течение 60 мкс.
Я делаю тоже самое, кроме последней проверки на 60 мкс. Потом отправляю команды SKIP ROM и READ ROM, потом пробую читать. Сигналы формируются, но все "1", т.е. датчик ничего не отвечает.
uldemir писал(а): По поводу коротких импульсов - возможно это связано с HighSpeed 1-wire протоколом. Некоторые новые устройства поддерживают такую фичу.
Первый раз про такое слышу. Попробую поискать...
Последний раз редактировалось Ray Пн ноя 09, 2009 12:31:05, всего редактировалось 1 раз.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7382
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Я делаю тоже самое, кроме последней проверки на 60 мкс. Потом отправляю команды SKIP ROM и READ ROM, потом пробую читать. Сигналы формируются, но все "1", т.е. датчик ничего не отвечает
read rom нельзя делать после skip rom. и skip rom, и read rom могут быть только первой командой после сброса.
Ray
Родился
Сообщения: 7
Зарегистрирован: Чт ноя 05, 2009 22:36:22

Сообщение Ray »

uldemir писал(а): read rom нельзя делать после skip rom. и skip rom, и read rom могут быть только первой командой после сброса.
Я пробовал отправлять эти команды и раздельно по одной, результат идентичен, идут стробы ("1"). При задержке между слотами более 30 мкс вылезает PRESENCE.
Если есть режим HighSpeed, то какие тайминги нужны для него?
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Автору - переименовать тему, неинформативное название.
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7382
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Я пробовал отправлять эти команды и раздельно по одной, результат идентичен, идут стробы ("1"). При задержке между слотами более 30 мкс вылезает PRESENCE.
Стоп-стоп. Так может проблема не в сбросе, а в чтении? задержка между слотами может быть неограниченно большой. Впринципе, если отлаживаете просто интерфейс с 1-wire добейтесь выполнения последовательности: сброс, presence, read rom (разумеется на шине должно быть только одно устройство) и чтение сериального номера. Следующий read rom или skip rom можно давать только после сброса (смотрите внимательно диаграмму! хоть она и на двух листах). У меня раз была проблема: когда-то давно делал чтение ds1990a, а потом эту же библиотеку хотел прикрутить к термометру и тоже "почему-то читались одни единицы". Оказалось что при чтении нужно было подвинуть момент когда делать "sampling", чтобы надежно читалось.
Если есть режим HighSpeed, то какие тайминги нужны для него?
Забудьте про него - видимо, это не ваш случай. если интересно, ds2413 такой поддерживает. Освежил память - правильно называется overdrive mode. ds18s20 - такой не поддерживают.
Ray
Родился
Сообщения: 7
Зарегистрирован: Чт ноя 05, 2009 22:36:22

Сообщение Ray »

uldemir писал(а): Стоп-стоп. Так может проблема не в сбросе, а в чтении? задержка между слотами может быть неограниченно большой. Впринципе, если отлаживаете просто интерфейс с 1-wire добейтесь выполнения последовательности: сброс, presence, read rom (разумеется на шине должно быть только одно устройство) и чтение сериального номера. Следующий read rom или skip rom можно давать только после сброса (смотрите внимательно диаграмму! хоть она и на двух листах).
Всё это я вижу на осциллографе. PRESENCE вылезает после RESETa (480 мкс) между 15 до 65 мкс, т.е. сам PRESENCE очень короткий ~10 мкс. Далее жду ещё 480 мкс. Начинаю формировать READ ROM. "0" - низкий уровень 70 мкс, "1" - низкий уровень 4,5 мкс, 65 мкс высокий уровень. Между слотами 30 мкс. При нулях снова вижу PRESENCE. Затем пауза 50 мкс и 64 строба - записываю "1" (низкий уровень 4,5 мкс, 65 мкс высокий уровень + 30 мкс задержка между слотами) не проверяя состояния в линии. Все 64 бита остаются единицами.
uldemir писал(а): У меня раз была проблема: когда-то давно делал чтение ds1990a, а потом эту же библиотеку хотел прикрутить к термометру и тоже "почему-то читались одни единицы". Оказалось что при чтении нужно было подвинуть момент когда делать "sampling", чтобы надежно читалось.
Можно по подробнее?
Друг Кота
Аватара пользователя
Сообщения: 7382
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Можно по подробнее?
А чего там... Вот посмотрел старые исходники... и обалдел - какой бред я написал и в течение 10 лет не заметил опечатку! Для 1990а время сэмлинга было установлено на 21+5=26 микросекунд от начала окна. Для 1990 - это еще работало, а для 18s20 - уже нет. Оказалось, по даташиту для 18s20 - должно быть не более 15. А в комментариях у меня написано было правильно:

Код: Выделить всё

        movlw   21/3            ; 12 мкс задеpжка до начала окна отсчета
Вот из-за этой опечатки у меня читались одни "1". Так что внимательное изучение и перепроверка исходников - вот путь к разрешению всяких невероятных глюков. А еще, можно попробовать для проверки подключить другое 1-wire устройство. На сброс и read rom они все реагируют.
Друг Кота
Аватара пользователя
Сообщения: 7382
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Вот ткнулся осциллогафом на зацикленный сигнал сброса:
480мкс - сброс
15мкс - пауза
65мкс - presence
480мкс - пауза и цикл повторяется снова. Правда на макетке у меня распаяны ds2405.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»