реклама на сайте
подробности

 
 
> вопрос по 1-Wire, работа с двумя устройствами с одним неизвестным серийным номером
timex
сообщение Sep 10 2008, 07:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 27-04-05
Из: Воронеж
Пользователь №: 4 541



Всем привет! Прошу помочь в одном вопросе.


Есть контроллер RS232>1-Wire DS2480B, подключённый к микроконтроллеру AVR. Компилятор - WinAVR (это к тому, что у него нет библиотеки для работы с 1-Wire).
К нему подключён термодатчик (в принципе не важно какой) DS18B20 с уже известным серийным номером (который 8 байт).

Сейчас понадобилось подключать к этой шине таблетку DS1990A для охранных функций.

Но для её идентификации нужно сначала её запомнить в микроконтроллере для последующих сравнений. Но таблетка эта - не единственная. Т.е. серийный номер заранее не известен.

Термодатчик для программирования таблетки отключать не предполагается.

Алгоритм нужен примерно такой: периодически опрашивается термодатчик. Тут прикладывают таблетку. Микроконтроллер считывает её номер и что-то делает в зависимости от того, совпал он с уже хранящим е ЕЕПРОМ или нет, при этом возобновляется опрос термодатчика.

В другом случае, когда нужно запомнить новую таблетку, предполагается так: периодически опрашивается термодатчик. Тут нажимают кнопку программирования и в течении 5 секунд микроконтроллер ждёт прикладывания новой таблетки. После того как её приложили и считали её номер или по прошествии 5 секунд возобновляется опрос термодатчика.

Искал в документации на DS2480B и в описаниях стандартов 1-Wire команду для "временного отключения от шины с последующим включением", не нашёл. А она в данном случае очень пригодилась бы.

Единственный вариант, который придётся использовать - поиск устройств на шине. Но как раз им не хочется заморачиваться, ибо plug&play на шине 1-Wire ещё не освоил и кажется будет много возни с ним.

Вопрос: есть ли ещё варианты такой совместной работы кроме того, в котором придётся реализовывать поиск устройсв на шине? Например, может сущствует какия-то команда временного отключения известного устройства от шины?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Harbour
сообщение Sep 11 2008, 10:25
Сообщение #2


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



был когда-то у далласа an187.pdf, где усе описано - для ленивых выкладываю свой древний код, который был написан по их исходникам. нужная ф-ия называется u64 w1_search_devices()
Прикрепленные файлы
Прикрепленный файл  w1.h.txt ( 1.7 килобайт ) Кол-во скачиваний: 186
Прикрепленный файл  w1.c.txt ( 10.12 килобайт ) Кол-во скачиваний: 275
 
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 23 2008, 18:31
Сообщение #3





Guests






Цитата(Harbour @ Sep 11 2008, 14:25) *
был когда-то у далласа an187.pdf, где усе описано - для ленивых выкладываю свой древний код, который был написан по их исходникам. нужная ф-ия называется u64 w1_search_devices()

А не могли бы в кратце рассказать на каком принципе там усё работает? А то я в СИ (так же как и в английском) не очень силЁн.

Просто я сейчас работаю на похожей темой вот тут
Go to the top of the page
 
+Quote Post
Ledmaster
сообщение Sep 24 2008, 03:55
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 18-02-08
Из: Челябинск
Пользователь №: 35 141



Цитата(Цыкетчик @ Sep 24 2008, 00:31) *
А не могли бы в кратце рассказать на каком принципе там усё работает? А то я в СИ (так же как и в английском) не очень силЁн.

Просто я сейчас работаю на похожей темой вот тут

Вкратце, среди устройств на шине устраивается "соцопрос": - У кого в серийнике ноль в 63 разряде, поднимите руку (вернее, опустите ногу)! smile.gif А теперь, у кого в 62-м, и т.д. Поскольку на шине монтажное "или", ноль в заданном разряде может быть одновременно у нескольких устройств, поэтому, в общем случае, за один проход вычисляется только один серийный номер.
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 24 2008, 08:03
Сообщение #5





Guests






Спасибо. Вы очень доходчиво объяснили (сразу видно, что Вы действительно разбираетесь).

Цитата(Ledmaster @ Sep 24 2008, 07:55) *
поэтому, в общем случае, за один проход вычисляется только один серийный номер.

А после того, как MAC очередного девайса определён ему даётся команда "отключится от опроса"?


А можно определять MAC не как в 1-Wire последовательно, по одному адресу, а сразу несколько адресов последовательно увеличивая кол-во распознанных бит?

Сообщение отредактировал Цыкетчик - Sep 24 2008, 08:22
Go to the top of the page
 
+Quote Post
xemul
сообщение Sep 24 2008, 08:42
Сообщение #6



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Цыкетчик @ Sep 24 2008, 12:03) *
А после того, как MAC очередного девайса определён ему даётся команда "отключится от опроса"?

Направлением поиска рулит мастер, который не будет повторять дважды один и тот же маршрут.
Ванварный алгоритм поиска:
1) мастер выдает команду поиска
2) (оставшиеся в поиске) слейвы выдают на шину младший (очередной) бит своих серийных номеров
3) (оставшиеся в поиске) слейвы выдают на шину инверсию младшего (очередного) бита своих серийных номеров
4) по комбинации из 2) и 3) мастер определяет направление дальнейшего поиска, выдавая на шину 0 или 1; устройства, у которых направление поиска не совпало с текущим битом серийного номера, в дальнейшем поиске не участвуют
5) while(++SN_Bit_Cnt < SN_LENGTH) goto 2)
6) получили SN очередного устройства
7) если в дереве поиска остались неоднозначности, goto 1)

Посмотрите все-таки на досуге app187.pdf
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 24 2008, 09:53
Сообщение #7





Guests






Цитата(xemul @ Sep 24 2008, 12:42) *
получили SN очередного устройства

А можно ли определять SN сразу всех устройств? Т.е. сначала 1-й бит SN всех устройств. Потом первые 2 бита. Потом первые 3 бита сразу ВСЕХ устройств. Потом все биты ВСЕХ устройств.

Т.е. можно ли сканирование организовать таким образом?
Go to the top of the page
 
+Quote Post
xemul
сообщение Sep 24 2008, 10:20
Сообщение #8



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Цыкетчик @ Sep 24 2008, 13:53) *
А можно ли определять SN сразу всех устройств?

Конечно можно. Н-р, подписываете SN'ы на крышках устройств, читаете картинку каким-нить глазом, распознаете SN'ы - ву а ля.
Цитата
Т.е. сначала 1-й бит SN всех устройств. Потом первые 2 бита. Потом первые 3 бита сразу ВСЕХ устройств. Потом все биты ВСЕХ устройств.

Т.е. можно ли сканирование организовать таким образом?

Конечно можно. Меняете в приведенном выше ванварном алгоритме внутренний и внешний циклы местами - ву а ля. Только при таком подходе и при неизвестном количестве устройств требуемая разрядность дерева поиска также неизвестна.

Всякоразные алгоритмы поиска очень хорошо разобраны, по-моему, в 3-м томе "Искусства программирования" Кнута. Рекомендую.
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 24 2008, 10:53
Сообщение #9





Guests






Цитата(xemul @ Sep 24 2008, 14:20) *
Только при таком подходе и при неизвестном количестве устройств требуемая разрядность дерева поиска также неизвестна.

По моим подсчётам она равно 2 x [Разрядность MAC-адреса] x[Кол-во девайсов на общей магистрали]
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- timex   вопрос по 1-Wire   Sep 10 2008, 07:53
- - Сергей Борщ   Цитата(timex @ Sep 10 2008, 10:53) Вопрос...   Sep 10 2008, 08:04
- - revolution   Цитата(timex @ Sep 10 2008, 10:53) Искал ...   Sep 10 2008, 08:47
- - Ledmaster   Цитата(timex @ Sep 10 2008, 13:53) Искал ...   Sep 10 2008, 09:16
- - Warlockwolf   Цитата(timex @ Sep 10 2008, 11:53) Единст...   Sep 10 2008, 10:00
- - xemul   Цитата(timex @ Sep 10 2008, 11:53) Всем п...   Sep 10 2008, 10:35
|- - Цыкетчик   Цитата(Harbour @ Sep 11 2008, 14:25) был ...   Sep 23 2008, 18:31
|- - Цыкетчик   Цитата(xemul @ Sep 24 2008, 12:42) получи...   Sep 24 2008, 09:53
|- - Цыкетчик   Цитата(xemul @ Sep 24 2008, 14:20) Только...   Sep 24 2008, 10:53
|- - xemul   Цитата(Цыкетчик @ Sep 24 2008, 14:53) По ...   Sep 24 2008, 12:05
- - timex   xemul, спасиб, нашёл кое-что у maxim, читаю... H...   Sep 11 2008, 12:45
- - Harbour   binary tree leafs discovery - читайте pdf там англ...   Sep 24 2008, 01:39


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016