Общедоступная литература по компьютерной тематике посвящена в основном традиционному применению персонального компьютера (ПК) - для расчетов, создания и редактирования документов, поиска и хранения информации, развлечений. Реже встречаются статьи и книги о проектировании с помощью ПК различных радиоэлектронных устройств. О том, как ПК может помочь радиолюбителю в настройке и отладке создаваемых им устройств, материалов почти нет. Считается, что для этого ПК должен быть оснащен довольно сложными и дорогими дополнительными платами и приставками. Однако нередко ряд очень полезных радиолюбителю функций можно реализовать, используя имеющиеся в каждом ПК стандартные устройства, например коммуникационные порты. Об этом и пойдет речь в предлагаемой статье.
Каждый IBM-совместимый ПК имеет два последовательных порта для обмена данными, именуемых СОМ-портами или интерфейсами RS-232C. К одному из них обычно подключен манипулятор "мышь", без которого сегодня трудно представить себе эффективную работу, второй часто остается свободным или используется время от времени для подключения внешнего модема и других периферийных устройств, не работающих постоянно.
Таблица 1.
Контакт разъема |
Цепь |
Направление передачи |
|
DB-25 |
DB-9 |
||
1 |
- |
PG |
От ПК |
2 |
3 |
TXD |
К ПК |
3 |
2 |
RXD |
От ПК |
4 |
7 |
RTS |
К ПК |
5 |
8 |
CTS |
К ПК |
6 |
6 |
DSR |
К ПК |
7 |
5 |
SG |
К ПК |
8 |
1 |
DCD |
К ПК |
20 |
4 |
DTR |
От ПК |
22 |
9 |
RI |
К ПК |
Набор сигналов интерфейса RS-232C и их назначение подробно описаны в [1]. Все они перечислены в табл. 1 вместе с не упомянутым в той же статье Rl (Ring Indicator - индикатор звонка, цепь 125). Как видно, в распоряжении пользователя имеются три выходных и пять входных цепей. Программа, формирующая на выходах СОМ-порта сигналы нужной формы и одновременно анализирующая состояние его входов, способна превратить ПК в запоминающий многоканальный логический анализатор с широким диапазоном периодов анализа и богатыми возможностями синхронизации, обработки и отображения результатов. Она может быть полезной при отладке самых различных цифровых устройств. Основная трудность разработки программы-анализатора заключается в том, что стандартная аппаратно-программная конфигурация IBM-совместимого ПК даже при наличии быстродействующих процессора и ОЗУ не позволяет сколько-нибудь точно формировать интервалы, меньшие нескольких сотен миллисекунд, используя в DOS прерывания процессора по переполнению системного таймера, а в Windows - таймерные сообщения. Так как эти события происходят с периодом приблизительно 55 мс, именно таким получается "квант" отсчета времени. Попытки перепрограммировать таймер приводят к непрогнозируемым последствиям для всех работающих программ и самой операционной системы. Можно отмерять время, подсчитывая число исполненных программой циклов и позаботившись, чтобы этот процесс не прерывали внешние события. Но и такая задача в современных операционных системах не решается корректно, к тому же требуется подстройка выдержки применительно к каждой аппаратной конфигурации ПК. В MS DOS подобные проблемы решаются легче, но разработка программы становится слишком трудоемкой, если требуются графический интерфейс и вспомогательные действия: вычисления, печать графиков. Тем не менее при использовании любой операционной системы можно получить сигнал строго заданной частоты и формы на выходе TXD последовательного порта. Как известно, частота следования битов передаваемых данных равна частному от деления стабилизированной кварцевым резонатором образцовой частоты (115 200 Гц) на коэффициент М. Системное программное обеспечение выбирает и устанавливает этот коэффициент, исходя из стандартных скоростей передачи информации. Однако ничто не мешает прикладной программе присвоить коэффициенту М любое значение от 1 до 216-1 (0FFFFH). Таким образом, на выходе TXD могут быть получены импульсы частотой от 57,6 кГц до долей герца, причем произвольную частоту ниже 12 кГц удается установить с погрешностью не более+10, а ниже 1,2кГц-+1 %. Последовательным портом управляют через десять восьмиразрядных регистров его контроллера, называемого универсальным асинхронным приемопередатчиком (УАПП, UART). В табл. 2 приведены адреса этих регистров в пространстве ввода-вывода ПК и их функциональное назначение.
Таблица 2.
Регистр |
Доступ |
Адрес для порта |
|
СОМ1 |
COM2 |
||
Данные передатчика | Запись |
3F8H |
2F8H |
Данные приемника | Чтение |
3F8H |
2F8H |
Делитель скорости обмена (младший байт) | Запись |
3F8H |
2F8H |
Делитель скорости обмена (старший байт) | Запись |
3F9H |
2F9H |
Разрешение прерываний | Запись |
3F9H |
2F9H |
Идентификация прерываний | Чтение |
3FAH |
2FAH |
Управление линией | Запись |
3FBH |
2FBH |
Управление модемом | Запись |
3FCH |
2FCH |
Состояние линии | Чтение |
3FDH |
2FDH |
Состояние модема | Чтение |
3FEH |
2FEH |
Нетрудно заметить, что
некоторые из них имеют одинаковые адреса.
Доступом к другим дополнительно управляет
старший разряд (D7) регистра управления линией.
Если в нем логическая 1, обращаются к регистрам
делителя скорости (старшего и младшего байтов
числа М), если 0 - данных передатчика и приемника,
разрешения прерываний. Формат сигнала на
выходе TXD зависит от кода, записанного в регистр
управления линией. Разрядами D1 и DO этого кода
задают число информационных битов в слове,
передаваемом (или принимаемом) УАПП. Их может
быть от пяти (в упомянутых разрядах - код 00) до
восьми (код 11). Число стоп-битов зависит от
состояния разряда D2: 0 - один; 1 - два. При пяти
информационных вместо двух стоп-битов
передается один, но полуторной длительности, что
сделано для совместимости со старинными
механическими телетайпами. Разряды D3-D5
регистра управления линией управляют битом
контроля четности. Если D3=1, при передаче он
"вставляется" между последним
информационным и первым стоп-битами, в противном
случае - отсутствует. Значение этого бита
передатчик автоматически выбирает таким, чтобы
общее число единиц в информационных и
контрольном битах стало четным (при D4=1) или
нечетным (при D4=0). Эту логику можно отключить,
задав D5=1. Контрольный бит станет инверсным
значению разряда D4 независимо от числа единиц в
информационных битах. Логической 1 в разряде D6
включают режим имитации разрыва связи. На выходе
TXD независимо от состояния всех других разрядов и
регистров устанавливается постоянный уровень
логического 0. Назначение разряда D7 было описано
выше.
В табл. 3 приведены некоторые примеры
формирования в цепи TXD сигналов различной
частоты и скважности, далеко не исчерпывающие
все возможности.Сигнал формы, показанной в
соответствующей графе таблицы, можно наблюдать
непосредственно на выходе TXD УАПП. На внешнем
разъеме порта он проинвертирован. Однако
описанное ниже устройство сопряжения
проинвертирует сигнал еще раз и его форма вновь
совпадет с табличной.
Таблица 3.
Коды в регистрах |
Сигнал на выходе TXD |
|||
управления линией |
данных передатчика |
Форма |
Частота (F-115,2 кГц) |
Скважность |
ЗН |
55Н |
F/(2*M) |
2 |
|
2Н |
12Н |
F/(3*M) |
3 |
|
3BH |
44Н |
F/(4*M) |
4 |
|
ЗН |
ВН |
F/(5*M) |
5 |
|
3FH |
0DBH |
F/(3*M) |
2/3 |
|
2FH |
77Н |
F/(4*M) |
3/4 |
|
ЗН |
0EFH |
F/(5*M) |
4/5 |
|
2FH |
0DFH |
F/(6*M) |
5/6 |
Напомним, что передача
байта, записанного в регистр данных передатчика,
начинается с младшего разряда. Так как байт
передается всего один раз, для получения строго
периодического выходного сигнала необходимо
повторять загрузку указанного регистра
немедленно после его освобождения. О готовности
к записи нового байта свидетельствует D5=1 в
регистре состояния линии.
Подробнее о назначении и использовании
регистров УАПП можно прочитать, например, в [2].
Логические уровни сигналов на входах и выходах
последовательного порта должны находиться в
пределах -3...-15 В (логическая 1) и +3...+15 В (логический
0). Для отладки устройств на микросхемах ТТЛ и
КМОП эти уровни необходимо соответствующим
образом преобразовать. Сделать это можно с
помощью узла сопряжения, схема которого показана
на рис. 1. Элементы микросхемы DD1 преобразуют
выходные сигналы порта к необходимым уровням, а
ключи на транзисторах VT1-VT4 выполнят обратное
преобразование. Переключателем SA1 можно
соединить один из входов порта непосредственно с
выходом TXD. Это бывает необходимо для
тактирования процесса анализа.
Вилку XS1 соединяют с
розеткой последовательного порта ПК кабелем
длиной до нескольких метров, отлаживаемое
устройство подключают к гнездам XS2-XS11. Питать
узел сопряжения и отлаживаемое устройство лучше
всего от общего источника. Часто в отлаживаемом
устройстве нет необходимого для питания
коллекторных цепей транзисторов VT1-VT4
отрицательного напряжения. В таком случае они
питаются "выпрямленным" диодами VD1-VD3
отрицательным напряжением выходных сигналов
порта, находящихся в состоянии логической 1.
Разработанная автором программа генератора
сигналов и логического анализатора работает в
32-разрядной среде Windows. Ее главное окно
"Анализатор" представляет собой экран
виртуального четырехканального (по числу
входных цепей порта) запоминающего осциллографа.
Слева от экрана расположены индикаторы
("светодиоды"), облегчающие наблюдение
медленных процессов. После запуска программы
необходимо выбрать в меню "Порт"
коммуникационный порт, с которым она будет
работать. Развертка осциллографа может
быть непрерывной с заданным периодом или
однократной (запускают нажатием на
соответствующую кнопку). Кнопкой "Стоп "
изображение можно "заморозить". Открыв окно
"Синхронизация", выбирают в качестве
синхронизирующего любой из входных или выходных
сигналов. В окне "Развертка" задают тактовую
частоту анализа и его длительность. В
диалоговом окне "Режимы выходных
линий"устанавливают частоту и форму
генерируемых сигналов. Коэффициент деления
тактовой частоты изменяют декадным
переключателем. Программа подсчитывает и
выводит в окне соответствующие заданному
коэффициенту и выбранной форме сигнала на выходе
TXD значения частоты и периода повторения.
Генерация может быть непрерывной, однократной
или пачками из заданного числа импульсов. Уровни
сигналов DTR и RTS устанавливают кнопками "0" и
"1". Кроме того, на этих выходах можно
получить "меандр" или сигнал произвольной
формы.
Маленькое дополнение, предлагаю вашему вниманию печатную плату "Анализатора", которую я разработал с помощью редактора Trax Maker
ЛИТЕРАТУРА:
1. Кармызов А. Интерфейсы IBM PC. - Радио, 1996, ј 10 с.
24, 25; ј 11 с. 24-26.
2. Фролов А. В., Фролов Г. В. Программирование
модемов. - м.: Диалог-МИФИ, 1993.
Авторская программа генератора сигналов и
логического анализатора (ее имя log_analiz.zip)
размещена на редакционном сайге http://www.paguo.ru/.
А. ШРАЙБЕР, г. Москва, Радио № 10, 1999