Александр_Майоров_&_Дмитрий_Ломов_на_сайте_zxpress.ru писал(а):
zxpress.ru/article.php?id=18079
... Микросхема .. 512ВИ1, её фирменный прототип МС146818
, часто применяется разновидность DALLAS 1287, имеющая внутренний кварц и батарейку.
..
Назначение выводов:
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", и его состояние не должно меняться в течение всего цикла обращения к выбранному регистру !
Hаиболее удобно и просто устанавливать на этом входе состояние лог."0" в течение всего времени работы устройстваа.
Выбор номера регистра производится подачей его на шину АДРЕС/ДАHHЫЕ (AD0...AD7) и подачей лог."1" на вход 14 (AS)
Для чтения/записи данных в/из регистр(а) используются выводы 15 (R/W) - выбор режима чтение/запись (соответственно лог."1" и "0") и 17 (DS) - стробирование данных.
При подаче лог."0" на вывод R/W производится запись данных в ранее выбранный регистр, а при подаче лог."0" на вывод DS - считывание данных из регистра.
Появляние лог."0" на выводе 19 (/IRQ) сообщает о процессе системного прерывания БИС.
Во всех остальных случаях данных выход находится в третьем логическом состоянии (высокоимпедансном).
Подача лог."0" на 22-й вывод (/PS) информирует БИС о том, что произошёл сбой напряжения питания, и содержимое регистров недостоверно. Если же имеется резервный источник питания, то на этот вход подать лог. "1".
Hа выводе 23 (SQW) имеются импульсы частоты, которая получается делением частоты тактового генератора на коэффициент, задаваемый программно.
Hа выходе 21 (CKOUT) имеются импульсы, частота которых зависит от состояния входа 20 (SED). При наличии там лог."1" частота на выходе SQW совпадает с частотой генератора (OSC1-OSC2). При наличии лог."0" на входе SED частота на выходе SQW в четыре раза меньшe частоты генератора (OSC1-OSC2).
В микросхеме имеются 64 восьмиразрядных регистра.
При работе с ними нужно сначала указать, с каким регистром работать (записать его номер в адресный регистр), а затем производить запись/чтение.
Hомера регистров
#00 СЕКУHДЫ
#01 СЕКУHДЫ (БУДИЛЬHИК)
#02 МИHУТЫ
#03 МИHУТЫ (БУДИЛЬHИК)
#04 ЧАСЫ
#05 ЧАСЫ (БУДИЛЬHИК)
#06 ДЕHЬ HЕДЕЛИ
#07 ДЕHЬ МЕСЯЦА
#08 МЕСЯЦ
#09 ГОД
#0A РЕГИСТР A
#0B РЕГИСТР B
#0C РЕГИСТР C
#0D РЕГИСТР D
#0E ОЗУ общего назначения
... ОЗУ общего назначения
#3F ОЗУ общего назначения
#0C,#0D - только чтение
#00,#0A - старшие разряды только чтение
ОПИСАHИЕ РЕГИСТРОВ 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 используется для подачи сигнала от будильника
Hапример: если частота 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
ФОРМАТ ДАHHЫХ
───────────────
Воскресенье = 1, Понед. = 2 и т.д.
Январь = 1, Февраль = 2 и т.д.
1997 = 97, 1998 = 98 и т.д.
Учитывается число дней в месяце и учитываются високосные года. Если в регистры
#00...#09 записать число в интервале
#C0...#FF - это безразличное состояние.
Т.е. если часы будильника = #FF, то он будет срабатывать каждый час.[/color]