Модемы и факс-модемы. Программирование для MS-DOS и Windows

Как использовать буферизацию?


Обычно без использования буферизации UART генерирует прерывание всякий раз, когда передается или принимается очередной символ. В результате при скорости 2400 бит/с прерывания происходят с частотой 240 прерываний за одну секунду. Это не очень много, но при увеличении скорости до максимально возможной - 115200 бит/с за секунду - происходит уже 11520 прерываний. 11520 прерываний за одну секунду - это уже много. Использование буферизации позволяет при той же скорости резко сократить количество прерываний. Так, при генерации прерываний каждые 14 символов (бит регистра управления буферизацией D7 = 1, D6 = 1) за секунду произойдет около 823 прерываний.

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

При программировании UART 16550A для использования режима буферизации необходимо выполнить следующие действия:

         Когда для определения причины прерывания считывается регистр идентификации прерывания, надо использовать только три младших бита. Для этого можно замаскировать полученное значение числом 07h

         После обычной инициализации UART надо разрешить использование буферизации, записав в регистр управления буферизацией число 0C7h. При этом будет разрешено использование буферизации, выполнена очистка буферов приемника и передатчика, а также вызвана генерация прерываний при записи в буфер приемника больше 14 символов. После этого следует прочитать содержимое регистра идентификации прерывания (по тому же адресу). Если бит D6 этого регистра не установлен, то ваша микросхема UART не является 16550A. И вам следует запретить использование буферизации, записав ноль в регистр управления буферизацией.

Операционная система Windows 3.1 поддерживает новые возможности асинхронных последовательных адаптеров, созданных на основе микросхемы UART 16550A. Поэтому, когда вы пишете приложение для Windows, нет необходимости самостоятельно определять тип микросхемы UART.



Содержание раздела