Найти в Дзене

Орион-128. Программное получение частоты процессора.

Всех приветствую! При разработке программ, как правило это в 90% случаях программаторы, очень важно соблюдать длительности управляющих сигналов, иначе результаты работы будут отрицательными. Либо в играх, чтобы соблюсти определённую игровую динамику, необходимо в программных циклах делать задержки, чтобы игрок успевал за игровым сюжетом. Для этого программисты "привязывают" свои расчёты под текущую тактовую частоту процессора. До последнего времени на Орионе-128 с процессором КР580ВМ80А это была частота 2.5 МГц. Но время идёт, компьютер развивается. И уже на сегодняшний день вместо процессора КР580ВМ80А можно поставить ИМ1821ВМ85 или Z80 с разными рабочими более высокими частотами. Нетрудно представить "весёлую" ситуацию, если к примеру игра Тетрис, написанная под КР580ВМ80А с частотой 2.5 МГц, запустится на Орионе с процессором Z80 на частоте 10 МГц. Поэтому не логично ли написать такой Тетрис, который бы одинаково работал как на частоте 2.5 МГц, так и на 5 МГц, так и на 10 МГц. Для э

Всех приветствую!

При разработке программ, как правило это в 90% случаях программаторы, очень важно соблюдать длительности управляющих сигналов, иначе результаты работы будут отрицательными. Либо в играх, чтобы соблюсти определённую игровую динамику, необходимо в программных циклах делать задержки, чтобы игрок успевал за игровым сюжетом. Для этого программисты "привязывают" свои расчёты под текущую тактовую частоту процессора. До последнего времени на Орионе-128 с процессором КР580ВМ80А это была частота 2.5 МГц. Но время идёт, компьютер развивается. И уже на сегодняшний день вместо процессора КР580ВМ80А можно поставить ИМ1821ВМ85 или Z80 с разными рабочими более высокими частотами. Нетрудно представить "весёлую" ситуацию, если к примеру игра Тетрис, написанная под КР580ВМ80А с частотой 2.5 МГц, запустится на Орионе с процессором Z80 на частоте 10 МГц. Поэтому не логично ли написать такой Тетрис, который бы одинаково работал как на частоте 2.5 МГц, так и на 5 МГц, так и на 10 МГц. Для этого программа должна определить, на какой частоте происходит работа и внести в своём теле необходимые корректировки. Но как посчитать тактовую частоту, на которой в данный момент работает процессор? На отечественных восьмибитных компьютерах в базовой конфигурации такой возможности нет. Но что если применить аппаратные средства, которые смогут это сделать самостоятельно? И по запросу программиста выдадут эти данные?

Для этого и было разработано данное устройство. Схема его представлена ниже:

Работает устройство следующим образом.
При включении или перезагрузке компьютера на вход J1 поступает частота, которую берут с тактовой ноги микропроцессора. Подключается отдельным проводом. На счётчиках D3, D4, D5:A, элементах D7 и D10:A собран делитель частоты на 100 000, в результате счётчики D5:B и D6:A считают основной порядок тактовой частоты процессора. Через одну секунду после включения микроконтроллер D9 защёлкивает в регистре D8 показания и прекращает свою работу. В результате регистр D8 хранит показания текущей частоты процессора до выключения или перезагрузки компьютера.

Регистр D8 имеет адрес /F732h и выдаёт содержимое в HEX-виде, равное тактовой частоте процессора, делённой на 100 000. Т.е. если тактовая частота равна, например, 2.5 МГц, то на выходе регистра прочитается код 19h (в десятичном виде 25), если 5 МГЦ, то 32h, а если 10 МГц, то 64h.

Для сборки данного устройства нам понадобится примерно такой набор комплектующих:

-2

Как видно из фото, вся схема прекрасно умещается в размер макетной платы размерами 100х50мм. Вот так выглядит собранное устройство:

-3
-4

Подключаем к компьютеру. Провод для измерения частоты подключаем к тактовому входу процессора.

-5

У меня собран вариант компьютера с процессором Z80, работающий на частоте 10 МГц. Поэтому этот провод я подключил к 6 ноге процессора.

Определение рабочей частоты, как вы уже поняли, сводится всего к одной команде: LDA 0F732H. Останется только определиться, что с этими данными делать. Для вывода на экран понадобится подпрограмма преобразования из HEX-вида в DEC-вид. Вот как это выглядит у меня:

-6

Демо-программа (прилагается в архиве в конце статьи) работает как с ОС ОРДОС, так и с ОС ДСДОС.

Немного о микроконтроллере.
При прошивке будьте внимательны с фьюзами. Необходимо отключить фьюз CKDIV8, как показано на рисунке. Остальные фьюзы не трогать.

На рисунке показаны положения фьюзов для программатора Т48.
На рисунке показаны положения фьюзов для программатора Т48.

На этом, пожалуй, всё.
После сборки устройство в налаживании не нуждается.
Печатная плата не разрабатывалась.

Все материалы, включая исходные тексты программ и прошивки для микроконтроллера, можно скачать по ссылке https://disk.yandex.ru/d/1lKBEVDWs-Q_HQ

До новых встреч!