Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как определить MAC-адреса слейвов на общей шине?
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам
Цыкетчик
Как определить MAC-адреса слейвов на общей шине?
Нужно чтобы мастер определял MAC-и слейвов путём сканирования шины.
Подскажите алгоритм как лучше это сделать.

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

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

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

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


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


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

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

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

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


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

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

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