Реализация приема последовательного кода

Последовательную передачу данных кодов КОИ8 можно программно реализовать на микроЭВМ. Формат передаваемых данных содержит стартовый бит, 8 бит данных,бит четности и два стоповых бита.

Бит старт D1 D2 D3 D4 D5 D6 D7 D8 Бит четности Бит стоп Бит стоп

В качестве вывода, через который будут передаваться данные можно использовать любую свободную линию порта. Для управления одной линией порта (установка ‘1’ или ‘0’) необходимо использовать команды типа чтения-модификация-запись с использованием логических функций OPL или ANL. Пример временной диаграммы принимаемой посылки, содержащей код числа 35h показан ниже.

Если в линии '1', значит линия свободна от передачи. Посылка начинается нулевым битом start, далее следует посылка из 8 битов данных, начиная с младшего бита (в нашем примере – это число 35h). Далее следует бит четности (parity), который может принимать нулевое или единичное значение в зависимости от значения посылки данных. Бит четности дополняет до четного значения количество единиц в посылке данных. В нашем примере число единиц четно (4), значит бит четности равен ‘0’. Бит четности защищает процесс передачи/приема от единичных помех. Контроль правильности посылки осуществляется на приемной стороне. Если сумма единиц в посылке данных и бита четности – есть число нечетное, то приемная сторона делает вывод о том, что произошел единичный сбой при передаче, принятая посылка считается ошибочной и игнорируется. Скорость передачи – параметр, обратно пропорциональный периоду передачи одного бита P. Период передачи одного бита – величина стабильная для выбранной скорости. Существует стандартный ряд скоростей передачи/приема. Некоторые значения из этого ряда: 1,2; 2,4; 4,8; 9,6; 19,2 килобод. Единицей измерения скорости передачи/приема является бод. 1 бод = 1 бит/сек.

Алгоритм программы регистрации принимаемых последовательных импульсов.

В начале выполнения программы биты принимаемых данных регистрируются без интервалов (один за другим), пока на линии не появится бит stop. Далее начинается непосредственно прием байта. Схема приема ожидает появления бита start. Цель алгоритма заключается в возможно более точном обнаружении переднего фронта бита start. Этот момент времени будет использован как точка отсчета для регистрации всех последующих битов символа. После обнаружения переднего фронта бита start устанавливается задержка в течение половины длительности приема одного бита. Если на линии еще присутствует бит start, то он считается действительным и устанавливается временная задержка, равная Р. По окончании задержки Р обрабатывается первый бит данных и устанавливается новая задержка. Этот процесс повторяется до тех пор, пока не будут зарегистрированы все 8 бит данных и бит четности. Два последних принятых бита необходимо проверить, являются ли они битами stop. Если проверка подтверждает биты stop и проверка на четность дает положительный результат считается, что символ достоверен, если нет, - произошла ошибка приема.

Рассмотренный метод требует значительных затрат мощности процессора на работу в цикле для реализации нужной временной задержки.

Использование внутреннего таймера для осуществления временной задержки приводит к значительной экономии времени обработки. Программно таймер устанавливается на заданный интервал и запускается, а процессор переходит к выполнению других задач. Переполнение таймера приводит к инициализации прерывания.

Эффективное распознавание стартового бита и увеличение точности синхронизации могут быть обеспечены в том случае, если система на базе микроЭВМ сможет определить передний фронт бита start как можно точнее. Достичь этого можно, подав принимаемые данные на вход Т1 микроЭВМ. При этом необходимо настроить таймер-счетчик на режим подсчета внешних событий и загрузить его числом FFH. При организации схемы приема таким образом, передний фронт бита start будет вызывать прерывание по переполнению таймера-счетчика.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: