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

Участник

Группа: Участник
Сообщений: 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 ещё не освоил и кажется будет много возни с ним.
Вопрос: есть ли ещё варианты такой совместной работы кроме того, в котором придётся реализовывать поиск устройсв на шине? Например, может сущствует какия-то команда временного отключения известного устройства от шины?
|
|
|
|
|
 |
Ответов
Guest_Цыкетчик_*
|
Sep 23 2008, 18:31
|
Guests

|
Цитата(Harbour @ Sep 11 2008, 14:25)  был когда-то у далласа an187.pdf, где усе описано - для ленивых выкладываю свой древний код, который был написан по их исходникам. нужная ф-ия называется u64 w1_search_devices() А не могли бы в кратце рассказать на каком принципе там усё работает? А то я в СИ (так же как и в английском) не очень силЁн. Просто я сейчас работаю на похожей темой вот тут
|
|
|
|
|
Sep 24 2008, 03:55
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 18-02-08
Из: Челябинск
Пользователь №: 35 141

|
Цитата(Цыкетчик @ Sep 24 2008, 00:31)  А не могли бы в кратце рассказать на каком принципе там усё работает? А то я в СИ (так же как и в английском) не очень силЁн. Просто я сейчас работаю на похожей темой вот тутВкратце, среди устройств на шине устраивается "соцопрос": - У кого в серийнике ноль в 63 разряде, поднимите руку (вернее, опустите ногу)!  А теперь, у кого в 62-м, и т.д. Поскольку на шине монтажное "или", ноль в заданном разряде может быть одновременно у нескольких устройств, поэтому, в общем случае, за один проход вычисляется только один серийный номер.
|
|
|
|
|
Sep 24 2008, 08:42
|
    
Группа: Свой
Сообщений: 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
|
|
|
|
Guest_Цыкетчик_*
|
Sep 24 2008, 09:53
|
Guests

|
Цитата(xemul @ Sep 24 2008, 12:42)  получили SN очередного устройства А можно ли определять SN сразу всех устройств? Т.е. сначала 1-й бит SN всех устройств. Потом первые 2 бита. Потом первые 3 бита сразу ВСЕХ устройств. Потом все биты ВСЕХ устройств. Т.е. можно ли сканирование организовать таким образом?
|
|
|
|
|
Sep 24 2008, 10:20
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Цыкетчик @ Sep 24 2008, 13:53)  А можно ли определять SN сразу всех устройств? Конечно можно. Н-р, подписываете SN'ы на крышках устройств, читаете картинку каким-нить глазом, распознаете SN'ы - ву а ля. Цитата Т.е. сначала 1-й бит SN всех устройств. Потом первые 2 бита. Потом первые 3 бита сразу ВСЕХ устройств. Потом все биты ВСЕХ устройств.
Т.е. можно ли сканирование организовать таким образом? Конечно можно. Меняете в приведенном выше ванварном алгоритме внутренний и внешний циклы местами - ву а ля. Только при таком подходе и при неизвестном количестве устройств требуемая разрядность дерева поиска также неизвестна. Всякоразные алгоритмы поиска очень хорошо разобраны, по-моему, в 3-м томе "Искусства программирования" Кнута. Рекомендую.
|
|
|
|
Guest_Цыкетчик_*
|
Sep 24 2008, 10:53
|
Guests

|
Цитата(xemul @ Sep 24 2008, 14:20)  Только при таком подходе и при неизвестном количестве устройств требуемая разрядность дерева поиска также неизвестна. По моим подсчётам она равно 2 x [Разрядность MAC-адреса] x[Кол-во девайсов на общей магистрали]
|
|
|
|
Сообщений в этой теме
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        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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|