Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Демультиплексер
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
URANst
Люди подскажите какую микросхему можно (нужно) испоьзовать для следующих целей:
из микроконтроллера данные должны передоваться на одно из четырех устройств по RS 485, перед преобразователем в RS485 нужно делать выбор канала (1 из 4), что для этого можно применить.
VladimirYU
Цитата(URANst @ Mar 31 2008, 15:07) *
Люди подскажите какую микросхему можно (нужно) испоьзовать для следующих целей:
из микроконтроллера данные должны передоваться на одно из четырех устройств по RS 485, перед преобразователем в RS485 нужно делать выбор канала (1 из 4), что для этого можно применить.

ИМХО, ничего не нужно. Все решается на уровне протокола обмена, MODBUS например.
URANst
Ну а если все же ити по пути : выбор канала с помощью микросхемы, чем можно делать разделение ?
rezident
Все устройства RS485 подключаются к одной шине. Адресация устройств происходит на уровне транспортного протокола. Транспортных протоколов существует много. См., например, в Википедии. Или вот еще, Wake.
rx3apf
Цитата(URANst @ Mar 31 2008, 15:20) *
Ну а если все же ити по пути : выбор канала с помощью микросхемы, чем можно делать разделение ?

405x. Хотя типично у трансиверов RS485 есть входы выборки, так что вполне можно организовать демультиплексирование именно выборками...
MrYuran
Цитата(rx3apf @ Mar 31 2008, 14:21) *
405x. Хотя типично у трансиверов RS485 есть входы выборки, так что вполне можно организовать демультиплексирование именно выборками...

Прстейший способ - завести входы EN (или CS) всех приёмопередатчиков Rs485 на 4 ноги мк и управлять.
В зависимости от полярности на нужный выдавать 0 или 1 (на остальные соответственно 1 или 0).
Главное в этом случае - не включить больше одного одновременно.
"Железные" мультиплексоры в этом смысле надёжнее.
alkaes
Цитата(URANst @ Mar 31 2008, 14:07) *
Люди подскажите какую микросхему можно (нужно) испоьзовать для следующих целей:
из микроконтроллера данные должны передоваться на одно из четырех устройств по RS 485, перед преобразователем в RS485 нужно делать выбор канала (1 из 4), что для этого можно применить.


MrYuran прав. Но если нет возможности контролировать CS/EN каждого драйвера(есть чипы в которых просто четыре дравера в одном корпусе без CS/EN )
То можно и так, вообще без дополнительных элементов(Только с помощью четырёх резисторов):
Нажмите для просмотра прикрепленного файла
На который канал нужно вывести сигнал - ставишь на MASKx 'Z' (DDRx = '0', PORTx = '0'). А на остальных '1'
URANst
Если я правильно понял что "железные" мультиплексоры это собственно отдельная микруха, то я как раз и хочу использовать такую, только не знаю какую (простите за тафтологию). Представляю так : из контроллера 2 вывода адресных, 2 вывода разрешения чтения - записи, чтение запись адресуется тому устройству , адрес которых установлен в первых двух выводах.

Цитата
А можно и так, вообще без дополнительных элементов(Только с помощью четырёх резисторов):

На который канал нужно вывести сигнал - ставишь на MASKx 'Z' (DDRx = '0', PORTx = '0'). А на остальных '1'

А как быть с приемом ?
alkaes
Цитата(URANst @ Mar 31 2008, 15:18) *
Если я правильно понял что "железные" мультиплексоры это собственно отдельная микруха, то я как раз и хочу использовать такую, только не знаю какую (простите за тафтологию). Представляю так : из контроллера 2 вывода адресных, 2 вывода разрешения чтения - записи, чтение запись адресуется тому устройству , адрес которых установлен в первых двух выводах.
А как быть с приемом ?

С приёмом сложнее
Тогда используй SN74CBT3253C (DUAL 1OF4 MUX/DEMUX)PDF
rezident
URANst, вам тут сейчас насоветуют sad.gif Вы поясните, четыре устройства должны быть физически разделены или их можно все-таки объединить на одной физической шине RS485? Что это за устройства на которые МК должен передавать данные?
Это курсовая? Если да то, напишите задание полностью. Может вы его неверно интерпретируете?
_Алекс
может эти микросхемы
ADG409, DG409
oran-be
Вообще то мультиплексировать RS-485 до интетфейсного драйвера некрасиво ваще. RS-485 изначально подразумевает адресацию устройства уже после интерфейсного драйвера на уровне протокола обмена. А включение всяких мультиплексоров перед драйвером очень плохо, поскольку каждый вносимый ом в сопротивление линии связи ухудшает помехозащищенность очень сильно. Кроме этого, сами драйвера имеют весь необходимый набор защит от всяких несанкционированных сигналов, гуляющих обычно по линии связи, мультиплексоры же этого не имеют. так что лучше это делать либо релюхами, либо классическим способом - на уровне протокола.
rx3apf
Цитата(oran-be @ Mar 31 2008, 19:29) *
Вообще то мультиплексировать RS-485 до интетфейсного драйвера некрасиво ваще. RS-485 изначально подразумевает адресацию устройства уже после интерфейсного драйвера на уровне протокола обмена. А включение всяких мультиплексоров перед драйвером очень плохо, поскольку каждый вносимый ом в сопротивление линии связи ухудшает помехозащищенность очень сильно.

Я так понял, что речь о мультиплексировании UART перед драйверами, со стороны контроллера. Естественно, коммутировать саму шину - опасный идиотизм. А вот выбрать линию (или развязать линии) 485 - вполне реальная задача. Ситуации разные бывают, топология звездой, к примеру. Или уперлись в нагрузочную способность...
SasaVitebsk
Цитата(rx3apf @ Mar 31 2008, 23:11) *
Ситуации разные бывают, топология звездой, к примеру.

Да нет. Судя по вопросам, планируется создать топологию незвездой, а другой фигурой. lol.gif
MrYuran
Цитата(URANst @ Mar 31 2008, 15:18) *
А как быть с приемом ?

В своё время у меня была система, объединяющая по RS-485 512 модулей.
Естественно, они были разбиты на группы по 32, для каждой группы своя шина.
Передача шла на все параллельно (использовались адресные команды),
а вот приём - объединяли все выходы DI приёмников по "или".
Правда, есть одна проблема: если какой-то модуль зависнет и оставит на шине "1", то эта единица забьёт по приёму все остальные линии (так как объединение по или.)
URANst
Коммутировать предпологалось не саму шину, а линии разрешения чтения - записи перед драйвером RS485, вот ...
Не вижу в этом никаких недостатков.
SasaVitebsk
Немного поясню. Представьте себе что вы выбрали линию 1, а в это время благополучно проскочила инфа по линии 3. И как в этом случае быть?
Если же инфа проходит только по активной, выбранной линии в ответ на запрос, то тогда непонятно зачем мультиплексор?

Короче на данный вопрос не получите вразумительного ответа. Или уточните задачу или применяйте стандартное решение (программное разделение на одной шине).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.