Посмотрел код этого теста...
Ничего "страшного" там не увидел, просто в режиме делителя тактовой частоты, и в одном и том-же цикле считываются значения делителя. Даже не знаю, что этим тестом можно проверить... он (ВИ53) ведь с тактовой частотой процессора от одного генератора/делителя синхрой питается... Даже если изменить общую частоту (12МГц), тест по любому должен показать эти-же самые циферки...
Или я чего-то не понимаю... ???
Тест может показать точность эмуляции самой ВИ53 и процессора (правильность длительности - в тактах, выполнения некоторых команд).
Но если в своей сборке использовать уже готовые модели (блоки/модули), то...
В доке (брошурке) на ВИ53 сказано, что новые значения для делителя принимается не сразу после записи...
Может он уже чего "медленно" считал, и не сразу на "новый режим" вышел, поэтому и сдвиг...
Exolon заработал. Пришлось написать новую модель ВИ53 с нуля.
KTSerg,
тем не менее этот тест показывает одну недокументированную особенность. Нигде в даташитах не сказано, что при работе с однобайтным счетчиком, другой байт обнуляется. Вот в модели от svofski он не обнуляется, и потому если данный тест запустить после других тестов, получаются неправильные значения, в отличие от реала.
Я в своей модели обнуляю, и тест работает всегда одинаково.
Правда, данные всё так же сдвинуты. Но это, я думаю, из-за сдвига фазы частоты таймера.
Крут. Молодца, разобрался в проблеме.
По сдвигу данных в тесте, не уверен, что фаза частоты могла бы дать такую погрешность, тут явно либо рано, либо поздно начинает считать относительно записи в него начальных значений...
Может эмуляция проца не точная, ну например команда записи в порт выполняется не положенные ей количество тактов, а в один, потом просто задержки... Ну или что-то в этом духе...
KTSerg,
Я сильно сомневаюсь в неточности модели процессора, поскольку использую модель, основанную на реверсе реального кристалла.
Я сейчас доделываю ВИ53, а потом попробую разобраться.
Может в тесте используется прерывание 50гц и этим объясняется задержка.
Не, в этом тесте первой командой идёт DI, и больше они не разрешаются. Так что в самой программе задержек ни каких не должно быть. Смущает стабильность сдвига значений, это должно однозначно на что-то указывать...
Посмотрел код теста I8253 , в нём запись и чтение значений счётчиков синхронизированы с прерываниями.
Может действительно на результат (сдвиг) прерывания как-то влияют... но это возможно только если есть какая-то ошибка в эмуляции схемы... возможно.
- - - Добавлено - - -
Попробуй ради интереса вот этот тест, загружать его нужно с адреса 0000.
Я добавил в начало ожидание прерывания и переход к тесту после прерывания.
Хотя ожидание нужно было воткнуть непосредственно перед работой с ВИ53, а так там ещё экран очищается...
Последний раз редактировалось KTSerg; 27.02.2016 в 08:50.
KTSerg,
придется изменить систему загрузки для этого теста. .c00 - это стандартное расширение для Вектора для загрузки с 0 адреса?
- - - Добавлено - - -
в общем, твой тест выдает числа начиная с 15.
- - - Добавлено - - -
подвигал я фазу частоты таймера - не помогло. Прочно начинается с 15.
Последний раз редактировалось KTSerg; 27.02.2016 в 10:38.
вот эта конструкция:
как бы не совсем понятная. Если дается комманда LATCH ( 0 -> port8 ), то согласно даташиту надо считывать 2(!) байта (ибо какой смысл делать latch для одного единственного байта), а считывается только 1 байт. В общем-то это не нарушает алгоритм моей модели, ибо при latch счетчик отправленных байтов сбрасывается.Код:L2 XOR A,A OUT (#08),A IN A,(#0B) PUSH AF DEC B JP NZ,L2
Еще один момент, который не освещен в даташите - это момент того самого latch. Непонятно когда именно происходит фиксация считываемых данных: при комманде latch или при считывании первого байта.
- - - Добавлено - - -
Я говорю что вижу на экране. На экране первое число 15 (не F). Числа шестнадцатеричные, но без h.
- - - Добавлено - - -
то же самое.
Поскольку считывание происходит сразу после программирования таймера, то очистка экрана тут неважна. Прерывания запрещены - и этого достаточно для 100% повторения.
В этом тесте программируется только младший байт счётчика и считывать старший не имеет смысла, он всегда будет 00.
Когда происходит фиксация, это ты скоро выяснишь
На счёт стандартности расширения с00 - както не задумывался, поставил "на автомате"... надо у гуру спросить где посмотреть список всех стандартных для Вектора расширений.
Разница между файлами с расширениями rom и r0m - первые грузятся с 100h, вторые с 0h.
- - - Добавлено - - -
Кстати, сейчас смотрю даташит на 82с53, там написано, что сигнал (вход) GATE влияет на счётчики (старт, рестарт и пр.), а он по схеме вектора зависит от сигнала F50Гц (КСИ)...
Может в этом собака порылась... ???
Ох ни фига-себе...
GATE на ВИ53 это системный сброс Вектора... т.е. аппаратный сброс на ВИ53 заведён, только на пересчёт во время работы он не сможет повлиять (т.к. его нет во время работы)...
Последний раз редактировалось KTSerg; 27.02.2016 в 11:12.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)