Закрыть окно         Список других документов ПЭВМ "Агат"

.км ( Размер страницы равен 66
.км .ло1 .по75 .во2 .но3
.км .шг12 .ми1 .ао1
.км .кс3 .ов .шп0 )
.км ---> Нумерация страниц 'НЕТ'
.км ---> Колонтитул 'НЕТ'
.цв
.шп27
.нс1
--- ФИРМА НИППЕЛЬ ПРЕДСТАВЛЯЕТ ---







.шп24
ОПИСАНИЕ МОДУЛЯ ЧАСОВ "NIPPEL CLOCK CARD"
для ЭВМ Агат 9

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



Автор: Голов А.А.












(С) Ниппель 1993
.сс
.шп24
ВНИМАНИЕ
.шп0
.ов

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

ОСНОВНЫЕ ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ

.шп0

.ов

Модуль "Nippel Clock Card" позволяет вести счет текущего времени в часах, минутах, секундах и даты в виде числа, месяца и года, а также дня недели. Автоматически учитываются число дней в месяце и високосные года.

Благодаря наличию на плате литиевого элемента питания МЛ2325, часы никогда не прерывают своего хода. Они автоматически переходят на автономное питание в момент выключения ЭВМ и на сетевое питание в момент ее включения. Время непрерывного хода часов от нового элемента МЛ2325 составляет не менее 12 месяцев.

Текущее время и дата могут быть свободно считаны и переустановлены программным способом.

Кроме обычных функций часов и календаря, модуль "Nippel Clock Card" предоставляет в распоряжение пользователя 50 ячеек энерго-независимой памяти и три вида прерываний:

1. Прерывание, происходящее каждую секунду непосредственно после очередной смены информации в часах.

2. Циклические прерывания от внутреннего программируемого делителя, с одной из частот: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 и 8192 Гц.

3. Прервание от "будильника" по значению предварительно установленного времени.

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

На плате часов установлен подстроечный конденсатор, позволяющий подстраивать точность хода часов.

.сс

.цв

.шп24

ИНСТРУКЦИЯ ПО ЭКСПЛУАТАЦИИ

.шп0

.ов

.шп24

1. Меры предосторожности.

.шп0

Чтобы гарантировать долгую и надежную работу модуля "Nippel Clock Card", Вам нужно соблюдать несколько не слишком затруднительных правил.

Беритесь руками только за торцы платы и не касайтесь токоведущих дорожек, чтобы случайно накопившийся на Вас статический заряд не вывел из строя микросхему КР512ВИ1.

Не кладите плату с установленным элементом питания на токопроводящие поверхности, так как короткое замыкание может привести к выходу из строя как элемента питания, так и других элементов схемы.

Хранение модуля без элемента питания лучше всего производить в металлических или металлизированых упаковках, либо завернутым в электропроводную металлическую фольгу. Если же на плате остается элемент питания, то лучшим способом хранения будет картонная коробка с прочными (непрокалываемыми) картонными прокладками, отделяющими друг от друга несколько плат. Ни в коем случае не применяйте пластмассовые упаковки из полистирола, которые являются хорошим накопителем статичиских зарядов.

.шп24

2. Установка элемента питания.

.шп0

Элемент питания МЛ 2325 фиксируется на плате стальной пластинкой, удерживаемой двумя стягивающими винтами. Элемент устанавливается положительным электродом вверх - сторона, на которой написано его название, там же находится и знак '+'. Перед тем, как взять плату в руки, снимите с себя возможный статический заряд, например, касаясь металлической части батареи отопления.

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

Помните, что пластинка должна лишь слегка прижимать элемент МЛ 2325, который не допускает деформации корпуса, приводящей к выходу его из строя. Так как потребление тока от элемента питания ничтожно мало, качество электрического контакта не очень важно, механическая же прочность крепления достигается уже при очень малой силе стягивания винтов, что можно проверить, попытавшись сдвинуть элемент питания в сторону.

.шп24

3. Установка модуля в ЭВМ.

.шп0

Установку и изъятие модуля из ЭВМ производите только при отключенном питании. Знайте, что наибольшая вероятность отказа модуля или ЭВМ возникает именно при изъятии или установке плат в необесточенную машину.

Откройте крышку Вашей ЭВМ Агат 9 и осмотрите, какие разъемы у нее не заняты. Согласно принятой терминологии, разъемы у Агата 9 нумеруются слева направо (если смотреть с фронтальной стороны корпуса), начиная с первого и так далее до шестого.

В принципе "Nippel Clock Card" может быть установлена Вами в любой свободный разъем машины, но наиболее удобным для Вас, видимо, будет установка ее в первый (самый левый) разъем ЭВМ, который у Вас скорее всего свободен, так как другие, разработанные производителем Агата 9 модули не способны функционировать в первом разъеме, и он как правило пустует.

У модуля "Nippel Clock Card" нет никакого ключа, не позволяющего установить его в неверное положение, поэтому будьте предельно внимательны, устанавливая плату в машину. Есть общее правило; элементы, находящиеся на плате, должны располагаться справа (вид с фронтальной стороны), как и на всех остальных платах ЭВМ. При установке платы удерживайте ее двумя указательными пальцами за боковые торцы и, надавливая двумя большими пальцами на верхний торец платы, немного покачивая вдоль разъема, углубите ее до упора.

Еще раз проверьте, правильно ли Вы установили модуль - детали справа, элемент питания ближе к тыльной стороне и, только убедившись в правильности, можете подать питание на ЭВМ.

.шп24

4. Проверка модуля и установка времени.

.шп0

На имеющемся в комплекте с модулем "Nippel Clock Card" магнитном диске, кроме данной инструкции, имеется программа для тестирования и демонстрации возможностей модуля. На диске Вы найдете два объектных файла типов 'B' и 'K', называющихся соответственно BTESTCLOCK и KTESTCLOCK. Это совершенно одинаковые программы, представленные в два типа только во избежании осложнений с запуском в конкретной, используемой Вами, системе программирования.

Запустите программу TestClock. Если Вы еще не установили часы в машину, то получите уведомление о том, что плата часов не найдена, и программа прекратит выполнение. Если же Вы все сделали правильно, а плата тем не менее не найдена, то значит она находится в совершенно не рабочем состоянии.

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

Обратите первоочередное внимание на две надписи: "Часы на X разъеме" и "Память (не) в порядке". Номер разъема в первой надписи должен соответствовать тому, в который Вы установили модуль, а память должна быть, естественно, "в порядке".

Часы в данной программе могут находиться в двух режимах: счета или установки времени. Признаком режима установки времени служит наличие курсора желтого цвета на одной из альтернатив: Время, Дата и т.д. Переключение режима производится клавишей "ВВОД".

Если информация на Ваших часах не соответствует действительности, то установите показания часов, для чего в первую очередь переведите их в режим установки. В режиме установки часы стоят, поэтому, переводя в режим счета, Вы одновременно их и запускаете.

Переводя большой желтый курсор стрелками вверх/вниз, Вы выбираете параметр для изменения, причем на всех режимах, кроме дня недели, Вы увидите еще и маленький белый курсорчик, указывающий на изменяемую цифру, перемещаемый стрелками влево/вправо. Нажимая на цифровые клавиши, Вы можете установить новое показание любого из параметров. День недели задается цифрами от 1 до 7, соответственно от понедельника до воскресенья. Для проверки работы будильника введите в часах и минутах букву 'X', а в секундах любое число, например 25. Наличие буквы 'X' в будильнике показывает, что эти цифры не учитываются при сравнении времени. В нашем случае это означает, что будильник будет срабатывать на каждой 25 секунде.

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

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

Для проверки циклических прерываний от делителя частоты используется нижняя часть экрана, где Вы увидите бегущую строку, перемещающуюся с частотой циклического прерывания. Пользуясь клавишами 'F1' и 'F2', Вы можете выбирать другую частоту прерываний и тем самым менять скорость. Текущая частота прерываний обозначается желтым инверсным курсором. Естественно, отсутствие бегущей строки свидетельствует о неисправности платы.

Когда Вы полностью убедитесь в работе платы при включенной ЭВМ, проверьте ее работу от внутреннего элемента питания, для чего выключите машину, и, включив опять через минуту, вновь запустите программу TestClock, и проверьте показания часов.

.сс

.цв

.шп24

РУКОВОДСТВО ДЛЯ ПРОГРАММИСТА

.шп0

.ов

В руководстве для программиста мы раскажем о внутренней архитектуре модуля "Nippel Clock Card", способах доступа и управления им, а также приведем рекомендации и примеры программного обеспечения и поддержки некоторых функций модуля. Кроме того, мы опишем все соглашения нормального функционирования контроллера.

.шп24

1. Внутренняя структура модуля.

.шп0

В качестве основы модуля "Nippel Clock Card" использована микросхема контроллера часов КР512ВИ1, производства минского НПО "Интеграл", являющаяся аналогом микросхемы фирмы Motorola, Inc. MC14818, широко используемой в зарубежных разработках (например, вы можете встретить ее в контроллере часов IBM AT).

С точки зрения программы, микросхема представляет из себя 64 ячейки памяти в большинство из которых можно производить как запись, так и чтение информации. Первые 14 ячеек (¤00-¤0D) используются непосредственно для работы часов, остальные 50 (¤0E-¤3F) могут свободно использоваться как энергонезависимая память машины, для хранения разных признаков и режимов (Эта свобода не является полной, т.к. по принятым соглашениям большинство ячеек зарезервировано).

Для обращения к ячейкам из программ выделены два адреса в области Device Select, т.е. области ¤C0X0-¤C0XF. Чтобы согласовать возможное размещение на одной плате нескольких полезных устройств, таких как контроллеры принтера, мыши, новой клавиатуры и предлагаемых часов, были выбраны непересекающиеся адреса обращения ко всем этим устройствам. Как известно, контроллер принтера использует адреса ¤C0X0-¤C0X3, мыши ¤C0X8-¤C0XC часам же зарезервировали адреса ¤C0X6 для размещения адреса ячейки, ¤C0X7 для чтения/записи данных.

В таблице 1 представлено распределение системных ячеек часов и указано их назначение:

.дв
.ао0
Таблица 1
╔═════════╦═══════════════════════════════╗
|  Адрес  |  Данные                       |
╠═════════╬═══════════════════════════════╣
|   ¤00   |  Секунды                      |
|   ¤01   |  Секунды ("будильник")        |
|   ¤02   |  Минуты                       |
|   ¤03   |  Минуты ("будильник")         |
|   ¤04   |  Часы                         |
|   ¤05   |  Часы ("будильник")           |
|   ¤06   |  День недели                  |
|   ¤07   |  Число                        |
|   ¤08   |  Месяц                        |
|   ¤09   |  Год                          |
╠═════════╬═══════════════════════════════╣
|   ¤0A   |  Регистр A                    |
|   ¤0B   |  Регистр B                    |
|   ¤0C   |  Регистр C                    |
|   ¤0D   |  Регистр D                    |
╚═════════╩═══════════════════════════════╝
.нф
.ао1

Четыре ячейки ¤0A-¤0D, так называемые регистры A-D, предназначены для управления и контроля работы микросхемы. Каждый бит, либо группа битов этих регистров имеет свое уникальное назначение. В таблице 2 приведено условное обозначение этих битов:

.дв

.ао0
Таблица 2
╔═════════╦═══════╦═════╦═════╦═════╦══════╦═════╦═══════╦══════╗
|  Адрес  |   D7  |  D6 |  D5 |  D4 |  D3  |  D2 |   D1  |  D0  |
╠═════════╬═══════╬═════╬═════╬═════╬══════╬═════╬═══════╬══════╣
|   ¤0A   |  UIP1 | DV2 | DV1 | DV0 | RS3  | RS2 |  RS1  | RS0  |
╠═════════╬═══════╬═════╬═════╬═════╬══════╬═════╬═══════╬══════╣
|   ¤0B   |  SET  | PIE | AIE | UIE | SQWE |  DM | 24/12 | DSE  |
╠═════════╬═══════╬═════╬═════╬═════╬══════╬═════╬═══════╬══════╣
|   ¤0C   | IRQF1 | PF1 | AF1 | UF1 |  01  |  01 |   01  |  01  |
╠═════════╬═══════╬═════╬═════╬═════╬══════╬═════╬═══════╬══════╣
|   ¤0D   |  VRT1 |  01 |  01 |  01 |  01  |  01 |   01  |  01  |
╚═════════╩═══════╩═════╩═════╩═════╩══════╩═════╩═══════╩══════╝
Примечание. Из разрядов, помеченных1, процессор может только считывать информацию.

.нф

.ао1

Рассмотрим назначение каждого разряда в отдельности:

Регистр А:

UIP - Единица в этом разряде означает, что происходит или начнется менее чем через 244 мкс цикл обновления информации о времени. Длительность цикла обновления 1984 мкс при тактовой частоте 32768 Гц или 248 мкс при других тактовых частотах. UIP можно считывать, на него не действуют сигнал СБРОС. Записав единицу в разряд SET регистра B, можно запретить обновление и тем самым сбросить UIP.

DV0-DV2 - Устанавливают режим работы внутреннего делителя частоты в соответствие с используемой тактовой частотой (см. таблицу 3). В "Nippel Clock Card" используется тактовая частота 32768 Гц.

RS0-RS3 - Устанавливают частоту циклических прерываний (см. таблицу 4).

.дв

.ао0

Таблица 3
╔═════════╦═════════╦═════════╦══════════════════════════╗
|   DV2   |   DV1   |   DV0   |   Тактовая частота, Гц   |
╠═════════╬═════════╬═════════╬══════════════════════════╣
|    0    |    0    |    0    |   4 194 304              |
|    0    |    0    |    1    |   1 048 576              |
|    0    |    1    |    0    |      32 768              |
|    1    |    1    |    X    |   Сброс делителя         |
╚═════════╩═════════╩═════════╩══════════════════════════╝

.нф

.ао1

.дв
.ао0
Таблица 4
╔═════════════╦════════════════════════════════════════════════╗
|             |           Тактовая частота, Гц                 |
|             ╠═════════════════════════╦══════════════════════╣
|  RS3 - RS0  | 4 194 304 или 1 048 576 |       32 768         |
|             ╠═════════════════════════╬══════════════════════╣
|             |   Частота прерываний    |  Частота прерываний  |
╠═════════════╬═════════════════════════╬══════════════════════╣
|     ¤0      |           ════          |          ════        |
|     ¤1      |          32 768         |           256        |
|     ¤2      |          16 384         |           128        |
|     ¤3      |           8 192         |         8 192        |
|     ¤4      |           4 096         |         4 096        |
|     ¤5      |           2 048         |         2 048        |
|     ¤6      |           1 024         |         1 024        |
|     ¤7      |             512         |           512        |
|     ¤8      |             256         |           256        |
|     ¤9      |             128         |           128        |
|     ¤A      |              64         |            64        |
|     ¤B      |              32         |            32        |
|     ¤C      |              16         |            16        |
|     ¤D      |               8         |             8        |
|     ¤E      |               4         |             4        |
|     ¤F      |               2         |             2        |
╚═════════════╩═════════════════════════╩══════════════════════╝
.нф
.ао1

Регистр B:

SET - Если в этом разряде записан ноль, то каждую секунду выполняется цикл обновления информации о текущем времени и сравнении текущего времени с заданным временем срабатывания "будильника". Единица в этом разряде запрещает обновление, давая возможность записать в регистры времени, календаря и будильника новые значения.

PIE - Разрешение прерываний с периодом, задаваемым разрядами RS3-RS0 регистра A. Может быть сброшен сигналом СБРОС.

AIE - Разрешение прерываний от будильника. Может быть сброшен сигналом СБРОС.

UIE - Разрешение прерываний по окончании цикла обновления. Может быть сброшен сигналом СБРОС.

SQWE - Разрешение выдачи сигнала на выход SQW. Может быть сброшен сигналом СБРОС. В "Nippel Clock Card" не используется.

DM - Единица в этом разряде означает, что данные о времени и дате представлены в двоичном виде, ноль - в двоично-десятичном. Значение этого разряда нельзя изменять без повторной записи начальных значений в ячейки времени и календаря.

24/12 - Устанавливает 24-часовой (1) или 12-часовой (0) режим счета времени. В 12-часовом режиме время после полудня (PM) отмечается единицей в старшем разряде регистра часов (адрес ¤04).

DSE - Разрешение автоматического перехода на летнее время, по правилам принятым в США. Когда в этом разряде записана единица, то в последнее воскресенье апреля после 01 чac 59 мин 59 сeк автоматически устанавливается 03 чac 00 мин 00 сeк, а в последнее воскресенье октября после 01 чac 59 мин 59 сeк следует 01 чac 00 мин 00 сeк.

Регистр C

IRQF - Флаг запроса прерываний. Устанавливается в единицу, когда сработало хотя бы одно из разрешенных в данный момент прерываний. Другими словами, это означает, что прерывание произошло именно из "Nippel Clock Card". Флаг сбрасывается после чтения регистра C или сигналом СБРОС.

PF - Устанавливается в единицу сигналом от внутреннего делителя частоты, выбранным в соответствии с разрядами RS3-RS0 регистра A. Флаг сбрасывается после чтения регистра C или сигналом СБРОС.

AF - Устанавливается в единицу при совпадении текущего времени с временем, указанным в регистрах будильника. Флаг сбрасывается после чтения регистра C или сигналом СБРОС.

UF - Устанавливается в единицу после окончания цикла обновления. Флаг сбрасывается после чтения регистра C или сигналом СБРОС.

Регистр D

VRT - В этом разряде устанавливается ноль при низком уровне на входе PS, входе сбоя питания. Единица устанавливается только считыванием регистра D. В "Nippel Clock Card" не используется.

.шп24

2. Основные вопросы программирования.

.шп0

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

Итак, в модуле "Nippel Clock Card" используется кварцевый генератор на 32768 Гц (биты DV2-DV0 должны иметь значение :010), данные о времени и дате представляются в двоичном виде (бит DM=1), интервал счета 24 часа (бит 24/12=1), автоматический переход на летнее время не используется (бит DSE=0).

Информация в счетчиках представлена просто двоичными числами. Секунды и минуты могут принимать значения от 0 до 59 (¤0-¤3B), часы от 0 до 23 (¤0-¤17), день недели от 1 до 7 (¤1-¤7), число от 1 до 28..31 (¤1-¤1C..¤1F), в зависимости от месяца и года, месяц от 1 до 12 (¤1-¤C), год от 0 до 99 (¤0-¤63). Если в одну из ячеек будильника записан код с двумя старшими разрядами равными 1 (¤C0-¤FF), эта ячейка переходит в безразличное состояние и не учитывается при сравнении с текущим временем.

Как уже было сказано выше, для доступа к ячейкам микросхемы КР512ВИ1 выделены два адреса - ¤C0X6 для установки адреса и ¤C0X7 для чтения/записи данных. Адреса управления формируются по стандартным правилам - т.е. первому разъему соответствуют адреса ¤C096, ¤C097, второму ¤C0A6, ¤C0A7, третьему ¤C0B6, ¤C0B7 и т.д. Адрес в ¤C0X6 нужно устанавливать перед каждым обращением к ¤C0X7, так как после чтения/записи он теряется. Так как у микросхемы КР512ВИ1 имеются только 64 ячейки памяти, два старших бита восьмиразрядного адреса ячейки, просто игнорируются, поэтому, например, адреса ¤0E и ¤CE аналогичны.

Все изменения в текущем времени и дате нужно производить, предварительно остановив счет времени, для чего в бит SET регистра B нужно записать 1. Перед чтением информации о времени нужно проанализировать состояние бита UIP регистра A, и если он покажет, что сейчас идет обновление информации, то читать информацию нельзя, так как ее правильность не гарантируется. Процедура чтения всей нужной информации должна уложиться в 244 мкс, потому что именно за это время до начала обновления бит UIP устанавливается в единицу.

Наиболее же удобным способом считывания информации о текущем времени и дате является использование встроенного прерывания, происходящего в конце каждого цикла обновления. Это прерывание разрешается установкой бита UIE регистра B в единицу и стробируется установкой в единицу бита UF регистра C.

После прочтения регистра C все четыре бита - флага, содержащихся в нем, автоматически сбрасываются в ноль. Это значит, что первой (после сохранения регистров и CLD) командой программы обработки прерывания должна быть операция чтения регистра C и сохранения его в специальной ячейке, после чего можно, анализируя биты, принимать соответствующие меры. Нужно помнить, что ситуация, когда срабатывают одновременно два или три прерывания, не только вполне вероятны, но и обычны, что требует обязательной проверки и обработки всех битов-признаков, конечно, только в том случае, если Вы их вообще собирались обрабатывать.

Так как во время обработки прерывания бит I процессора (маска прерывания) устанавливается в единицу, программу обработки прерывания уже ничто не прервет. Тем не менее, если в это время пpидeт cигнaл прерывания, он будет запомнен в соответствующем бите-признаке и прервет процессор непосредственно после выполнения команды RTI. Важно только соблюдать, чтобы время выполнения программы обработки прерывания не оказалось больше времени пepиoдa соответствующeгo прерывания, так как в этом случае машина зависнет. По той же причине регистр C должен быть считанным хотя бы раз программой обработки прерывания. Если программа не совeршит чтения регистра C, то машина зависнет, так как не будут сброшены флаги и, выполнив команду RTI, процессор сразу же опять прервется.

.стОписание часов 1

Закрыть окно         Список других документов ПЭВМ "Агат"