Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Да? А как же это? (Зырь тело мессаджа ) (+)
Отправлено
sdeftt 29 февраля 2008 г. 00:05
В ответ на:
просто не существует отправлено
DASM 28 февраля 2008 г. 21:35
"Формально все правильно, и на столе в лаборатории будет работать. Однако в реальной жизни будут проблемы.
Дело в том, что приемники RS485 очень чувствительные. Когда все устройства работают на прием, то малейшая помеха в линии связи будет ими воспринята и выдана на входы UART-ов как полезный сигнал. UART "увидит" ложный старт-бит и начнет прием, и т.п. Алгоритм работы должен это учитывать, иначе обмен будет дико глючить, и даже подтягивающие резисторы в линии и "fail-safe" приемопередатчики не помогут.
В протокол обмена надо ввести следующие дополнения:
1) Перед началом передачи пакета надо включить трансивер на передачу, но в течении нескольких байт-интервалов не передавать ничего. Включенный выход передатчика пересилит почти любую наведенную помеху, поэтому в течении такого "пассивного" интервала на входах приемников помех не будет. Этот "пассивный" интервал нужен чтобы все приемники очистили свои буфера по тайм-ауту.
2) При передаче пауза между соседними байтами в пакете не должна превышать некоторого малого значения, например, половины байт-интервала. Приемники же должны принимать данные с проверкой прихода каждого нового байта на допустимый тайм-аут. Если в течении, скажем, двух байт-интервалов следующий байт не пришел, значит, это была помеха, приемник должен отвергнуть текущий пакет, очистить буфер и быть готовым к приему нового пакета." (с)
http://www.microchip.su/showthread.php?t=1390
Составить ответ | Вернуться на конференцию
Ответы