06 июня 1998

       ╔═════════════════════════╗        
       ║                         ║        
       ║ ЧАСЫ В ВАШЕМ КОМПЬЮТЕРЕ ║        
       ║                         ║        
       ╚═════════════════════════╝        
                                          
   Вашему  вниманию  предлагается описание
микросхемы  512ВИ1,   выпускаемой  минским
объединением "ИНТЕГРАЛ". Предназначено оно
для тех, кто имеет некоторый опыт по рабо-
те с начинкой Speccy  или аналогичных уст-
ройств. Так же оно будет  полезно програм-
мистам, решившим поддержать  эту доработку
Speccy. В следующем номере ZX-ELEMENT  бу-
дут  опубликованы схема подключения ВИ1  к
ZX, драйвер и назначение ячеек внутреннего
ОЗУ, в котором будет записана конфигурация
компьютера.                               
   Эта микруха создана для работы в соста-
ве микропроцессорных систем в качестве ча-
сов реального времени с будильником, кале-
ндарем  и  ОЗУ емкостью 50 байт. Подключив
ВИ1 к своему  Speccy, вы  сможете выводить
на экран время и дату, упростится  подсчет
временных интервалов и т.п. 50 байт памяти
достаточно, чтобы сохранить текущую конфи-
гурацию  машины (не придется методом  тыка
определять объем ОЗУ, адрес порта расшире-
нйя и т. п.).                             
   512ВИ1  выполнена  в  корпусе DIP-24 по
КМОП технологии. Напряжение  питания  от 3
до  8В,  потребляемый ток не более 50 мкА.
Подключите +5В  от Speccy и +3В от батаре-
ек через диодную развязку - и все о'k! Ло-
гические  уровни-TTL, выходы  держат  токи
нагрузки до  1ОмА. С кварцем  на  32768 Гц
время  цикла  записи  или чтения не  менее
1мкс и увеличивается  до  Smkc при питании
от +3В.                                   
   С точки  зрения  микропроцессора ( МП )
ВИ1 - это 64  ячейки  памяти с адресами от
00Н до 3FH, которые доступны  для записи и
чтения. Исключения - ячейки с адресами ОСН
и 0DH, старшие разряды  ячеек  00Н и 0AH -
их можно только считывать. МП записывает в
ВИ1 начальные значения времени и даты, да-
ет команду на запуск. После  этого  доста-
точно считать значения ячеек для получения
текущего времени и даты. Из-за  отсутствия
какого-либо стандарта на порты Speccy  вы-
делить 64 адреса для одного устройства без
конфликтов  с  ранее созданными наворотами
крайне сложно. (Пример - на многих машинах
атоит  58OBB55A-порт принтера  и KEMPSTON-
джойстика, адреса  1FH, 3FH, 5FH, 7FH. А в
ZX-FORMAT-6 появляется  схема SOUND DRIVE,
севшая на адреса 0FH-7FH. И  если автор не
предусмотрел в SETUPe своего  прога запрос
адресов новых устройств или их отключение,
то  проблемы с железом неизбежны. Но это я
отвлекся). Поэтому  ВИ1  подключена  через
порты 00DFH-запись адреса регистра и 00BFH
-запись/чтение данных, что  полностью ана-
логично компьютеру PROFI.                 
------------------------------------------
   Небольшое  отступление касательно часов
и PROFI. В одном из журналов прошла инфор-
мация о том, что  изготовители PROFI наве-
сили часы на порты  KEMPSTONE-MOUSE, из-за
чего мышь не дышит. Видимо,  писавший  это
не знаком с ВИ1. Порт мыши - xxDFH, часов-
00DFH. Различаются  старшие  байты  адреса
при полной адресации. Кроме того, мышь ра-
ботает только на  чтение, а порт 00DFH ча-
сов только на  запись. Так что при возник-
новении глюков  берите  паяльник и делайте
нормальный дешифратор портов ввода-вывода.
------------------------------------------
                                          
                                          
 В таблице дается карта памяти ВИ1:       
+-----+-------------------+               
|Адрес| Данные            | Регистры A-D  
+-----V-------------------+ используются  
|00Н  |Секунды.           | для задания   
|01Н  |Секунды будильника.| режима работы 
|02Н  |Минуты.            | микросхемы.   
|03Н  |Минуты будильника. | Подробнее они 
|04Н  |Часы.              | будут рассмот-
|05Н  |Часы будильника.   | рены ниже.    
|06Н  |День недели.       | Назначение ос-
|07Н  |Число.             | тальных реги- 
|08Н  |Месяц.             | стров ясно из 
|09Н  |Год.               | таблицы.      
+-----V-------------------+               
|0AH  |Регистр A.         |               
|OBH  |Регистр В.         |               
|ОСН  |Регистр С.         |               
|0DH  |Регистр D.         |               
+-----V-------------------+               
|0EH- |ОЗУ общего         |               
| 3FH |назначения.        |               
+-----+-------------------+               
   С  МП - системой ВИ1 связана через дву-
направленную   мультиплексированную   шину
адреса-данных. При  работе с ВИ1 через два
порта она подключается  к шине данных Z80.
С линиями управления работает схема сопря-
жения, формируя  необходимые  сигналы  при
срабатывании дешифратора адреса порта вво-
да-вывода.                                
                                          
                                          
   Ниже дается условное обозначение и опи-
сание выводов 512ВИ1:                     
                                          
   +---+---+---+     Vss-напряжение пита- 
22-+PS |   |Vss+-24 ния.                  
18-+RES|RTC|   |     GND-общий.           
   +---+   |   |     ADO-AD7-мультиплекси-
04-+ADO|   |GND+-12 рованная двунаправлен-
05-+AD1|   |   |    ная шина адреса/дан-  
06-+AD2|   |   |    ных.                  
07-+ADЗ|   |   |     OSC1-вход тактового  
08-+ADЧ|   |   |    генератора (ТГ).      
09-+ADS|   |   |     OSC2-выход ТГ.       
10-+ADб|   |   |     CKFS-задание коэффи- 
11-+AD7|   |   |    циента деления для вы-
   +---+   |   |    хода CKOUT.           
14-+AS |   |   |     CKOUT-сигнал ТГ для  
17-+DS |   +---+    использования в других
15-+R/W|   |IRQ+-19 устройствах. Он посту-
13-+СЕ |   +---+    пает непосредственно  
   +---+   |SQW+-23 (CKFS=1) или через де-
20-+CKFS  CKOUT+-21 литель на 4 (CKFS=0). 
   +---+   +---+     SQW-сигнал ТГ,подава-
02-+OSC1   OSC2+-03 емый через делитель.  
   +---+---+---+    Разрешение сигнала и  
Коэффициент деления  задаются МП при прог-
раммировании регистров A-D.               
 IRQ-запрос прерывания  МП при возникнове-
нии событий, требующих  программной  обра-
ботки. Это окончание цикла обновления  ин-
формации  в  регистрах 00Н-09Н (происходит
ежесекундно ),  срабатывание   будильника.
Возможна  генерация  запросов  с  частотой
сигнала  на выходе SQW. Выход выполнен  по
схеме с  открытым стоком. Из-за отсутствия
в Speccy контроллера  прерываний сей вывод
совместно с SQW может  использоваться  для
подачи  звукового сигнала при срабатывании
будильника.                               
 RESET-сброс. Сбрасывает в исходное состо-
яние  узлы ВИ1, отвечающие  за  связь с МП
при подаче логического "0". Никакое вмеша-
тельство МП в работу ВИ1 в это  время  не-
возможно. На ячейки часов, календаря и ОЗУ
не  влияет. Длительность импульса  логиче-
ского "0" не  менее Smkc при включении пи-
тания.                                    
 PS-вход датчика питания. Подключается та-
ким образом, чтобы  напряжение  на нем па-
дало до нуля даже при кратковременном про-
падании питания. После возобновления пода-
чи питания логический "0" на  этом  выводе
должен  продержаться  не  менее  Smkc. При
этом старший бит регистра  D автоматически
устанавливается в "0". Единицу можно уста-
новить только считыванием данного  регист-
ра. Сей  факт позволяет определить  досто-
верность информации в ячейках ВИ1.        
 СЕ-выбор микросхемы.При подаче логической
"1" шина AD, входы DS и R/W отключаются от
МП, снижается  потребляемая мощность. Низ-
кий уровень выставляется во время действия
импульса AS и остается неизменным до окон-
чания   цикла  чтения/записи.  Допускается
постоянное  подключение  вывода  к  общему
проводу.                                  
 AS-строб адреса. Подается в виде  положи-
тельного  импульса при наличии  адреса  на
шине AD. По срезу импульса адрес записыва-
ется во внутренний буфер ВИ1. Одновременно
анализируется уровень  на  входе  DS-строб
данных, что  определяет дальнейшую  логику
работы ВИ1. Если  этот  уровень равен "0",
то  во  время положительного  импульса  DS
проиойдет  запись/чтение данных в соответ-
ствии с уровнем  на входе R/W - чтение при
"1", а запись при "0".                    
 Если  этот  уровень  равен "1"-для чтения
подается отрицательный импульс DS (на вхо-
де R/W "1"), а  для  записи  отрицательный
импульс подается на вход R/W  (на DS "1").
Такая  усложненная  логика позволяет  под-
ключать ВИ1 к различным МП.               
                                          
                                          
   Теперь самое время  рассказать  о прог-
раммировании микросхемы, то есть о  работе
с регистрами A-D. Ниже  показаны обозначе-
ния значащих разрядов регистров и их  опи-
сание.                                    
   Символом "*" обозначены  разряды, кото-
рые могут быть только считаны.            
   Регистр A:                             
UIP* (бит D7) Лог. "1" означает,что проис-
    ходит или произойдет через 2ЧЧмкс цикл
    объновления информации о времени. Сиг-
    нал RESET на него не  действует. Запи-
    сав лог."1" в разряд  SET  регистра В,
    можно  запретить  обновление и тем са-
    мым сбросить UIP в "0".               
DUO-DU2 (биты D4-D6) Сюда записывается код
    010, соответствующий кварцу на частоту
    32768Гц.                              
RSO-RSЗ (биты D0-D3)  Код  0000  запрещает
    появление  сигнала на выходе SQW. Дру-
    гие коды дадут сигнал с частотой от 2 
    до 8192Гц. Какой частоте какой код со-
    ответствует? Ниже  дан  список  частот
    для кодов от 0001 до 1111(в герцах):  
    256, 128, 8192, 4096, 2048, 1024, 512,
    256, 128, 64, 32, 16, 8, 4, 2.        
   Регистр В:                             
SET (бит D7) Лог. "1" в  этом разряде зап-
    рещает обновление информации  о време-
    ни, давая возможность записать  нужные
    данные   в  регистры 00Н-09Н. Лог. "0"
    разрешает ВИ1 начать отсчет времени.  
PIE (бит D6) Разрешает прерывания с перио-
    дом, заданным  разрядами RSO-RSЗ реги-
    стра A. Может  быть  сброшен  сигналом
    RESET.                                
AIE (бит D5) Разрешает прерывания от буди-
    льника. Может  быть  сброшен  сигналом
    RESET.                                
UIE (бит D4) Разрешение прерывания по око-
    нчании  цикла  обновления. Может  быть
    сброшен сигналом RESET.               
SQWE (бит D3) Разрешение выдачи сигныла на
    выходе SQW. Может быть сброшен  сигна-
    лом RESET.                            
DM (бит D2) "1" означает, что данные о да-
    те и времени представлены  в  двоичном
    виде, "0"- в двоично-десятичном. Изме-
    нение этого  регистра  без  перезаписи
    данных в регистрах 00Н-09Н невозможно.
24/12 (бит D1) "1" устанавливает  24-х ча-
    совой режим, "0"-12-часовой режим сче-
    та времени. В 12-часовом режиме  время
    после полудня (РМ) отмечается еденицей
    в старшем разряде регистра часов  04Н.
DSE (бит D0) "1" разрешает автоперевод  на
    летнее время. В последнее  воскресенье
    апреля  после  01:59:59  автоматически
    устанавливается 03:00:00, а  в послед-
    нее воскресенье октября после 01:59:59
    устанавливается 01:00:00.  Записью "0"
    вы запрещаете автоперевод.            
   Регистр С.                             
IRQF* (бит D7)  Флаг  запроса  прерывания.
    Устанавливается при выполнении условия
    PF*PIE+AF*AIE+UF*UIE=1 Одновременно на
    контакте  IRQ  устанавливается  низкий
    уровень. Флаг  сбрасывается при чтении
    регистра С или сигналом RESET.        
PF* (бит D6) Устанавливается в "1" по фро-
    нту сигнала  на  внутреннем  делителе,
    выбранном в соответствии  с  разрядами
    RSO-RSЗ регистра A. Флаг  сбрасывается
    чтением регистра С или сигналом RESET.
    По моему, этот флаг можно использовать
    для отсчета временных  интервалов дли-
    тельностью менее 1 секунды.           
AF* (бит D5) Флаг устанавливается при сов-
    падении текущего времени  с  временем,
    указанным в регистрах будильника. Флаг
    сбрасывается  чтением регистра  С  или
    сигналом RESET.                       
UF* (бит D4)  Флаг  устанавливается  в "1"
    после окончания каждого цикла обновле-
    ния. Флаг сбрасывается чтением регист-
    ра С или сигналом RESET.              
     Регистр D:                           
VRT* (бит D7) Флаг  устанавливается  в "0"
    при низком уровне на входе PS. "1" ус-
    танавливается только  считыванием  ре-
    гистра D.                             
                                          
   Ну вот, с теорией закончили. Теперь даю
инструкцию для по работе с ВИ1.           
   ВНИМАНИЕ! При  работе с ВИ1 используйте
только полную адресацию портов, что умень-
шит вероятность  возникновения  конфликтов
со всем железом, которое уже стоит в вашей
машине. Доступ к регистрам ВИ1 двухступен-
чатый: сначала в порт  00DFH  пишем  адрес
нужного регистра, затем  через  порт 00BFH
пишем или читаем  данные. Возможно, что на
турбированных Speccy  придется вводить до-
полнительные команды  NOP после записи ад-
реса регистра, чтобы у  ВИ1 была оговорен-
ная в описании 1мкс для  подготовки к при-
ему/выдаче данных. За неимением турбо про-
верить это не удалось,  хотя  опыт возни с
нашими микрухами говорит о том, что  в  их
описаниях обычно указывают не самые лучшие
параметры  и  лишние  NOРы  понадобятся не
всем ВИ1. Но, учитывая, что компы турбиру-
ют сейчас до 14MHz, в своем драйвере я это
учту.                                     
   После включения питания в регистр A за-
писывается код, соответствующий  применен-
ному кварцу и необходимой частоте на выхо-
де SQW (или частоте периодических прерыва-
ний). Для кварца на 32768Гц и  частоты SQW
512Гц это код 00100111 (27Н). Затем  в ре-
гистр В заносится код с "1" в старшем раз-
ряде,чтобы запретить ход  часов. Остальные
разряды определяют режим  счета  времени и
генерации  запросов  прерывания. Например,
код 10000010  (82Н) устанавливает 24-х ча-
совой режим  отсчета  без  автоперевода на
летнее время с двоично - десятичным предс-
тавлением данных; запрешены все прерывания
и выдача сигнала на выход SQW.            
   После этого в ячейки часов, календаря и
будильника заносятся данные, с которых на-
чинается отсчет. Значения должны заносится
в формате, установленном в соответствующих
разрядах регистра В. Например: десятичному
числу  11  соответствует  00001011 (OBH) в
двоичном коде  или 00010001 (11Н) в двоич-
но-десятичном. В 12-часовом режиме времени
после полудня  соответствует "1" в старшем
разряде  регистра  часов.  Например,  коду
00000111 (07Н)  соответствует  время  семь
часов утра, а  коду  10000111 (87Н) - семь
часов вечера.                             
   Дни недели кодируются  так: 1-воскресе-
нье, 2-понедельник и т. д.  Если  отключен
автоперевод на летнее время, то  использу-
ется кодировка, при которой 1-это  понеде-
льник, а 7-воскресенье. Месяцы  кодируются
как обычно: 1-январь, 2-февраль и т.д. Год
задается двумя последними цифрами-1998 год
записывается как 98 (62Н).                
   Установив начальные значения, разрешаем
ход часов. Для этого код в регистре  В за-
меняют таким же, но с нулем в старшем раз-
ряде. При  необходимости  можно  разрешить
все или часть  прерываний и выдачу сигнала
на выход SQW. Первое обновление данных бу-
дет через 0.5с после  записи  "0" в бит D7
регистра "В", а затем каждую секунду.     
Z80 равной 3.SМГц. Если необходимо проана-
лизировать несколько флагов регистра С, то
запомните его значение - все  флаги  после
считывания регистра сбросятся. Чтение фла-
га из регистра D поможет  вам  определить,
пропадало ли напряжение питания и если да,
то придется запрограммировать ВИ1 заново. 
   Ну вот, все что мог - написал. За окном
ночь и очень хочется спать. Если вы разоб-
рались со всем тем бредом, что я тут напи-
сал-отлично. А если  нет-пишите, задавайте
вопросы. Помогу, чем смогу.               
                                          
   По материалам "Радиоежегодник-1989"    
текст в редакторе "WINWORD" набрал        
                        Александр SAM.    
                                          
------------------------------------------



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Information - Freestuff talk long distance.
Fantasy - A Tale Strugatsky "Way to Amalthea (continued).
FANTASY - Roman G. Harrison, "Plague from Space" (continued).

В этот день...   21 November