Пользователям о «Корвете». Журнал «Радио» №8/1989г., стр.35-37

 

 

ПОЛЬЗОВАТЕЛЯМ О «КОРВЕТЕ»

 

 

| ТАЙМЕР | КОНТРОЛЛЕР ПРЕРЫВАНИЙ | ИНТЕРФЕЙС ПРИНТЕРА |

| ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕС | ИНТЕРФЕЙС ЛОКАЛЬНОЙ СЕТИ |

| ИНТЕРФЕЙС КАССЕТНОГО МАГНИТОФОНА |

 

 

ИНТЕРФЕЙСЫ ДЛЯ СВЯЗИ С ВНЕШНИМИ УСТРОЙСТВАМИ

В этой статье мы займемся наиболее интересной для большинства радиолюбителей проблемой. Каким образом к «Корвету» можно подклю­чать различные, в том чис­ле и самодельные устройства. Для этой цели в машине предусмотрено пять интер­фейсов:

 

1. Параллельный интерфейс принтера в стандарте «Centro­nix».

2. Последовательный интер­фейс в стандартах RS232 и «токовая петля».

3. Последовательный интер­фейс локальной сети.

4. Интерфейс расширения системы.

5. Интерфейс бытового кас­сетного магнитофона.

 

Кроме этого, для обслужи­вания внешних устройств ис­пользуются трехканальный про­граммируемый таймер и конт­роллер прерываний.

 

Таймер.

Выполнен на микро­схеме КР580ВН53. Он имеет три независимых канала. Ка­нал 0 используется для созда­ния различных звуковых эф­фектов. На его вход подает­ся сигнал с частотой 2 МГц. Канал 1 используется для уп­равления скоростью передачи данных через последователь­ный интерфейс. На вход ка­нала подается сигнал также с частотой 2 МГц. Канал 2 служит для генерации систем­ных прерываний. Он форми­рует запросы прерывания од­нократно или многократно через заданные интервалы времени. На вход канала поступают сигналы синхронизации строчной развертки дисплея с периодом 64 мкс.

 

Контроллер прерываний.

Реализован на основе микросхемы КР580ВН59. Он обслу­живает 8 уровней прерываний. Здесь мы не будем описы­вать, каким образом произво­дят его программирование. В настоящее время по этому во­просу издано достаточное ко­личество справочной литерату­ры. Отметим, что обычно каж­дому из уровней прерывания определяется свой приоритет. Это происходит программно. Таким образом, одно прерыва­ние происходит раньше друго­го в случае одновременного поступления запросов.

Остановимся на использова­нии контроллера прерываний при работе с ОС СР/М. В этом случае при загрузке системы он уже оказывается неким образом запрограмми­рован. Теперь пользователю достаточно знать, по каким ад­ресам расположены процеду­ры обработки прерываний и какие устройства могут вызы­вать их.

 

Уровней прерывания, как мы говорили, восемь. Их источни­ками являются:

 

— уровень 0: прерывание от интерфейса расширения системы. Любой модуль, под­ключенный к этому интерфей­су, может по желанию его создателя генерировать запрос прерывания;

— уровни 1, 2; прерывание от последовательного интер­фейса. Эти прерывания осу­ществляются по окончании приема или передачи интер­фейсом очередного байта;

— уровень 3: прерывание от интерфейса локальной се­ти. Это прерывание свидетель­ствует, что по сети пришло сообщение;

— уровень 4: прерывание от генератора кадровой разверт­ки дисплея. Происходит перио­дически с периодом 20 мс;

— уровень 5; прерывание от таймера. Источником за­проса является канал 2 тай­мера;

— уровень 6: прерывание от интерфейса принтера. Ис­точником служит сигнал го­товности принтера принимать данные. Таким образом, ис­пользуя это прерывание, мож­но организовать такой режим работы принтера, когда про­цесс печати происходит парал­лельно с выполнением других задач;

— уровень 7: прерывание от контроллера НГМД. Происхо­дит это прерывание обычно при остановке мотора в дис­ководе. Обычно это прерыва­ние используется для выхода системы при неисправностях в дисководах.

 

Приведенные выше уровни прерывания расположены по убыванию их приоритета. Дру­гими словами, уровень 0 об­служивается в первую оче­редь, а уровень 7 в послед­нюю.

 

Контроллер прерываний со­держит, как известно, два регистра. Их адреса на стра­нице устройств ввода - вывода 28Н и 29Н.

 

При появлении запроса пре­рывания какого-либо уровня контроллер прерываний гене­рирует код команды CALL с адресом,   соответствующим обрабатываемому запросу. В результате управление рабо­той процессора передается программе, которая начина­ется с этого адреса. Адреса всех восьми процедур обра­ботки прерывания сведены в одну таблицу. Контроллер за­программирован таким обра­зом, что разность между стартовыми адресами подпро­грамм обработки прерываний составляет 4 байта. При ис­пользовании карты памяти, со­ответствующей ОС СР/М, таб­лица адресов прерываний име­ет вид, представленный в табл. 1. Три байта из че­тырех, отведенных каждому прерыванию, занимает коман­да JMP, вызывающая пере­дачу управления соответствующей процедуре. Четвертый байт равен 0.

 

Таблица 1

 

 

 

ORG

 

0F7E0H

F7EOH:

 

JMP

 

INT0

 

 

 

DB

 

0

 

F7E4H:

 

JMP

 

INT1

 

 

 

DB

 

0

 

F7E8H:

 

JMP

 

INT2

 

 

 

DB

 

0

 

F7ECH:

 

JMP

 

INT3

 

 

 

DB

 

0

 

F7E0H:

 

JMP

 

INT4

 

 

 

DB

 

0

 

F7F4H:

 

JMP

 

INT5

 

 

 

DB

 

0

 

F7F8H:

 

JMP

 

INT6

 

 

 

DB

 

0

 

F7FCH:

 

JMP

 

INT7

 

 

 

DB

 

0

 

 

 

Тут необходимо сделать не­большое отступление. Вы пом­ните, что у «Корвета» может переключаться карта памяти. Поэтому необходимо при ее переключении запрещать пре­рывания, используя команду процессора DI. Разрешать пре­рывания командой ЕI можно только после того, как карта памяти будет нормализована. Это значит, что она будет приведена в соответствие с картой памяти ОС СР/М (в системный регистр заносится 1СН) или пользователь сам примет меры, чтобы каждому прерыванию соответствовала бы процедура его обработки.

Для облегчения поиска таб­лицы прерываний при манипу­ляциях с картой памяти, пре­рывания в «Корвете» организо­ваны по типу векторов. Это значит, что в BIOS (это часть ОС СР/М, занимающая­ся обменом с периферийными устройствами) вводится специ­альная таблица векторов пре­рываний. Каждый вектор ука­зывает адрес начальной ячей­ки памяти процедуры обработ­ки прерываний. Начальный ад­рес таблицы фиксирован — 0F7C8H.

Если мы хотим найти адрес процедуры, обслуживающей i-тое прерывание, то мы долж­ны прибавить к 0F7C8H вели­чину i*2 (адреса занимают два байта) и считать из ячеек (0F7C8H+i*2) и (0F7C8H+i*2+1) адрес ячейки памяти, где хранится первый байт программы обработки преры­ваний.

При желании пользователь может изменить адрес в таб­лице прерываний и настроить таким образом прерывания на свою собственную подпро­грамму.

 

 

Теперь займемся периферийными устройствами. Для общения с ними в нашем

распоряжении имеется ряд интерфейсов.

Для организации обмена ин­формацией с внешним миром в «Корвете» установлены три программируемых параллель­ных адаптера (ППА) КР580ВВ55А. Их регистры име­ют следующие адреса на стра­нице УВВ:

 

ППА-3 предоставлен в пол­ное распоряжение пользова­теля. Все его выходные сигна­лы выведены на боковой разъ­ем расширения системы. Кро­ме них, на этот разъем поданы все питающие напря­жения, сигнал частоты 2 МГц (2 м), сигнал канала 0 тайме­ра (TIMER), запрос прерыва­ния уровня 0 (IRQO), сигнал синхронизации кадровой час­тоты (SVBL) и бит 7 порта С второго адаптера (CONTROL). Цоколевка разъема расшире­ния системы на рис. 1.

 

ППА-1 и ППА-2 используют­ся в режиме 0. В этом случае возможно побитное уп­равление портом С. Порты этих адаптеров распределены между упомянутыми в начале статьи интерфейсами. Рассмот­рим теперь эти интерфейсы по порядку.

 

Таблица 2

 

 

 

ППА-1

 

ППА-2

 

ППА-3

 

 

Порт А

 

38Н

 

З0Н

 

08Н

 

Порт В

 

З0Н

 

31Н

 

09Н

 

Порт С

 

ЗАН

 

32Н

 

0АН

 

Порт управ­ляющего слова

ЗВН

ЗЗН

0ВН

 

 

Интерфейс принтера.

В со­став этого интерфейса входит регистр данных (порт А, ППА-2), регистр состояния (бит 2 (BUSYP) порта А, ППА-1), регистр управления (биты 4, 5 (АСК, SE) порта С, ППА-2). Рассмотрим, как происходит передача информации через этот интерфейс.

Для начала в регистр дан­ных заносится передаваемый байт. После этого мы долж­ны установить сигнал АСК в 1. Для этого в пятый раз­ряд регистра управления нуж­но занести 1. Как мы уже говорили, порты С ППА-1 и ППА-2 программируются побитно. Для установки нужно­го бита в порте С в со­стояние 0 или 1 мы должны в порт управляющего слова адаптера записать байт, в ко­тором биты 1—3 содержат номер устанавливаемого бита, а бит 0 - то значение, кото­рое нужно записать. Это зна­чит, что для установки би­та 5 порта С ППА-2 в еди­ничное состояние мы должны записать порт управляющего слова ППА-2 0ВН. После установки сигнала АСК в единич­ное состояние принтер считы­вает байт данных и устанав­ливает сигнал BUSYP в 1. Этот сигнал через инвертор подает­ся на вход регистра состоя­ния, откуда его считывает процессор.

После этого процессор дол­жен сбросить сигнал АСК. Для этого в порт управляю­щего слова ППА-2 записывает­ся 0АН.

Сигнал BUSYP подается так­же на вход запроса прерыва­ния 6-го уровня контроллера прерываний. С помощью пре­рываний можно организовать процесс «фоновой» печати. Это делается для того, чтобы уменьшить потери времени процессора, затрачиваемые на ожидание, пока принтер уста­новит сигнал BUSYP в 0. Те­перь, когда принтер готов при­нимать информацию, он пре­рывает основную программу, выполняемую   процессором, получает байт данных и остав­ляет процессор в покое, на время пока сам разбирается с полученным байтом,

Сигнал SE может использо­ваться для инициализации прин­тера или других целей. Сиг­налы АСК и SE подаются на разъем принтера через инвер­торы. Цоколевка   разъема представлена на рис. 2.

 

 

Последовательный   интерфейс.

В этом интерфейсе реализованы два стандарта:

RS232, когда данные пере­даются путем подачи напряже­ния ±12 В, и токовая петля, в которой сигналы передаются подачей тока ±20 мА.

  Последовательный   интер­фейс реализован на микро­схеме КР580ВВ51А. Здесь мы не будем рассматривать пра­вила программирования этой микросхемы. Укажем лишь, что в ее состав входят три регистра: регистр данных (10H), регистр управления (11Н) и ре­гистр состояния (11Н).

  Выходные цепи интерфейса устроены так, что ему без­различно, через какое устрой­ство идет передача информа­ции: формирователи сигналов напряжения -12 В (RS232) или оптроны (токовая петля).

  Скорость передачи информации по последовательному интерфейсу задается путем программирования канала 1 таймера. В регистр этого канала заносится 13 для скорости 9600 бод, 26 — 4800 бод, 52 — 2400 бод, 104 — 1200 бод.

 

  На разъем интерфейса вы­ведены следующие сигналы:

 

RTS — запрос на передачу, DSR — подтверждение готов­ности принять информацию, TXD — принимаемые данные (RS232), ±V24RD — принимае­мые данные через токовую петлю, ±V24TD — передавае­мые данные через токовую петлю.

   

    Первые два сигнала пред­назначены для организации диалога между компьютером и периферийным устройством. Когда компьютер собирается что-либо передавать, он уста­навливает RTS в состояние «запрос», определяемое про­токолом обмена (что это — 0 или 1 — решает пользова­тель). После этого он ждет подтверждения готовности пе­риферийного устройства при­нимать данные. Когда сигнал DSR примет соответствующее состояние (какое именно — это опять-таки   определяет пользователь), в регистр дан­ных помещается байт, который автоматически выталкивается интерфейсом наружу. Прием информации осуществляется аналогично, только в этом случае запрос поступает с периферийного устройства на вход DSR, а компьютер дол­жен подтвердить свою готов­ность подачей сигнала RTS (рис. 3).

 

 

Интерфейс локальной сети.

Этот интерфейс фактически не отличается от последо­вательного интерфейса. Он также реализован на микро­схеме КР580ВВ51А. Адреса ее регистров соответственно 20Н и 21Н. Единственное от­личие состоит в том, что к это­му интерфейсу подводятся че­тыре сигнала А0РС, А1РС, А2РС, АЗРС, которые опре­деляют номер устройства, под­ключенного к локальной сети. Для присваивания компьютеру определенного номера в разъ­ем нужно вставить перемыч­ку, соединяющую один из контактов с шиной +5 В.

Обмен происходит посред­ством двух сигналов OUTNL и INNL в TTL уровнях. Сиг­налы АОРС—АЗРС подключены к битам 4—7 порта А ППА-1 (рис. 4).

 

 

Интерфейс кассетного маг­нитофона.

Интерфейс позво­ляет осуществлять обмен дан­ными с кассетным магнитофо­ном со скоростью 2400 бод. Превращение параллельного кода в последовательный про­исходит программно, т. е. про­цессор делает это сам. Для выдачи кода в магнитофон служит сигнал CASOUT. Он формируется посредством про­водного «или» из двух млад­ших разрядов порта с ППА-2. Код 00 соответствует сиг­налу низкого уровня, 01 — сигналу среднего уровня и 11 — сигналу высокого уровня. Входной сигнал CASIN через специальное устройство, пре­образующее его в TTL уров­ни, подается на вход разряда 0 порта А ППА-1.

В состав интерфейса вхо­дит еще одно устройство, позволяющее производить ос­танов мотора магнитофона. Благодаря этому оказывает­ся возможным в минималь­ных пределах управлять про­цессом загрузки с ленты. Это устройство представляет собой реле, управляемое проинвертированным сигналом, посту­пающим со 2-го разряда порта С ППА-2 (STOP-1, STOP-2). Та­ким образом, изменяя значе­ние этого бита, мы можем управлять работой мотора маг­нитофона (рис. 5).

 

На этом мы заканчиваем описание основных систем ПЭВМ «Корвет».

 

 

С. АХМАНОВ, Н. РОЙ, .А. СКУРИХИН

 

 

| ТАЙМЕР | КОНТРОЛЛЕР ПРЕРЫВАНИЙ | ИНТЕРФЕЙС ПРИНТЕРА |

| ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕС | ИНТЕРФЕЙС ЛОКАЛЬНОЙ СЕТИ |

| ИНТЕРФЕЙС КАССЕТНОГО МАГНИТОФОНА |

 

Данная статья является частью серии статей, которые были  опубликованы в журнале «Радио» в 1989г., по ПК «Корвет». Продолжение серии вы можете найти в  журнале «Радио» №№10, 12 - 1989г.,  либо на сайте “Russian 8bit Computers” – http://www.rkgames.newmail.ru,  в разделе информации по ПК «Корвет».

Сканирование и обработка:  А. Болтаевский, 26.06.2000