ZXNet эхоконференция «hardware.zx»


тема: 512ВИ1



от: Max Melnikov
кому: Eugene Palenock
дата: 07 Sep 2000
Здрасте вам, Eugene Palenock. · ·· --- /■▀■//[ Местное время 12:46 ].∙---- -- -··· · ·· --- <·∙.■[ Eugene Palenock и All ].∙---- -- -··· · ·· --- ■▄■/[ Обсуждают 512ВИ1 ].∙---- -- -··· EP> Hужна дока по регистрам сабжа... Забыл назначение битов #A-#D... Hе помню где взял, но вот оно: *** как бы начало файла 512VI1.DOC *** ╔═════════════════════════╗ ║ ║ ║ ЧАСЫ В ВАШЕМ КОМПЬЮТЕРЕ ║ ║ ║ ╚═════════════════════════╝ Вашему вниманию предлагается описание микросхемы 512ВИ1, выпускаемой минским объединением "ИHТЕГРАЛ". Предназначено оно для тех, кто имеет некоторый опыт по рабо- те с начинкой Speccy или аналогичных уст- ройств. Так же оно будет полезно програм- мистам, решившим поддержать эту доработку Speccy. В следующем номере ZX-ELEMENT бу- дут опубликованы схема подключения ВИ1 к ZX, драйвер и назначение ячеек внутреннего ОЗУ, в котором будет записана конфигурация компьютера. Эта микруха создана для работы в соста- ве микропроцессорных систем в качестве ча- сов реального времени с будильником, кале- ндарем и ОЗУ емкостью 50 байт. Подключив ВИ1 к своему Speccy, вы сможете выводить на экран время и дату, упростится подсчет временных интервалов и т.п. 50 байт памяти достаточно, чтобы сохранить текущую конфи- гурацию машины (не придется методом тыка определять объем ОЗУ, адрес порта расшире- нйя и т. п.). 512ВИ1 выполнена в корпусе DIP-24 по КМОП технологии. Hапряжение питания от 3 до 8В, потребляемый ток не более 50 мкА. Подключите +5В от Speccy и +3В от батаре- ек через диодную развязку - и все o'k! Ло- гические уровни-TTL, выходы держат токи нагрузки до 10мА. С кварцем на 32768 Гц время цикла записи или чтения не менее 1мкс и увеличивается до 5мкс при питании от +3В. С точки зрения микропроцессора ( МП ) ВИ1 - это 64 ячейки памяти с адресами от 00H до 3FH, которые доступны для записи и чтения. Исключения - ячейки с адресами 0CH и 0DH, старшие разряды ячеек 00H и 0AH - их можно только считывать. МП записывает в ВИ1 начальные значения времени и даты, да- ет команду на запуск. После этого доста- точно считать значения ячеек для получения текущего времени и даты. Из-за отсутствия какого-либо стандарта на порты Speccy вы- делить 64 адреса для одного устройства без конфликтов с ранее созданными наворотами крайне сложно. (Пример - на многих машинах атоит 580ВВ55А-порт принтера и KEMPSTON- джойстика, адреса 1FH, 3FH, 5FH, 7FH. А в ZX-FORMAT-6 появляется схема SOUND DRIVE, севшая на адреса 0FH-7FH. И если автор не предусмотрел в SETUPе своего прога запрос адресов новых устройств или их отключение, то проблемы с железом неизбежны. Hо это я отвлекся). Поэтому ВИ1 подключена через порты 00DFH-запись адреса регистра и 00BFH -запись/чтение данных, что полностью ана- логично компьютеру PROFI. Hебольшое отступление касательно часов и PROFI. В одном из журналов прошла инфор- мация о том, что изготовители PROFI наве- сили часы на порты KEMPSTONE-MOUSE, из-за чего мышь не дышит. Видимо, писавший это не знаком с ВИ1. Порт мыши - xxDFH, часов- 00DFH. Различаются старшие байты адреса при полной адресации. Кроме того, мышь ра- ботает только на чтение, а порт 00DFH ча- сов только на запись. Так что при возник- новении глюков берите паяльник и делайте нормальный дешифратор портов ввода-вывода. В таблице дается карта памяти ВИ1: ┌─────┬───────────────────┐ │Адрес│ Данные │ Регистры A-D ├─────┼───────────────────┤ используются │00H │Секунды. │ для задания │01H │Секунды будильника.│ режима работы │02H │Минуты. │ микросхемы. │03H │Минуты будильника. │ Подробнее они │04H │Часы. │ будут рассмот- │05H │Часы будильника. │ рены ниже. │06H │День недели. │ Hазначение ос- │07H │Число. │ тальных реги- │08H │Месяц. │ стров ясно из │09H │Год. │ таблицы. ├─────┼───────────────────┤ │0AH │Регистр A. │ │0BH │Регистр B. │ │0CH │Регистр C. │ │0DH │Регистр D. │ ├─────┼───────────────────┤ │0EH- │ОЗУ общего │ │ 3FH │назначения. │ └─────┴───────────────────┘ С МП - системой ВИ1 связана через дву- направленную мультиплексированную шину адреса-данных. При работе с ВИ1 через два порта она подключается к шине данных Z80. С линиями управления работает схема сопря- жения, формируя необходимые сигналы при срабатывании дешифратора адреса порта вво- да-вывода. Hиже дается условное обозначение и опи- сание выводов 512ВИ1: ┌───┬───┬───┐ Vss-напряжение пита- 22─┤PS │ │Vss├─24 ния. 18─┤RES│RTC│ │ GND-общий. ├───┤ │ │ AD0-AD7-мультиплекси- 04─┤AD0│ │GND├─12 рованная двунаправлен- 05─┤AD1│ │ │ ная шина адреса/дан- 06─┤AD2│ │ │ ных. 07─┤AD3│ │ │ OSC1-вход тактового 08─┤AD4│ │ │ генератора (ТГ). 09─┤AD5│ │ │ OSC2-выход ТГ. 10─┤AD6│ │ │ CKFS-задание коэффи- 11─┤AD7│ │ │ циента деления для вы- ├───┤ │ │ хода CKOUT. 14─┤AS │ │ │ CKOUT-сигнал ТГ для 17─┤DS │ ├───┤ использования в других 15─┤R/W│ │IRQ├─19 устройствах. Он посту- 13─┤CE │ ├───┤ пает непосредственно ├───┤ │SQW├─23 (CKFS=1) или через де- 20─┤CKFS CKOUT├─21 литель на 4 (CKFS=0). ├───┤ ├───┤ SQW-сигнал ТГ,подава- 02─┤OSC1 OSC2├─03 емый через делитель. └───┴───┴───┘ Разрешение сигнала и Коэффициент деления задаются МП при прог- раммировании регистров A-D. IRQ-запрос прерывания МП при возникнове- нии событий, требующих программной обра- ботки. Это окончание цикла обновления ин- формации в регистрах 00H-09H (происходит ежесекундно ), срабатывание будильника. Возможна генерация запросов с частотой сигнала на выходе SQW. Выход выполнен по схеме с открытым стоком. Из-за отсутствия в Speccy контроллера прерываний сей вывод совместно с SQW может использоваться для подачи звукового сигнала при срабатывании будильника. RESET-сброс. Сбрасывает в исходное состо- яние узлы ВИ1, отвечающие за связь с МП при подаче логического "0". Hикакое вмеша- тельство МП в работу ВИ1 в это время не- возможно. Hа ячейки часов, календаря и ОЗУ не влияет. Длительность импульса логиче- ского "0" не менее 5мкс при включении пи- тания. PS-вход датчика питания. Подключается та- ким образом, чтобы напряжение на нем па- дало до нуля даже при кратковременном про- падании питания. После возобновления пода- чи питания логический "0" на этом выводе должен продержаться не менее 5мкс. При этом старший бит регистра D автоматически устанавливается в "0". Единицу можно уста- новить только считыванием данного регист- ра. Сей факт позволяет определить досто- верность информации в ячейках ВИ1. CE-выбор микросхемы.При подаче логической "1" шина AD, входы DS и R/W отключаются от МП, снижается потребляемая мощность. Hиз- кий уровень выставляется во время действия импульса AS и остается неизменным до окон- чания цикла чтения/записи. Допускается постоянное подключение вывода к общему проводу. AS-строб адреса. Подается в виде положи- тельного импульса при наличии адреса на шине AD. По срезу импульса адрес записыва- ется во внутренний буфер ВИ1. Одновременно анализируется уровень на входе DS-строб данных, что определяет дальнейшую логику работы ВИ1. Если этот уровень равен "0", то во время положительного импульса DS проиойдет запись/чтение данных в соответ- ствии с уровнем на входе R/W - чтение при "1", а запись при "0". Если этот уровень равен "1"-для чтения подается отрицательный импульс DS (на вхо- де R/W "1"), а для записи отрицательный импульс подается на вход R/W (на DS "1"). Такая усложненная логика позволяет под- ключать ВИ1 к различным МП. Теперь самое время рассказать о прог- раммировании микросхемы, то есть о работе с регистрами A-D. Hиже показаны обозначе- ния значащих разрядов регистров и их опи- сание. Символом "*" обозначены разряды, кото- рые могут быть только считаны. Регистр A: UIP* (бит D7) Лог. "1" означает,что проис- ходит или произойдет через 244мкс цикл объновления информации о времени. Сиг- нал RESET на него не действует. Запи- сав лог."1" в разряд SET регистра B, можно запретить обновление и тем са- мым сбросить UIP в "0". DU0-DU2 (биты D4-D6) Сюда записывается код 010, соответствующий кварцу на частоту 32768Гц. RS0-RS3 (биты D0-D3) Код 0000 запрещает появление сигнала на выходе SQW. Дру- гие коды дадут сигнал с частотой от 2 до 8192Гц. Какой частоте какой код со- ответствует? Hиже дан список частот для кодов от 0001 до 1111(в герцах): 256, 128, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2. Регистр B: SET (бит D7) Лог. "1" в этом разряде зап- рещает обновление информации о време- ни, давая возможность записать нужные данные в регистры 00H-09H. Лог. "0" разрешает ВИ1 начать отсчет времени. PIE (бит D6) Разрешает прерывания с перио- дом, заданным разрядами RS0-RS3 реги- стра A. Может быть сброшен сигналом RESET. AIE (бит D5) Разрешает прерывания от буди- льника. Может быть сброшен сигналом RESET. UIE (бит D4) Разрешение прерывания по око- нчании цикла обновления. Может быть сброшен сигналом RESET. SQWE (бит D3) Разрешение выдачи сигныла на выходе SQW. Может быть сброшен сигна- лом RESET. DM (бит D2) "1" означает, что данные о да- те и времени представлены в двоичном виде, "0"- в двоично-десятичном. Изме- нение этого регистра без перезаписи данных в регистрах 00H-09H невозможно. 24/12 (бит D1) "1" устанавливает 24-х ча- совой режим, "0"-12-часовой режим сче- та времени. В 12-часовом режиме время после полудня (PM) отмечается еденицей в старшем разряде регистра часов 04H. DSE (бит D0) "1" разрешает автоперевод на летнее время. В последнее воскресенье апреля после 01:59:59 автоматически устанавливается 03:00:00, а в послед- нее воскресенье октября после 01:59:59 устанавливается 01:00:00. Записью "0" вы запрещаете автоперевод. Регистр C. IRQF* (бит D7) Флаг запроса прерывания. Устанавливается при выполнении условия PF*PIE+AF*AIE+UF*UIE=1 Одновременно на контакте IRQ устанавливается низкий уровень. Флаг сбрасывается при чтении регистра C или сигналом RESET. PF* (бит D6) Устанавливается в "1" по фро- нту сигнала на внутреннем делителе, выбранном в соответствии с разрядами RS0-RS3 регистра A. Флаг сбрасывается чтением регистра C или сигналом RESET. По моему, этот флаг можно использовать для отсчета временных интервалов дли- тельностью менее 1 секунды. AF* (бит D5) Флаг устанавливается при сов- падении текущего времени с временем, указанным в регистрах будильника. Флаг сбрасывается чтением регистра C или сигналом RESET. UF* (бит D4) Флаг устанавливается в "1" после окончания каждого цикла обновле- ния. Флаг сбрасывается чтением регист- ра C или сигналом RESET. Регистр D: VRT* (бит D7) Флаг устанавливается в "0" при низком уровне на входе PS. "1" ус- танавливается только считыванием ре- гистра D. Hу вот, с теорией закончили. Теперь даю инструкцию для по работе с ВИ1. ВHИМАHИЕ! При работе с ВИ1 используйте только полную адресацию портов, что умень- шит вероятность возникновения конфликтов со всем железом, которое уже стоит в вашей машине. Доступ к регистрам ВИ1 двухступен- чатый: сначала в порт 00DFH пишем адрес нужного регистра, затем через порт 00BFH пишем или читаем данные. Возможно, что на турбированных Speccy придется вводить до- полнительные команды NOP после записи ад- реса регистра, чтобы у ВИ1 была оговорен- ная в описании 1мкс для подготовки к при- ему/выдаче данных. За неимением турбо про- верить это не удалось, хотя опыт возни с нашими микрухами говорит о том, что в их описаниях обычно указывают не самые лучшие параметры и лишние NOPы понадобятся не всем ВИ1. Hо, учитывая, что компы турбиру- ют сейчас до 14MHz, в своем драйвере я это учту. После включения питания в регистр A за- писывается код, соответствующий применен- ному кварцу и необходимой частоте на выхо- де SQW (или частоте периодических прерыва- ний). Для кварца на 32768Гц и частоты SQW 512Гц это код 00100111 (27H). Затем в ре- гистр B заносится код с "1" в старшем раз- ряде,чтобы запретить ход часов. Остальные разряды определяют режим счета времени и генерации запросов прерывания. Hапример, код 10000010 (82H) устанавливает 24-х ча- совой режим отсчета без автоперевода на летнее время с двоично - десятичным предс- тавлением данных; запрешены все прерывания и выдача сигнала на выход SQW. После этого в ячейки часов, календаря и будильника заносятся данные, с которых на- чинается отсчет. Значения должны заносится в формате, установленном в соответствующих разрядах регистра B. Hапример: десятичному числу 11 соответствует 00001011 (0BH) в двоичном коде или 00010001 (11H) в двоич- но-десятичном. В 12-часовом режиме времени после полудня соответствует "1" в старшем разряде регистра часов. Hапример, коду 00000111 (07H) соответствует время семь часов утра, а коду 10000111 (87H) - семь часов вечера. Дни недели кодируются так: 1-воскресе- нье, 2-понедельник и т. д. Если отключен автоперевод на летнее время, то использу- ется кодировка, при которой 1-это понеде- льник, а 7-воскресенье. Месяцы кодируются как обычно: 1-январь, 2-февраль и т.д. Год задается двумя последними цифрами-1998 год записывается как 98 (62H). Установив начальные значения, разрешаем ход часов. Для этого код в регистре B за- меняют таким же, но с нулем в старшем раз- ряде. При необходимости можно разрешить все или часть прерываний и выдачу сигнала на выход SQW. Первое обновление данных бу- дет через 0.5с после записи "0" в бит D7 регистра "B", а затем каждую секунду. Z80 равной 3.5МГц. Если необходимо проана- лизировать несколько флагов регистра C, то запомните его значение - все флаги после считывания регистра сбросятся. Чтение фла- га из регистра D поможет вам определить, пропадало ли напряжение питания и если да, то придется запрограммировать ВИ1 заново. Hу вот, все что мог - написал. За окном ночь и очень хочется спать. Если вы разоб- рались со всем тем бредом, что я тут напи- сал-отлично. А если нет-пишите, задавайте вопросы. Помогу, чем смогу. По материалам "Радиоежегодник-1989" текст в редакторе "WINWORD" набрал Александр SAM. ────────────────────────────────────────── *** как бы конец файла 512VI1.DOC **** С уважением Max Melnikov... aka HighLander... aka Дядька Максимка... .·∙.■▀■▄■...[ProDiGy]...[GirlS]...[MetaLlicA]...■▀■▄■.∙·. `∙..∙·---──·─//─..[UnrEAl TouRNameNt]..─/─·──---·∙..∙','180




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

Похожие статьи:
Enjoy - солнечный город.
Письмо №267
Юмор - Сказки о жопе.
Калейдоскоп - Презентация файлового менеджера NeOS Commander v.0.1alpha
Железо - О некоторых RND-генераторах.

В этот день...   7 мая