Интерфейс 1-Wire

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 27
Зарегистрирован: Вс май 29, 2011 16:04:41

Сообщение ascentman »

ууу.....ет складно для студента, которому надо всего то сдать лабораторку по микропроцесорах. не знаю: правильно я подключил на рис. - но надо такое простое задания решить: типа того, как считать серийной номер етого ds17.. или какие-то подпрограмки запису-чтения 1, 0 - подобно my last post.
Вложения
23468796.jpg
(91.12 КБ) 559 скачиваний
maket_1wire.rar
(11.06 КБ) 401 скачивание
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 27
Зарегистрирован: Вс май 29, 2011 16:04:41

Сообщение ascentman »

ARV писал(а): давным-давно я публиковал этот проект: http://arv.radioliga.com/content/view/29/44/ к нему прилагались несколько библиотечек на ассемблере... думаю, вам подойдет
а где там код на ассемблере, так и не нашел???
Реклама
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

ascentman писал(а):а где там код на ассемблере, так и не нашел???
ну и студенты нынче пошли... в трех соснах заблудился - и на весь мир кричать о помощи...
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 402
Зарегистрирован: Пт май 29, 2009 10:14:29

Сообщение nsl2004 »

ascentman писал(а):ууу.....ет складно для студента, которому надо всего то сдать лабораторку по микропроцесорах. не знаю: правильно я подключил на рис. - но надо такое простое задания решить: типа того, как считать серийной номер етого ds17.. или какие-то подпрограмки запису-чтения 1, 0 - подобно my last post.
Студент?!:shock: Предложения не согласованы, ошибок больше чем слов. Ну, уважаемый , насмешил так насмешил..
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 19
Зарегистрирован: Сб апр 23, 2011 14:23:38

Сообщение shkarbatov »

Ранее я кидал ссылку на книгу. Там все подробно описано, есть готовые примеры ПО, включая запись 0 и 1.
Вы сначала рассберитесь с тем как вам советуют, и только потом задавайте новые вопросы.
Реклама
Открыл глаза
Сообщения: 51
Зарегистрирован: Чт мар 22, 2012 09:14:18
Откуда: Липецк

Сообщение EmDmAl »

Извините вопрос перенес.
Реклама
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вт сен 11, 2012 07:09:52

Сообщение invisible86 »

Коты помогите, нужно связать два мк pic16f84a по 1-wire, те к примеру передать с мк на мк значение температуры считанной с датчика DS1820, тоторое хранится к примеру в переменной t.

уточню немного суть, программы пишу и компилирую в среде mikroC fo pic, там имеется даже пример для датчика ds1820, который легко повтирить. а вот как используя их команды из библиотеки передавать с контроллера на контроллер до меня не доходит.

может кто то делал что то подобное, помогите
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

Сдаётся мне, что вопрос к сабжу не имеет никакого отношения. :roll:
И кстати, что за безумная идея связывать два контроллера по Ван-Вайеру?
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вт сен 11, 2012 07:09:52

Сообщение invisible86 »

наверно я такой безумный :write:

а есть предложение как по одному проводу данные передать другим способом?
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

invisible86 писал(а):как по одному проводу данные передать
Например, обычным UART'ом.
Родился
Сообщения: 7
Зарегистрирован: Чт фев 19, 2015 22:03:42

Сообщение Shyrik27 »

Здравствуйте. Хочу немного поживится умом-разумом. Пишу маленько программу для чтения температуры с >2 термометров DS 18B20. Есть код семейства, серийный номер (все в 16). Первой стоит проблема в вычисление CRC. Использую процедуру со статьи. На выходе получаю CRC в виде от 1 до (как мне кажется) 256. Так понимаю бинарное в десятичном представлении. (верно?) следовательно его нужно переобразовать в двоичную систему, и поставить в конец передаваемой строки (верно?). Дальше вопрос: в CRC передаю байты в обратном порядке (в порядке передачи) то есть если я сначала переобразовываю в бинарный вид код семейства, затем ID датчика (тоже разворачивать?).
Итого я наметил алгоритм:
1 перевожу код семейства в бинарный
2 - перевожу ID датчика в бинарный
3 - разворачиваю бинарный ID код датчика (по байтно)
4 передаю в CRC код семейства затем побайтно ID код девайса
5 после вычисления CRC переобразовываю его в бинарный вид и ставлю в хвост
6 согласно алгоритму (ресет/матч) - передаю: семейство>6 байт ID > CRC
Все ли так? Просто в голове уже каша, вот решил еще добавить "соли", да и темку "апнуть".
Родился
Сообщения: 7
Зарегистрирован: Чт фев 19, 2015 22:03:42

Сообщение Shyrik27 »

Снова. Здравствуйте. Кто может ответить на вопрос связанный с вычислением CRC. Вопрос таков. Имею полученый код семейства (28h) и серийный номер устройства (допустим 00000001b81c (тоже в h)). на вычисление CRC перевожу код семейства (28h) в бинарный вид (00101000) и таким же самым образом перевожу ID (начинаю с 1С = 00011100). Вычисление провожу в паскале, подстановкой в таблицу (все по производителю). Так вот вопрос (!) в CRC я передаю байт в каком виде: 16 или бинарном, и в каком порядке: прямом (00101000), или обратном (00010100)? И какое число я получаю на выходе? десятичное или 16? Заранее благодарен
Родился
Сообщения: 7
Зарегистрирован: Чт фев 19, 2015 22:03:42

Сообщение Shyrik27 »

Что же продолжу монолог. Разобрался уже и с CRC, и с передачей байтов, и с прочей хитростью. Вот дошел до того, что нужно было. Считываю температуру с любого нужного мне датчика (!, во блин достижение то). Но процесс считывания с одного - около 3,5 с. А у меня их будет как минимум 10 (это - 35 сек на одно обновление. Согласитесь, как то не очень гуд). Вот теперь подумываю как бы его "синхронизировать" Гадаю как? Потоки в Delphi относительно команд? Кто как с этим боролся, и как решалось?
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

процесс считывания с одного - около 3,5 с
чёт хуйня какая-то. Потому и остальным пох на ваши потуги.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Родился
Сообщения: 7
Зарегистрирован: Чт фев 19, 2015 22:03:42

Сообщение Shyrik27 »

Что же, крайне интересная позиция. Надеюсь такой взгляд и отношение на этом форуме имеете только Вы. К тому же мне кажется, что не стоит столь критично отзываться на чужие вопросы, этим можно показать только свою культуру.
Родился
Сообщения: 7
Зарегистрирован: Чт фев 19, 2015 22:03:42

Сообщение Shyrik27 »

И так, отпишусь о проделанном и осмысленном. 1. удалось снизить время на чтение одного датчика с 3,5с до 1с (в принципе это около минимума возможного) и того 10 датчиков - 10с-9с. Для меня это вполне приемлемо. Как. 1. - были дублированы задержки функции и после функции (так как функция скрыта в библиотеке). 2. Была изменена структура считывания температуры (вместо reset/match rom/convertt t/reset/match rom/read scartchpad было использовано: reset/skip rom/convertt t/reset/match rom/read scartchpad). Как то так. Осталось запустить цикл чтения в потоке, и цель вроде как выполнена. спасибо за внимание.
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Shyrik27 писал(а):удалось снизить время на чтение одного датчика с 3,5с до 1с (в принципе это около минимума возможного)
Конкретно чтение температуры после преобразования reset/match rom/read scartchpad занимает около 14 мс. Если у вас все датчики делают преобразование температуры одновременно (судя по skip rom/convertt t), непонятно на что у вас уходит 1 с на чтение одного датчика.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Сообщение Smen »

Gudd-Head писал(а):непонятно на что у вас уходит 1 с на чтение одного датчика
Видимо, на последовательный подсчёт CRC. :)
Электрический кот
Аватара пользователя
Сообщения: 1007
Зарегистрирован: Ср мар 03, 2010 11:48:00
Откуда: Уфа

Сообщение Хатуль_мадан »

Жуть какая-то. Время на общение с 1 датчиком (со skip rom) уходит менее 20мС, даже если ожидать время обработки прерываний на индикацию. Все остальное время около 1Сек просто тупо ждем, пока датчик совершит очередное преобразование, или можно занять его еще чем-либо. На 10 датчиков думаю время на опрос увеличится до 0,5С примерно, добавится обращение к датчикам по их коду, ну ни как не несколько секунд.
Вот пример с 1 датчиком, зеленый - 1-Wire:
http://img.radiokot.ru/files/19962/lgkm1eslo.png
Родился
Сообщения: 7
Зарегистрирован: Чт фев 19, 2015 22:03:42

Сообщение Shyrik27 »

Хатуль_мадан писал(а):Жуть какая-то.
Вот это уже существенное замечание. Но как же тот факт, что процедура RESET длится >480 us? А мне нужно перед опросом каждого датчика послать MatchROM (следовательно сначала Reset) или тупо посылаем matchrom/read/match rom/read/ Я немного уже позабыл как там код выглядит ((отложил на недельку дабы другие дела подогнать да голову освежить) сегодня гляну и начну экспериментировать более активно, если вы все так уверены в том, что можно достичь (небывалых для моего воображения) <1c на 10 датчиков.
Ответить

Вернуться в «Статьи»