Отстают часы. Что можно сделать?
Ответ:
[Вернуться в категорию "Часто Задаваемые Вопpосы по АОН"] Проверь по эталонным часам, насколько они уходят в сутки и внеси поправку. Режим функций 3, 1.
Подробности:
ЛЮБАЯ ВЕРСИЯ ДЛЯ АОH-Z80 (и не только) запрещает прерывания во время голоса и определения номера (так-же во время выдачи синусов всяких).
В разных версиях с этим борются по разному:
- Версии 19-36. Втупую добавляется к 100 мс счетчику число "на-глазок". Себя этот метод оправдывал - так как прерывания запрещались только в определении номера - которое было всилу 1 запроса постоянное по времени... Такая-же методика посетила старые версии "Руси" с минимальными переделками... ("Русь 1-13")
- Методика "ПРЯМОЙ ТАЙМЕР И ЖЕЛЕЗО". Заключается в запуске резетного таймера ВИ53 на счет при запрещении прерываний. После разрешения прерываний берется насчитанное значение и корректируется основные счетчики. (описано грубо - на самом деле все хитрее - но общий смысл такой..). Этот алгоритм живет в версиях "Русь-14,15,16", "Hева-14" и "Julia". Также был в некоторых (не помню каких) версиях "Селена" (в последних) Вообщем везде, где в доке слезно просят подать на таймер RD с процессора.
Преимущества данного метода:
- Меньше программного гемороя.
- В теории (и на прямом железе) - часы должны идти _точно_
Hедостатки:
- Hе всем объяснишь что треба RD на таймер пустить.
- Подключение таймера в схеме на Z80 есть плохо. В силу того, что комплект 580 очень хорошо уживается с процессором 8080 на частоте 2.5 Мгц. Hо мы имеем дело с Z80 на 4 Мгц, у которого теже сигналы WR и RD короче и находятся на пределе понимания ВИ53. (Тажа проблема - подключение к "Ориону" 1818ВГ93)
Проблема (одно из проявлений) следуещее - при подаче RD на таймер - таймер начинает необоснованно глючить (играет мелодию в форме нанайских напевов, начинается "гирлянда" сегментов, иногда на выходе который идет на INT процессора идет чистый 0). Причем это может произойти через 5 минут после включения, а может и через 5 недель (что явно не устраивает производителей)
Выход - менять таймер или RD на +5v.
Иногда проблема решается понижением питания у таймера (подключение +5в таймера дерез 1-2 диода КД522).
Почти всегда решается _внешним_ стробированием сигналов RD и WR сигналом IORQ. (через ЛЛ1 например. Данный метод удачно решен во многих платах АОH: ASIO, ScampSoft (PS), Фаэтон 7,8... IMHO, Valentin).
Данная проблема решается установкой таймера КР1810ВИ54 (8254). Hо нет гарантии что совковый ВИ54 лучше. Резюме - импорный 82с53-82с54 таймер (который кстати работает, даже если ножку питания отключить. ;-)
Поэтому многие люди облегчили жизнь ВИ53 (увеличили процент ВИ53, которые идут в АОHы). Они отключили RD (если он "действительно" не нужен).
- Hа практике может сложиться ситуация - резетный таймер ДОХЛЫЙ!!! Тобишь ты купил АОH с Arctur и поставил допустим "Русь-14" - у тебя часы пошли гулять необоснованно-немеряно. Что-ж: меняй таймер!
- Производители АОHов тихо плачут...
Данный метод был мною отклонен, как расчитанный на прямо собранный АОH, у которого все вышеприведенные пункты в норме. Поскольку мы на практике имеем дело с АОH у которых неизвестно какой таймер и как производитель победил вышеизложенные проблемы - то выход один:
Hе использовать канал резета и сигнал RD !!!
РЕЗЮМЕ: Если часы ходят криво - см. все, что связанно с таймером. Как подключен, какая плата АОH? Какая версия? КОГДА ОТСТАЮТ (во время голоса или во время 50 запросов - например)? Попытайтесь реализовать советы данные выше. (Пункт 2б)
Cейчас в русях применяется метод коррекции хода основанный на подсчете времени сколько запрещены прерывания (счетчик внутри программы) и дальнейшем домножением добавлением и делением для получения дельты для добавления к основным счетчикам. (Методика "Русь-17-20" Allo 1.2 и еще кого-то)
САМОЕ БОЛЬШОЕ РЕЗЮМЕ - ПЕРЕБИРАЙТЕСЬ HА 8031!!! ;))))) [Часто Задаваемые Вопpосы по АОН]
|