CMOS-часы - Микросхема CMOS-часов для компьютера (схема включения).
╔═───────────────════════───────────────═╗
│ CMOS-часы │
╚═──────────────────────────────────────═╝
Александр Майоров
Дмитрий Ломов
В этом номере мы решили рассказать вам о
такой замечательной вещи, как микросхема
CMOS-часов. Что-же это за зверь такой и
для чего он нужен, спросите вы?
А вот смотрите сами!
Данная микросхема обеспечивает независи-
мый от компьютера подсчет времени, выра-
ботку сигналов прерывания от будильника, а
также может использоваться как небольшое
энергонезависимое ОЗУ на 50 байт.
Особенностью CMOS-часов является их
чрезвычайно низкое энергопотребление! (по
справочнику потребляемый ток от 0.1
до 4мА!).
Если к данной микросхеме подключить ре-
зервный источник питания, то подсчет вре-
мени и сохранность информации во внутрен-
нем ОЗУ будет гарантирована и при отключе-
нии компьютера.
Вы спросите - ну и зачем это мне нужно?
Действительно, в обычных условиях часы в
компьютере не очень-то и нужны.
Но! Если вы время от времени пишете
письма в эхи, то данные часики избавят вас
от необходимости постоянно смотреть на ка-
лендарь и настенные часы, чтобы проставить
время/дату. Ну а для BBS или "майлера" ча-
сы весьма и весьма нужны!
Собственно необходимость в часах явилaсь
одной из причин создания новой версии BBS.
О которой, возможно, пойдёт речь в следую-
щих номерах Ньюски.
Ну, а теперь ближе к делу!
Микросхема называется 512ВИ1, её фир-
менный прототип МС 146818, а также наи-
больший рулез - DALLAS 1287, имеющая внут-
ренний кварц и батарею на 10 лет.
Следует сказать, что такие микросхемы
стоят в ПЦ 286 и 386, а посему доступны
благодаря великому Апгрейду...
Для начала назначение выводов:
01 NC не используется
02 OSC1 вход генератора
03 OSC2 выход генератора
04 AD0 \
05 AD1 \
06 AD2 \
07 AD3 мультиплексная шина
08 AD4 адреса/данных
09 AD5 /
10 AD6 /
11 AD7 /
12 GND земля
13 /CE выбор кристалла
14 AS адресный строб
15 R/W чтение/запись
16 NC не используется
17 /DS строб данных
18 /RES вход сброса
19 /IRQ выход запроса на прерывание
20 SED управление частотой CKOUT
21 CKOUT выход сигналов тактовой частоты
22 PS контроль сбоя напряжения питания
23 SQW выход программно-управляемого делителя частоты
24 +Ucc +3...+5 вольт
А теперь подробнее:
На вывод 02 (OSC1) необходимо подать
частоту от внешнего генератора, или подк-
лючить к выводам 02/03 (OSC1/OSC2) квар-
цевый резонатор.
Выводы 4...11 (AD0...AD7) - шина ад-
рес/данные, подключается на шину данных
прроцесора.
Вывод 13 (/CE) - выбор кристала. При на-
личии лог. "1" на данном входе микросхема
блокируется.
Имеется одна особенность: на данном вхо-
де должно быть состояние лог."0" в тече-
ние всего цикла обращения к микросхеме.
Т.е. одновременно с (или до) выбором адре-
са регистра на входе /CE должна устано-
виться лог."0", и его состояние не должно
меняться в течение всего цикла обращения к
выбранному регистру !
Наиболее удобно и просто устанавливать
на этом входе состояние лог."0" в течение
всего времени работы компьютера.
Выбор номера регистра производится пода-
чей его на шину АДРЕС/ДАННЫЕ (AD0...AD7)
и подачей лог."1" на вход 14 (AS)
Для чтения/записи данных в/из регистр(а)
используются выводы 15 (R/W) - выбор ре-
жима чтение/запись (соответственно лог."1"
и "0") и 17 (DS) - стробирование данных.
При подаче лог."0" на вывод R/W произ-
водится запись данных в ранее выбранный
регистр, а при подаче лог."0" на вывод
DS - считывание данных из регистра.
Появляние лог."0" на выводе 19 (/IRQ)
сообщает о процессе системного прерывания
БИС. Во всех остальных случаях данных вы-
ход находится в третьем логическом состоя-
нии (высокоимпедансном).
Подача лог."0" на 22-й вывод (/PS) ин-
формирует БИС о том, что произошёл сбой
напряжения питания, и содержимое регистров
недостоверно. Если же имеется резервный
источник питания, то на этот вход подать
лог. "1".
На выводе 23 (SQW) имеются импульсы
частоты, которая получается делением час-
тоты тактового генератора на коэффициент,
задаваемый программно.
На выходе 21 (CKOUT) имеются импульсы,
частота которых зависит от состояния входа
20 (SED). При наличии там лог."1" час-
тота на выходе SQW совпадает с частотой
генератора (OSC1-OSC2). При наличии
лог."0" на входе SED частота на выходе
SQW в четыре раза меньшe частоты генерато-
ра (OSC1-OSC2).
В микросхеме имеются 64 восьмиразрядных
регистра. При работе с ними нужно сначала
указать, с каким регистром работать (запи-
сать его номер в адресный регистр), а за-
тем производить запись/чтение.
Номера регистров
#00 СЕКУНДЫ
#01 СЕКУНДЫ (БУДИЛЬНИК)
#02 МИНУТЫ
#03 МИНУТЫ (БУДИЛЬНИК)
#04 ЧАСЫ
#05 ЧАСЫ (БУДИЛЬНИК)
#06 ДЕНЬ НЕДЕЛИ
#07 ДЕНЬ МЕСЯЦА
#08 МЕСЯЦ
#09 ГОД
#0A РЕГИСТР A
#0B РЕГИСТР B
#0C РЕГИСТР C
#0D РЕГИСТР D
#0E ОЗУ общего назначения
... ОЗУ общего назначения
#3F ОЗУ общего назначения
#0C,#0D - только чтение
#00,#0A - старшие разряды только чтение
ОПИСАНИЕ РЕГИСТРОВ A...D
─════════════════════════─
РЕГИСТР А (отдельные биты)
────────────────────────────
7 UIP "1" в этом разряде означает, что
идет обновление информации и с часа-
ми работать нельзя, нужно подождать
некоторое время. Длительность циклов
обновления в зависимости от частоты
тактовых импульсов:
┌─────────┬──────────────────────┐
│частота │ длительность │
│ МГц │ цикла обновления, мс│
├─────────┼──────────────────────┤
│4.194304 │ 248 │
│1.048576 │ 248 │
│0.032768 │ 1984 │
└─────────┴──────────────────────┘
32768 1048576 4194304 СБРОС
6 DV2 частота 0 0 0 1
5 DV1 кварца 1 0 0 1
4 DV0 0 1 0 x
3 RS3 Установка частоты на выводе
2 RS2 SQW (23) и периода прерываний
1 RS1 IRQ (19)
0 RS0
IRQ - сигнал выдачи прерывания либо по
пост. частоте, либо по окончанию цикла об-
новления, либо от будильника.
IRQ = 1000 / SQW
SQW используется для подачи сигнала от
будильника
Например: частота SQW = 256 ГЦ, период
равен 1000/256 = 3.9ms
D3 D2 D1 D0 ЧАСТОТА,ГЦ ПЕРИОД,ms
0 0 1 1 8192 0.122
0 1 0 0 4096 0.244
0 1 0 1 2048 0.488
....................................
1 1 1 0 4 250
1 1 1 1 2 500
РЕГИСТР B (отдельные биты)
───────────────────────────
7 SET "1"-запрет обновления
(для установки времени).
6 PIE разрешение прерывания с периодом,
заданным в RS-битах регистра A.
Сбрасывается по Reset'у.
5 AIE разрешение прерывания от будильни-
ка. Сбрасывается по Reset'у.
4 UIE разрешение прерывания по окончанию
цикла обновления. Сбрасывается
по Reset'у.
3 SQWE разрешение выдачи информаци на вы-
ход SQW. Сбрасывается по Reset'у.
2 DM вид данных: 0 - двоично-десятичный
1 - двоичный
1 24/12 счет: 0 - по 12 часов
1 - по 24 часа
0 DSE "1" разрешает автоматический пере-
ход с летнего на зимнее время и
обратно.
Переход на летнее время осуществляется в
3ч ночи в последнее воскесенье апреля, а
на зимнее в 1ч ночи в последнее воскресен-
ье октября.
РЕГИСТР C (отдельные биты)
────────────────────────────
Все биты сбрасываются по Reset'у или при
чтении регистра C.
7 IRQF флаг запроса прерывания. Устанав-
ливается в "1" при условии :
(PF and PIE) or (AF and AIE) or
(UF and UIE).
Если IRQF="1", то на выводе IRQ
(19) устанавливается "0".
6 PF устанавлвается в 1 фронтом сигнала
на выходе внутреннего делителя
частоты, выбранного в соответствии
с RS-разрядами.
5 AF устанавливается в 1 при совпадении
текущего времени и времени будиль-
ника.
4 UF устанавливается в 1 после окончания
цикла обновления.
3 =0
...
0 =0
РЕГИСТР D (отдельные биты)
────────────────────────────
7 устанавливается в лог. "0", если
питание пропадало и информация
недостоверна.
Устанавливается в "1" по Reset'у
или при чтении регистра D.
6 =0
...
0 =0
ФОРМАТ ДАННЫХ
───────────────
Воскресенье = 1, Понед. = 2 и т.д.
Январь = 1, Февраль = 2 и т.д.
1997 = 97, 1998 = 98 и т.д.
Учитывается число дней в месяце и учиты-
ваются високосные года. Если в регистры
#00...#09 записать число в интервале
#C0...#FF - это безразличное состояние.
Т.е. если часы будильника = #FF, то он бу-
дет срабатывать каждый час.
ПОДАЧА ЗВУКОВОГО СИГНАЛА
ПРИ СРАБАТЫВАНИИ БУДИЛЬНИКА
─────────────────────────────
Необходимо в регистре {B} установить
AIE=SQWE=1 UIE=PIE=0.
Частота звука на выходе SQW задается
RS-битами регистра {A}. При срабатывании
будильника выход IRQ будет установлен в
лог. "0". Т.е. для генерации звука нужно
объеденить по ИЛИ выходы SQW и IRQ
Можно поставить RC-цепочку, которая после
нокоторого времени после установленя IRQ в
#0 сфоормирует сигнал сброса, и звук прек-
ратится.
Схемы включения
─═══════════════─
Если в вас имеется контроллер SMUG, то
всё что вам нужно сделать, так это вотк-
нуть микросхему CMOS-часов в соответствую-
щюю панельку.
Ну а если вам "не повезло", то придётся
немного попаять...
Генератор
───────────
┌──────────── 2 (OSC1)
│
│ 22М
├─▒▒▒▒──┬──── 3 (OSC2)
│ │
│ ▒ 470к
│ ▒
│ ▒
│ │
│ │┌┐│ │ кварцевый резонатор:
┌┴─┤││├──┤
10│ │└┘│ │20 32.768 кГц
┴ ┴ * 1.048576 МГц
┬ ┬ 4.194304 МГц
│ │
│ │
─┴─ ─┴─
Выбор кристала и контроль напряжения
──────────────────────────────────────
5.1К
┌─▒▒▒▒▒──── 24 (+Uп)
│
┌─ │
│ /│ 5.1К /─┴────────── 13 (/CE)
│/ │ │/ к
──┤ ├──▒▒▒▒▒───┤ КТ315
+5 │\ │ │\ э
│ \│ \
│
КС133 │
│
─┴─
5.1К
24 (+Uп) ─────▒▒▒▒▒──────────── 22 (PS)
Питание микросхемы
────────────────────
│\ │
│ \│
+5Б ───┤ /├────┬─────────── 24 (+Uп)
│/ │ │
│
│
│\ │ │
│ \│ │
┌────│ /├────┘
│ │/ │
│
──┴─── +
─┬─ аккумулятор на 3.6В
│
─┴─
Подключение к компьютеру
──────────────────────────
Необходимо подключить сигналы AD0...AD7
на шину данных процессора.
Сигнал /RES (18) подключить на /RESET
процессора (26-й вывод)
Оставшиеся выводы - AS, R/W, /DS нужно
подключить к дешифраторам адреса.
Состояние сигналов
──────────────────
AS R/W /DC
ничего 0 1 1
выбор номера регистра 1 1 1
чтение из регистра 0 1 0
запись в регистр 0 0 1
Например на жёлтой плате Скорпиона на
выводы AS, /DS, R/W сигналы можно подавать
с м/с D54:
D54/13 через инвертор на AS
D54/11 на /DS
D54/15 на R/W
В этом случае адреса портов CMOS-часов
будут распологаться в TR-DOS области.
При такой схеме включения анализируются
только биты 1 и 7, но во избежании конф-
ликтов с другими портами рекомендуются та-
кие адреса портов
Выбор регистра #D8
Чтение из регистра #58
Запись в регистр #58
При испольновании Скорпиона для запи-
си/чтения данных можно использовать п/п
TR-DOS:
#3FF0 - OUT (C),A
RET
#3FF3 - IN A,(C)
RET
На компьютерах, у которых в ПЗУ TR-DOS
нет подобных команд рекомендуется следую-
щая программа:
;запись данных в регистр
;in:
;[C] - номер регистра CMOS-часов
;[B] - записываемое значение
WRREG LD A,C
CALL SETREG
LD A,B
LD C,#58
JR OUTPAR
;чтение данных из регистра
;in
;[C] - номер регистра CMOS-часов
;out:
;[A] - считаное из регистра значение
RDREG LD A,C
CALL SETREG
LD A,#D8
LD C,#1F
CALL OUTPAR
LD C,#58
LD IX,#3EF3
CALL JPTR
LD A,H
RET
SETREG LD C,#D8
OUTPAR LD IX,#2A53
JPTR PUSH IX
JP #3D2F
__________________________
────────────────────
Другие статьи номера:
CMOS-часы - Микросхема CMOS-часов для компьютера (схема включения).
|
|
|
|
|
|
|