· Внешний кварцевый резонатор с соответствующей "обвязкой". Вот минимальная схема включения из даташита на MC146818:
Не знаю как у других, но у меня такое включение кварца работало не всегда устойчиво. Вернее пока компьютер был включен, всё работало как надо. Но в выключенном состоянии микросхема могла ускорить ход часов или наоборот, замедлить его. Не раз микросхема самовозбуждалась, результатом чего было повышенный ток потребления от батарейки и быстрый разряд последней.
Не буду утверждать, но подозреваю, что такие проблемы преследовали и разработчиков IBM PC AT, потому что в материнских платах 286-х компьютеров использовалась совершенно другая схема включения кварцевого резонатора:
Как видно, разработчики не доверились внутреннему генератору микросхемы часов и сделали внешний генератор на микросхеме MC14069. Она отличается микромощным энергопотреблением. Так как она питается от батарейки, то это актуально. Несмотря на кажущуюся сложность этой схемы она работает замечательно. Я гарантирую это! Повторял, проверял - работает. Если не верите мне, то посмотрите на 286-й компьютер - в нем всё хорошо работает :)
· Следующая особенность микросхемы - требуется обеспечение безглючного хранения информации в ячейках памяти часов в любом режиме работы. Вся проблема состоит в том, что при включении компьютера на шинах происходят переходные процессы (сигналы могут меняться хаотически), что в определённой комбинации может вызвать порчу данных в ячейках микросхемы.
Проблема существенная. Когда я экспериментировал с микросхемами часов, то часто получал порчу информации в них именно из-за этого.
Казалось бы для этой цели нужно просто подать уровень лог.1 на вход выбора микросхемы - /CE (13-й вывод). Но тут не всё так просто. Уровень лог.1 должен поддерживаться даже когда компьютер выключен. Т.е. опять же требуется питание схемы коммутации от батарейки. А как тогда получить доступ к часам? Потребуется какими-то внешними схемами подавать лог.0 на вход выбора микросхемы. Т.е. получается по-любому этот вход будет "завязан" на внутренние шины компьютера, на которых при включении будут происходить переходные процессы. Замкнутый круг получается какой-то...
Но выход есть. Взглянем снова на схему включения MC146818 в 286-м компе:
Очень остроумное решение - для разрешения работы микросхемы используется сигнал Power Good от источника питания AT. В выключенном состоянии он "притянут" к общему проводу. Сигнал инвертируется на MC14069 и подаётся на микросхему часов. Таким образом убиваются сразу два зайца - обеспечивается подача лог.1 на вход выбора часов даже при выключенном питании и обеспечивается безглючное хранение информации. После включения питания компьютера сигнал Power Good переходил в лог.1 только когда, когда все напряжения на выходах источника питания придут в норму, и компьютер начнёт работу.
В ZX-Spectrum тоже можно сделать так. А если в источнике питания нет сигнала Power Good, то эта проблема тоже решается, но об этом чуть позже.
· Третья особенность состоит в том, что процессор компьютера может получить доступ к микросхеме целыми двумя способами. Микросхема сама автоматически определяет по какому стандарту к ней обращаются и ведёт себя соответствующим образом.
Существует два стандарта обращения процессора компьютера к мкросхеме часов - стандарт "Motorola" и "Intel". Различие между ними состоит в различных способах передачи данных микросхеме.
Микросхема имеет два входа выбора режима работы - работа с адресом ячейки памяти и работа с данными, содержащимися в указанной ячейке. Это входы AS и DS. Вход AS называется "строб адреса", а вход DS называется "строб данных".
В режиме шины "Motorola" порядок обращения к микрохеме таков:
Видим, что положительным импульсом на входе AS микросхеме указывается, что на шине данных находится номер регистра, с которым мы хотим работать. А далее положительным импульсом на входе DS указываем микросхеме, что нужно прочитать или записать данные из выбранного регистра на шину данных. Режим чтение/запись определяет состояние входа R/W при положительном импульсе на DS - при лог.0 будет осуществлена запись данных с шины в микросхему.
А теперь посмотрим, как же нужно работать с микросхемой в режиме шины "Intel":
Номер регистра выбирается так же, как для шины "Motorola" - положительным импульсом на входе AS. А вот дальше идут различия. Если хотим прочитать данные из регистра, то делаем отрицательный импульс на входе DS. А если надо записать данные в регистр, то делаем отрицательный импульс на входе R/W.
Как же тогда микросхема определяет в каком режиме ей надо работать? Всё просто - дело в том, что принцип выбора номера регистра у микросхемы одинаков. И когда мы выбираем номер регистра, микросхема смотрит на состояние входа DS. Получается так - по срезу импульса AS (это когда он переходит от 1 к 0) микросхема анализирует какой уровень на входе DS. Если там лог.0, то считается, что работа идёт в режиме шины "Motorola", а если там лог.1 - то в режиме шины "Intel".
Вот так всё просто. На самом деле, очень удобно для подключения к микропроцессорным системам с различными способами адресации.