"Аюша" 6502 SBC - RTC Часы реального времени.

 

 

Схема часов реального времени на основе микросхемы MM58167AN производства National Semiconductor была взята "как есть" из статьи "Everyone Can Know The Real Time", автор Steve Ciarcia, опубликованную в журнале BYTE, vol.7, num.5, май, 1982 год. Я даже схему особо не корректировал, она мало отличается от даташита. На транзисторах собран триггер Шмитта, отключающий узел от основной схемы при падении напряжения, после чего питание переводится на встроенную батарею. Одновременно микросхема, выводом 23, "следит" за состоянием питания и, при пропадании основного, переходит в ждущий режим (в котором, тем не менее, есть возможность срабатывания встроенного будильника, дабы включить прибор при необходимости - вывод 14 с открытым коллектором - пока не используется). С 13 вывода возможна передача сигнала срабатывания на шину IRQ контроллера - ставим перемычку, если это требуется.

Выбор микросхемы осуществляется чип-селектом CS0. Как было отмечено ранее, этот чип-селект критичен к первой используемой ячейке ВС00Н (48128D), поскольку встроенный Бейсик, при проверке доступного пространства памяти, записывает число 36Н во все ячейки и затем читает записанное. Если числа совпадают, то это значит, что это ячейка стандартной памяти, если числа разные - то память закончилась на ячейку ранее. В нашем случае ячейка ВС00Н (48128D) есть счётчик миллисекунд, у которой старший ниббл всегда равен нулю. Поэтому, что бы не записывали в эту ячейку, к моменту чтения значение в ней однозначно изменится и никогда не будет равным 36Н - что нам и надо. Изменением числа миллисекунд на 6 при "холодном" старте можно пренебречь. Исходя из этого и было решено поставить микросхему RTC в начало адресного пространства устройств ввода-вывода.

Назначение ячеек памяти микросхемы описано в карте памяти контроллера на странице основной схемы.

Использование часов реального времени очень просто. Командой PRINT РЕЕК(addr), где addr от 48128 до 48135, мы можем прочитать текущее время из счётчиков микросхемы. Предварительно мы можем установить время командой POKE addr,value. Также, если нам нужно срабатывание "будильника" в определённое время, теми же самыми командами записываем дату и время срабатывания в ячейки памяти, где addr уже будет изменяться от 48136 до 48143. Можно установить "точное время по началу шестого сигнала", стартанув счёт записью единицы в ячейку 48149.

Однако есть небольшое затруднение. Дело в том, что встроенный Бейсик оперирует с десятичными числами, а микросхема RTC - с двоично-десятичными. Значит, при чтении и записи ячеек необходимо осуществлять перевод величин. Тут нам очень поможет тот факт, что максимальная величина ниббла будет числом 9, таким образом можно переводить не в двоично-десятичную форму, а в шестнадцатеричную. Хотя, если вы предложите иной алгоритм, - сообщите об этом.

В качестве основы возьмём программу конвертирования десятичного числа в шестнадцатеричную строку и напишем программу чтения из ячеек RTC.

 

5 REM читаем по очереди из ячеек минуты, часы, день недели, день месяца, месяц

10 M1=PEEK(48131)
20 H1=PEEK(48132)
30 DW=PEEK(48133)
40 DM=PEEK(48134)
50 MN=PEEK(48135)
60 PRINT"MONTH=";:N=MN:GOSUB1100:REM конвертируем месяц
70 PRINT"DAY OF MONTH=";:N=DM:GOSUB1100:REM конвертируем день месяца
80PRINT"DAY OF WEEK=";:N=DW:GOSUB1100:REM конвертируем день недели
90PRINT"HOUR=";:N=H1:GOSUB1100:REM конвертируем часы
100PRINT"MIN=";:N=M1:GOSUB1100:REM конвертируем минуты
120 END
1100 REM DEC2HEX-программа конвертирования
1110 A$=""
1120 L=INT(N/16)
1130 M=N-16*L
1140 IF M<10 THEN 1160
1150 M=M+7
1160 N=L:A$=CHR$(M+48)+A$
1170 IF N>=1 THEN 1120
1180 PRINT A$:REM печатаем сконвертированную строку
1190 RETURN

 

Для записи в ячейки проводим обратные действия.

Таким образом "Аюша" из обычного контроллера всё больше приближается к контроллерам реального времени, позволяющим применять его в сложных системах, типа охранных или "умной избы" ;) Только не забываем, что эта микросхема даже не подозревает о таких катаклизмах, как перевод времени, високосные феврали и наличия такой единицы измерения времени, как год.

 

Ну и фото готовой конструкции. Обратную сторону платы не фотографировал, ибо там тот же моток МГТФ.

 

И в корпусе, в сборе.

 

 

Замечено, что нормальная работа с микросхемой RTC возможна только при тактовой частоте процессора не выше 1 МГц. При 2 МГц ответ всегда FFH. Скорее всего это связано с медленным ответом чипа на раздражители, что, в принципе, отражено в даташите.

 

 

На главную/Index