[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]

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

Вроде должно быть так:
Один из модулей начал передачу. По старту все остальные начали прием
и принимают весь блок, достаточно запретить им передачу во время
приема - завести старт на прерывание.
Блок закончился, все модули знают, что линия свободна.
Зачем им что то еще читать?
А вот начать передачу нового блока безконфликтно третий провод не
поможет. То же самое будет, если модуль просто начнет передачу.
Но по третьему проводу ( а лучше второй витой паре ) можно выставлять
( в режиме передатчика запрет - ноль ) запрос хосту на обслуживание.
Польза может быть, но нужен еще один передатчик.

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

Ответы



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

E-mail: info@telesys.ru