Исключение приема при передаче в полудуплексном режиме

При работе с полудуплексным интерфейсом RS-485 (прием и передача по одной паре проводов с разделением по времени) можно забыть, что UART контроллера - полнодуплексный, то есть принимает и передает независимо и одновременно.

Обычно во время работы приемопередатчика RS-485 на передачу, выход приемника RO переводится в третье состояние и ножка RX контроллера (приемник UART) "повисает в воздухе". В результате, во время передачи на приемнике UART вместо уровня стопового бита ("1") окажется неизвестно что, и любая помеха будет принята за входной сигнал. Поэтому нужно либо на время передачи отключать приемник UART (через управляющий регистр), либо подтягивать RX к единице. У некоторых микроконтроллеров это можно сделать программно - активировать встроенные подтяжки портов.

Примечание: у микроконтроллера AT90S8535 (AVR Atmel) есть глючок - при отключенном UART он все равно принимает, и после включения на прием первый принятый байт может быть испорчен. Так что активировать подтяжку RX ему нужно обязательно.

6. "Горячее" подключение к линии связи

Насколько я знаю, спецификацией RS-485 не предусмотрено "горячее" подключение - включение новых приемопередатчиков в линию связи во время работы системы. Тем не менее, подобную операцию система переносит практически безболезненно, если учесть один нюанс. Это важно, когда питание на устройство подается в момент подключения, например, когда плата в виде кассеты вставляется в разъем. Дело в том, что во время любого сброса: по включению питания, по сигналу на входе "Reset", по срабатыванию сторожевого таймера - контроллеру требуется время на инициализацию, которое может составлять до нескольких десятков миллисекунд. Пока контроллер находится в состоянии сброса, он принудительно настраивает все порты на вход. Получается ситуация, при которой питание на микросхему приемопередатчика RS-485 уже подано, но входы разрешения приемника /RE и передатчика DE "висят в воздухе". В результате, приемопередатчик может по помехе открыться на передачу и все время пока микроконтроллер в отключке пускать в работающую линию мусор. Избежать этого легко - достаточно через резистор в несколько килоом подтянуть вход разрешения приемника /RE к нулю. Этим приемопередатчик сразу по включении питания настраивается на прием и не лезет на линию.