[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Т.е. при передаче байта прием не запрещается. Когда идет "своя" передача, взводится флажок "я передаю" - и приемное прерывание на него смотрит, если флажка нет - обычный прием байта и складывание его в буфер и установка другого флажка "канал занят". А вот если флажок "я передаю" есть - то принятый байт сравнивается с переданным, если они не совпадают - значит 2 устройства одновременно (с точностью до 1 байтового интервала) начали передачу, передача прекращается и возобновляется по-новой через случайный таймаут (как в Ethernet).
А флажок "канал занят" сбрасывается после того, как задача приема при проверке буфера прерываний определит, что он пуст (примерно раз в 5мс).
Работает ето все на 57600 бит/с - 1 РС + 16 контроллеров.
E-mail: info@telesys.ru