Радио-86РК/Радио 06-89/Контроллер последовательного интерфейса

Материал из Emuverse
Данный материал защищён авторскими правами!

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

Автор: А. ДОЛГИЙ

Источник: http://retro.h1.ru/RK86/RS232/rs232.php

Возможности контроллера определяются примененной в нем микросхемой универсального синхронно-асинхронного приемопередатчика (УСАПП) КР580ВВ51. О ее устройстве и параметрах можно прочитать в [1, 2]. В асинхронном режиме передачи на выходе TXD формируется последовательный код, начинающийся с нулевого стартового бита. Затем следуют 5—8 (задается при программировании УСАПП) информационных бит, причем первым передается бит, соответствующий младшему разряду шины данных. Если включен режим контроля, то за информационными следует контрольный бит, значение которого автоматически выбирается таким, чтобы общее количество единичных бит в передаваемом коде было четным или нечетным (в зависимости от режима, заданного при программировании). Передача заканчивается стоповым битом, имеющим уровень логической единицы. При отсутствии информации для передачи на выходе TXD постоянно поддерживается этот уровень. Длительность передачи стартовых, и контрольного бита может составлять 1,16 или 64 периода сигнала, подаваемого на вход ТХС (синхронизация передатчика). Минимальная длительность стопового бита может быть равной 1, 1,5 или 2 длительностям информационного бита. Эти параметры задаются при программировании УСАПП.

При асинхронном приеме последовательный код, аналогичный описанному выше, подается на вход RXD и преобразуется приемником в параллельный код, который затем может быть выдан на шину данных. Скорость приема определяется частотой сигнала, поданного на вход RXC (синхронизация приемника), деленной, как и в передатчике, на 1,16 или 64.

В большинстве случаев на входы ТХС и RXC подается один и тот же сигнал. В описываемом контроллере он получается делением тактовой частоты процессора «Радио-86РК». В качестве делителя работает один из счетчиков таймера КР580ВИ53, настроенный для работы в режиме 3 (остальные два счетчика включены так, что могут использоваться для формирования звуковых сигналов заданной частоты и длительности). Скорость приема-передачи устанавливают программно, задавая необходимые коэффициенты деления. Значения коэффициентов для различных скоростей указаны в табл. 1. Предполагается, что внутренний коэффициент деления УСАПП выбран равным 16. Следует заметить, что при делении принятой в «Радио-86РК» тактовой частоты 1,78 МГц погрешность установки скорости 9600 Бод несколько больше допустимой величины. Более точно заданную скорость можно получить делением частоты 2 МГц, которую, в свою очередь, получают, разделив на 8 частоту кварцевого генератора «Радио-86РК». Необходимые коэффициенты деления также указаны в табл. 1.

Таблица 1.

БОД F0=1777778 ГЦ F0=2000000 ГЦ
КОЭФФ. ДЕЛЕНИЯ ПОГР. (%) КОЭФФ. ДЕЛЕНИЯ ПОГР. (%)
45 2444 (98СН) −0.02 2750 (0АВЕН) −0.01
50 2222 (8AEH) −0.02 2500 (9С4Н) +0.00
75 1481 (5C9H) −0.04 1667 (683Н) +0.01
100 1111 (457H) −0.02 1250 (4Е2Н) +0.00
110 1010 (3F2H) −0.02 1136 (470Н) −0.04
150 741 (2E5H) +0.03 833 (341Н) −0.05
300 370 (172H) −0.11 417 (1A1Н) +0.07
600 185 (0B9H) −0.11 208 (0D0H) −0.17
1200 93 (5DH) +0.43 104 (68Н) −0.17
2400 46 (2ЕH) −0.65 52 (34Н) −0.17
4800 23 (17H) −0.65 26 (1АН) −0.17
9600 12 (0СH) +3.54 13 (00Н) −0.17

Если предполагается работать только с одной скоростью, то можно заменить микросхему таймера делителем частоты с фиксированным коэффициентом деления, собранным по любой из известных схем. Можно даже вообще отказаться от деления кварцованной частоты и собрать генератор сигналов ТХС и RXC по схеме мультивибратора. Однако в этом случае наверняка потребуется подстройка его частоты в процессе эксплуатации.

Контроллер можно подключить к компьютеру «Радио-86РК» двумя способами. Точки подключения для обоих вариантов перечислены в табл. 2.


Таблица 2.

вывод ПОРТЫ ИК55 (D14) СИСТЕМНАЯ ШИНА
1 ЛОГ. 0 ЛОГ. 1
2 РС7 (А21) -
3 - -
4 РB0 (Б16) А0 (D6 ВЫВ. 25)
5 РB1 (Б15) А1 (D6 ВЫВ.26)
6 РВ5 (617) CS53 (СМ. РИС.2)
7 РС4 (А19) RD (D5 ВЫВ.З)
8 РС6 (Б21) 'WR (D5 ВЫВ.11)
9 Ф2TTL (D1 выв.6) Ф2TTL (D1 ВЫВ.6)
10 ОБЩИЙ Общий
11 РВ6 (Б19) CS51 (СМ. РИС.2)
12 РА0 (Б26) D0 (D6 ВЫВ.10)
13 РА1 (Б27) D1 (D6 ВЫВ.9)
14 РА2 (А27) D2 (D6 ВЫВ.8)
15 РАЗ (А28) D3 (D6 ВЫВ.7)
16 РА4 (Б28) D4 (D6 ВЫВ.3)
17 РА5 (А26) D5 (D6 ВЫВ.4)
18 РА6 (А25) D6 (D6 ВЫВ.5)
19 РА7 (А 23) D7 (D6 ВЫВ.6)
20 РС2 (А17) -
21 РВ7 (Б20) RESET (D1 ВЫВ.1)
22 +5 В +5 В
23 РС1 (Б18) -
24 РС0 (А18) -

В первом случае он подключается к портам микросхемы D14 (КР580ИК55). Тактовая частота подается с вывода 6 микросхемы D1 (КР580ГФ24). В компьютере не требуется никаких переделок.

Во втором случае контроллер подключают непосредственно к шинам адреса, данных и управления компьютера. Для формирования сигналов CS микросхем КР580ВВ51 и КР580ВИ53 в компьютер необходимо ввести дополнительный дешифратор, возможная схема которого показана на рис.2.

Микросхема DD3 контроллера отключается подачей высокого уровня на ее вывод 4. Если контроллер предполагается использовать только в таком варианте, то эту микросхему и связанные с ней элементы можно вообще не устанавливать. Если же контроллер подключают только через порты КР580ИК55, то в качестве DD3 можно применить любую микросхему серии К561, содержащую нужное число инверторов (К561ЛН2, К561ЛЕ5, К561ЛА7 и т. п.).

Рассмотрим подробнее принцип обмена информацией между контроллером и процессором через порты микросхемы программируемого последовательного интерфейса (ППИ) КР580ИК55. Выводы шины данных УСАПП и таймера подключают к порту А ППИ. Этот порт настраивают для работы в режиме 2, в котором возможен двусторонний обмен информацией. В этом режиме пять старших разрядов порта С предназначены для управления обменом. Три младших разряда этого порта настраиваются на ввод. По ним процессор принимает сигнал готовности передатчика УСАПП и сигналы готовности внешнего устройства. Порт В настраивается на вывод. Через него задаются сигналы адреса и выбора микросхем УСАПП и таймера, а также сброса УСАПП.

Для записи какой-либо информации в УСАПП или таймер процессор прежде всего, устанавливает на выводах порта В код, соответствующий выбору требуемого регистра одной из микросхем. Например, код ЗОН соответствует регистру данных УСАПП, а код 53Н — регистру управляющего слова таймера. Затем компьютер выводит в порт А байт данных, предназначенный для записи в выбранный регистр. После выполнения этой операции на выводе РС7 ППИ устанавливается низкий логический уровень, сигнализирующий о том, что в выходном буфере порта А есть данные. Выводы порта А остаются пока в высокоимпедансном состоянии. Конденсатор С1 разряжается через диод VD1, и на выводе 11 микросхемы DD3 устанавливается низкий логический уровень. Сигнал с этого вывода поступает на вход РС6 ППИ, разрешая выдачу информации из буфера на выводы порта А и восстанавливая высокий уровень на выходе РС7. Этот же сигнал подается на микросхемы УСАПП и таймера в качестве сигнала разрешения записи (WR). Его длительность определяется временем зарядки конденсатора С1 через резистор R1, Таким образом, данные, выведенные в порт А ППИ, записываются в выбранный регистр УСАПП или таймера.

В рассматриваемой схеме считывание информации через ППИ возможно только из регистра данных УСАПП. Для большинства применений этого достаточно, так как сигналы состояния УСАПП и внешнего устройства могут быть прочитаны процессором через порт С ППИ (в варианте подключения контроллера непосредственно к шинам процессора могут быть прочитаны все регистры УСАПП и таймера). После приема очередного информационного слова, поступающего на вход RXD УСАПП, на его выходе RXRDY (готовность приемника) устанавливается высокий логический уровень. После зарядки через диод VD2 конденсатора С2 устанавливается низкий уровень на выводе 9 микросхемы DD3 и на соединенном с ним входе RD (разрешение считывания) УСАПП. Если теперь установить на выходах порта В код, соответствующий выбору регистра данных УСАПП, то на выводы 00—D7 будет выдан принятый код. Одновременно на выходе RXRDY высокий уровень сменится низким и начнется разрядка конденсатора С2 через резистор R2. Постоянная времени этой цепи определяет длительность импульса RD . Этот импульс поступает и на вход РС4 ППИ, разрешая запись данных во входной буфер порта А, откуда они могут быть считаны процессором. О состоянии буфера процессор может узнать, прочитав код из порта С. Единица в разряде D5 этого кода означает, что в буфере имеются данные. После чтения процессором данных из порта А эта единица сменится нулем и вновь появится только после приема УСАПП нового слова информации.

Перейдем теперь к рассмотрению способов электрического сопряжения контроллера с внешними устройствами. Выходы микросхемы КР580ВВ51 рассчитаны на подключение одного входа микросхемы серии К155 или 8—10 входов микросхем серии К555. Входы этой микросхемы рассчитаны на прием сигналов, имеющих стандартные для микросхем ТТЛ логические уровни. Если входы и выходы вашего принтера соответствуют этим требованиям и расстояние, на которое должны передаваться сигналы, не превышает 1…2 метра, то никакого дополнительного согласования не нужно.

Однако характеристики входных и выходных сигналов большинства устройств промышленного изготовления выбраны исходя из требования помехоустойчивой передачи данных на расстояние в десятки и сотни метров. Они значительно отличаются от уровней ТТЛ. Основных вариантов здесь два. В первом случае (интерфейс по стандарту V.24, стык С2) логической единице в линии связи соответствует отрицательное относительно общего провода напряжение от 3 до 12 В, а логическому нулю — положительное напряжение, находящееся в тех же пределах по абсолютной величине.

Входное сопротивление приемника сигнала не должно быть меньше 3 кОм, он должен выдерживать без повреждения входное напряжение 15 В любой полярности. Передатчик должен выдерживать короткое замыкание нагрузки.

Специально для формирования и приема таких сигналов предназначены микросхемы K170АП2 и К170УП2. Схема согласования контролера интерфейса с внешним устройством, использующая эти микросхемы, приведена на рис.4. Для питания схемы кроме имеющихся в компьютере «Радио-86РК» источников напряжений + 5В и +12В требуется источник напряжения —12В, от которого потребляется ток не более 50мА.

Устройство сопряжения можно собрать и на транзисторах, как показано на рис.3. Оно питается от двух источников напряжений +5В и —5В. Выходные уровни на нагрузке 3 кОм — не менее 3,5В по абсолютной величине, что находится в пределах допуска, установленного стандартом на интерфейс.

Чертеж печатной платы контроллера по схеме рис.1 с транзисторными формирователями, показанными на рис.3, приведен на рис.5. Номера контактных площадок платы, предназначенных для соединения с компьютером, соответствуют номерам проводов на схеме рис.1. Номера контактных площадок, соединяемых с внешним устройством, совпадают с номерами цепей в соответствии со стандартом на интерфейс. Многие внешние устройства не используют весь набор управляющих сигналов. Например, на большинство принтеров достаточно подать сигнал TXD и принять сигнал готовности DSR. В подобных случаях детали неиспользуемых формирователей на плате контроллера можно не устанавливать.

Как уже отмечалось, если от внешнего устройства не поступает сигнал CTS, то нужно подать сигнал с выхода RTS контроллера на его вход CTS или соединить выводы 17 и 23 микросхемы КР580ВВ51. Аналогично при отсутствии сигнала DSR нужно соединить выход DTR контроллера с входом DSR (или выводы 22, 24 микросхемы КР580ВВ51).

Другой вариант интерфейса известен под названиями ИРПС, RS-232C, «токовая петля», Здесь приемник и передатчик данных соединяются в замкнутую цепь, имеющую свой источник питания и гальванически не связанную с основной схемой компьютера и внешнего устройства. Для гальванической развязки, как правило, применяются оптроны. Передатчик работает как ключ, замыкающий и размыкающий цепь связи. Логической единице соответствует протекание в цепи тока 20 ±5 мА, а логическому нулю — разрыв цепи (ток не более 3 мА). Сигналы управления не используются или передаются по отдельной цепи.

Схема согласования для интерфейса ИРПС показана на рис.6. Транзисторный оптрон А1 можно заменить диодным (АОД101), но коэффициент усиления по току транзистора VT2 при этом должен быть не меньше 100. В приемной части можно применить оптронные микросхемы К249ЛП1, К262КП1, К293ЛП1.

В заключение — о согласовании контроллера с телетайпом. Здесь нет принципиальных отличий от интерфейса ИРПС, однако ток в линии связи может доходить до 50 мА, а напряжение источника питания — до 120 В. Так как скорость передачи информации в этом случае не превышает 1 50 Бод, вместо оптронов можно применить герконовые реле. Схема подключения телетайпа показана на рис.7. В ней использованы реле РЭС-64 (паспорт РС4.569.724). Сопротивление резистора R5 выбирают таким, чтобы обеспечить надежное срабатывание реле при номинальном для телетайпа токе в линии связи.

Подпрограммы обслуживания контроллера для двух способов его подключения приведены в табл.3 и 4. По выполняемым функциям они одинаковы, но для контроллера, подключенного через порты ППИ, подпрограммы немного длиннее, что объясняется усложнением алгоритма обмена. Отличия коснулись также способа установки УСАПП в исходное состояние. При подключении через ППИ на выводе порта В, подключенном к входу RESET (сброс) УСАПП, программно формируется импульс высокого уровня, Во втором случае в регистр команд УСАПП дважды записывается код, переводящий его независимо от предыдущего состояния в режим приема инструкции команды. Затем записывается инструкция программного сброса (код 40Н).

Ниже кратко описаны подпрограммы обслуживания контроллера:

INIT Подпрограмма настройки УСАПП и таймера. Перед ассемблированием подпрограммы присвойте метке М1 значение, соответствующее выбранному Вами режиму работы УСАПП, а метке КD IV — значение коэффициента деления, обеспечивающего необходимую скорость приема-передачи. Этот режим и скорость будут устанавливаться при каждом вызове подпрограммы INIT. Если возникает необходимость изменить режим и скорость, то вызовите подпрограмму настройки по адресу INIT1, предварительно занеся в регистры А и HL коды, соответствующие новому режиму. После настройки разрешены прием и передача, на выходах RTS (запрос передачи) и DTR (устройство готово) УСАПП установлен низкий уровень.

ТХ Подпрограмма передачи последовательным кодом байта, задаваемого в регистре С. Если запрограммирована длина информационного слова меньше 8 бит, то старшие разряды байта не передаются. Если к моменту вызова подпрограммы передатчик УСАПП еще не начал передачу предыдущего слова или не готово к приему внешнее устройство (на входе DSR — данные готовы — УСАПП высокий уровень), то подпрограмма ждет готовности. Если от внешнего устройства не подается сигнал CTS (передача разрешена), то для нормальной работы передатчика необходимо соединить выводы RTS и CTS контроллера.

Подпрограмма приема последовательного кода в аккумулятор. Если запрограммирована длина информационного слова меньше 8 бит, то старшие разряды аккумулятора заполняются нулями. Если с момента последнего обращения к подпрограмме RX новая информация не принята, то происходит возврат с установленным признаком переноса и нулевым кодом в аккумуляторе

Как отмечалось выше, контроллер позволяет связать компьютер «Радио-86РК» с телетайпом или с любительской радиостанцией, работающей RTTY. В этом случае достаточно установить длину информационного слова 5 бит, длительность стоп-бита, равную 1,5 длительности информационного бита, и нужную скорость обмена. В подпрограмме INIT предусмотрено, что при задании такого режима на телетайп пятикратно выдается код установки латинского регистра. В специально отведенной ячейке ОЗУ записывается признак того, что на телетайпе установлен латинский регистр. Если в этом нет необходимости, то из подпрограммы INIT можно удалить команды, отмеченные знаком # в поле комментария.

Для работы с телетайпом предназначены подпрограммы TTYOUT и TTYIN, приведенные в табл.5. Обе подпрограммы независимы от способа подключения контроллера к компьютеру, однако используют описанные выше подпрограммы ТХ и RX. Они используют также общую ячейку ОЗУ для хранения признака регистра телетайпа (она имеет метку REG). Код в этой ячейке изменяется как при приеме, так и при передаче кода смены регистра. При дуплексной работе (то есть одновременном приеме одной и передаче другой информации) это может привести к искажению принимаемых данных. В этом случае нужно хранить признаки регистров приема и передачи в отдельных ячейках.

TTYOUT Подпрограмма передачи получает передаваемый символ в регистре С процессора. Символ задается в коде КОИ-7, принятом для представления информации а компьютере. Подпрограмма перекодирует его в соответствии с международным телеграфным кодом номер 2, при необходимости вставляет коды перевода регистра. Символы, коды которых предусмотрены в КОИ-7, но отсутствуют в МТК-2, автоматически заменяются кодом точки. Управляющие коды (меньше 20Н) игнорируются, кроме перевода строки (0АН) и возврата каретки (0DН).

TTYIN Подпрограмма принимает символы в коде МТК-2 и перекодирует их в КОИ-7 с учетом кодов смены регистров. Код символа возвращается в аккумуляторе.

А. ДОЛГИЙ, г. Москва


Скопировано с журнала РАДИО № 6 1989 г.
Отредактировано Лесных Ю. И. 1999 г.