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

 
 
 
Reply to this topicStart new topic
> Как определить MAC-адреса слейвов на общей шине?, Нужно чтобы мастер определял MAC-и слейвов путём сканирования шины
Guest_Цыкетчик_*
сообщение Sep 23 2008, 11:47
Сообщение #1





Guests






Как определить MAC-адреса слейвов на общей шине?
Нужно чтобы мастер определял MAC-и слейвов путём сканирования шины.
Подскажите алгоритм как лучше это сделать.

К общей линии подключены пины RXD и TXD UARTов как мастера так и слейвов. Всего слейвов может быть до 8-ми.

Слейвы, как это понятно из их названия, сами, по своей инициативе, начать передавать не могут. Только если их запросит мастер. А как мастер к ним обратиться если он не знает их MAC?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 23 2008, 12:12
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Если коллизии на шине допустимы, то посмотрите как это сделано в 1-wire.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 23 2008, 13:14
Сообщение #3





Guests






Цитата(Сергей Борщ @ Sep 23 2008, 16:12) *
Если коллизии на шине допустимы, то посмотрите как это сделано в 1-wire.

Не знаю к месту ли это(предчувствую что к месту), но пока я не изучил протокол определения MAC-адресов в 1-Wire замечу следующее:

Baudrate: 125000Бод (т.е. длина битовой посылки 8 мкС)
Длина MAC: 24 бита
Время ответа слейва имеет джиттер: 200мкС (т.е. много больше длины битовой посылки в 8мкС)


Джиттер обусловлен обработкой прерываний.


Таким образом синхронного начала передачи всеми слейвами не получить. Разброс времени начала передачи ответного пакета на порядки превышает длину битового интервала
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 23 2008, 14:30
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Цыкетчик @ Sep 23 2008, 16:14) *
Разброс времени начала передачи ответного пакета на порядки превышает длину битового интервала
Можно снизить скорость до окончания поиска адресов или использовать весь байт из нулей или единиц как один бит.
Для начала определитесь - допускает ли коллизии физический уровень вашего канала?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 23 2008, 18:24
Сообщение #5





Guests






Цитата(Сергей Борщ @ Sep 23 2008, 16:12) *
посмотрите как это сделано в 1-wire.

Нашёл тут темку
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 24 2008, 08:17
Сообщение #6





Guests






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

Т.е. сначала определяем первый бит у ВСЕХ девайсов, потом первые 2 бита MAC-а ВСЕХ девайсов, потом первые3 бита MAC-а ВСЕХ девайсов......и наконец все 24 бита..

Просто я что-то подобное сейчас мучу.


Не существует ли какого стандартного протокола подобного типа, чтобы поглядеть как там они делают?

Сообщение отредактировал Цыкетчик - Sep 24 2008, 08:20
Go to the top of the page
 
+Quote Post
ktod
сообщение Sep 24 2008, 11:41
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 27-09-05
Пользователь №: 8 979



А если самый простой вариант: опросить всех их последовательно? Кто ответил - тот и "тут".
Т.е. не спрашивать "кто тут?", а спрашивать "Слейв №ч, ты тут?"

Сообщение отредактировал ktod - Sep 24 2008, 11:43


--------------------
Ignoramus et Ignorabimus
Go to the top of the page
 
+Quote Post
Guest_Цыкетчик_*
сообщение Sep 24 2008, 12:58
Сообщение #8





Guests






Цитата(ktod @ Sep 24 2008, 15:41) *
А если самый простой вариант: опросить всех их последовательно? Кто ответил - тот и "тут".
Т.е. не спрашивать "кто тут?", а спрашивать "Слейв №ч, ты тут?"

У меня размер MAC-адреса 24 бита. Т.е. MAC адрес слейва может быть любым в диапозоне 0...16777216.

Это что же получится? Мне 16 миллионов опросов делать? А если я захочу MAC сделать 48-ми битным?
Тогда придётся вообще делать 281 474 976 710 656 опросов. Даже если делать 1000 опросов в секунду для определения MAC-ов всех девайсов на шине потребуется почти 9000 лет

Сообщение отредактировал Цыкетчик - Sep 24 2008, 13:01
Go to the top of the page
 
+Quote Post

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

 


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


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