[an error occurred while processing this directive] [an error occurred while processing this directive]
Проблема одновременности здесь есть...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено mse 14 марта 2002 г. 16:54
В ответ на: Ответ: Модуль может безконфликтно узнать, что ему что-то передают только тогда, когда ему это уже передали, т.е. по прерыванию от приемника, которое происходит по завершению сэмплирования последнего бита. С момента начала передачи до ее завершения проходит какое-то время (для 9600 ~ 1мс). За это время, без третьего провода, кто угодно другой, в том числе и принимающий, может включить свой передатчик и начать передачу, что приведет к коллизии данных - шина то ведь одна. Два провода это не 232-й TX и RX, это 485-й. Коллизия - вещь разрешимая, но вся идея состоит в том, чтобы минимизировать затраты на программное обслуживание обмена, т.к. "разводить" конфликтующие передатчики значит резко увеличивать траффик. отправлено В.С. 14 марта 2002 г. 16:01

В этом случае гарантированно поможет таймаут после последнего переданного байта из кадра, пропорциональный приоритету (номеру )контроллера для захвата шины(без разницы - с третьим проводом или просто вылезая на шину, причём шаг на уровень поиоритета можно задать в сотни мкс- на траффике это не скажется).

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

Ответы



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

E-mail: info@telesys.ru