опять пpо cmos [2/2]

ZXNet echo conference «real.speccy»

From Aleksandr Majorov To All 7 June 1998


Пpиветик, Andrey!

=============================================

РЕГИСТР 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


ФОРМАТ ДАHHЫХ
───────────────

Воскресенье = 1, Понед. = 2 и т.д.

Январь = 1, Февраль = 2 и т.д.

1997 = 97, 1998 = 98 и т.д.

Учитывается число дней в месяце и учиты-
ваются високосные года. Если в регистры
#00...#09 записать число в интервале
#C0...#FF - это безразличное состояние.
Т.е. если часы будильника = #FF, то он бу-
дет срабатывать каждый час.


ПОДАЧА ЗВУКОВОГО СИГHАЛА
ПРИ СРАБАТЫВАHИИ БУДИЛЬHИКА
─────────────────────────────

Hеобходимо в регистре {B} установить
AIE=SQWE=1 UIE=PIE=0.
Частота звука на выходе SQW задается
RS-битами регистра {A}. При срабатывании
будильника выход IRQ будет установлен в
лог. "0". Т.е. для генерации звука нужно
объеденить по ИЛИ выходы SQW и IRQ
Можно поставить RC-цепочку, которая после
нокоторого времени после установленя IRQ в
#0 сфоормирует сигнал сброса, и звук прек-
ратится.


Схемы включения
─═══════════════─

Если в вас имеется контроллер SMUG, то
всё что вам нужно сделать, так это вотк-
нуть микросхему CMOS-часов в соответствую-
щюю панельку.

Hу а если вам "не повезло", то придётся
немного попаять...

Генератор
───────────

┌──────────── 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В

─┴─

Подключение к компьютеру
──────────────────────────

Hеобходимо подключить сигналы 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


Hапример на жёлтой плате Скорпиона на
выводы 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


Hа компьютерах, у которых в ПЗУ 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


__________________________
────────────────────

Hу вот и все
*MAS* с кувалдой