Аппаратная борьба с драйверами RS-485. Кто сталкивался - подскажите, плз !
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Oldmanoff 07 декабря 2003 г. 18:37

Имеем: витая пара,терминирована с каждой стороны резисторами 120 Ом, на концах - 2 полудуплексных драйвера типа ADM485 ST485, MAX485 и т.п. С одной стороны - обычный UART (AT89C4051), с другой - специальный коммутатор, предназначенный для ветвления магистрали в "звезду" (клиенту нужна "звезда").
Очевидно, что для двустороннего обмена нужно менять направления обоих драйверов. При этом смена направления происходит, строго говоря, несинхронно, поэтому неизбежно возникает ситуация (когда слейв ждет мастера, а мастер еще не хочет им стать), когда на линии висит только 2 приемника (про 2 передатчика - не рассматриваем, это конфликт).
Вот в этот-то момент и возникают следующие глюки:
Линия фактически в пассивном состоянии, и логично было бы ожидать, что на КМОП/ТТЛ-выходе приемника каждого драйвера тоже пассивное состояние канала, т.е. логическая ЕДИНИЦА. Ан нет! У разных экземпляров даже одной фирмы и одной партии это выходное состояние может быть и нулем и единицей.
Для RX-входа UARTa это иногда лечится переключением направления линии на несколько мкс раньше начала старт-бита, а вот для коммутатора - смертельно (он ловит любой отрицательный фронт как старт-бит, а если выход валяется уже в нуле - то старт-бит пропускается). То же самое может наблюдаться и при оторванной вообще линии.
ВОПРОС. Существует ли какой-нибудь АППАРАТНЫЙ способ приведения выхода приемника в ИЗВЕСТНОЕ заранее состояние?
Спасибо !
Oldmanoff

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru