[an error occurred while processing this directive] [an error occurred while processing this directive]
У меня сделано 2 обработчика прерывания приема RS485 и дуплекс со стороны CPU(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено АндрейК 14 марта 2002 г. 05:56
В ответ на: Как сделать контроль линии RS-485 отправлено Maniac 13 марта 2002 г. 08:23

Т.е. при передаче байта прием не запрещается. Когда идет "своя" передача, взводится флажок "я передаю" - и приемное прерывание на него смотрит, если флажка нет - обычный прием байта и складывание его в буфер и установка другого флажка "канал занят". А вот если флажок "я передаю" есть - то принятый байт сравнивается с переданным, если они не совпадают - значит 2 устройства одновременно (с точностью до 1 байтового интервала) начали передачу, передача прекращается и возобновляется по-новой через случайный таймаут (как в Ethernet).
А флажок "канал занят" сбрасывается после того, как задача приема при проверке буфера прерываний определит, что он пуст (примерно раз в 5мс).
Работает ето все на 57600 бит/с - 1 РС + 16 контроллеров.

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

Ответы



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

E-mail: info@telesys.ru