Вход

Просмотр полной версии : Плата расширения для стандартного Специалиста



CityAceE
22.09.2025, 17:40
Итак, свершилось! Теперь благодаря Serg6845 мой ЛИК может работать в двух режимах - стандартном и SP580. А благодаря AlexBel, который разработал плату расширения, и Serg6845, который её подключил.

https://pic.maxiol.com/thumbs2/1760194504.780858384.photo20250923174203.jpg (https://pic.maxiol.com/?v=1760194504.780858384.photo20250923174203.jpg&dp=2) https://pic.maxiol.com/thumbs2/1760194520.780858384.photo20250921190011.jpg (https://pic.maxiol.com/?v=1760194520.780858384.photo20250921190011.jpg&dp=2)

У моего ЛИКа теперь есть восьмицвет с заглушкой, которая не требует вмешательства в ПЗУ, SD-карта и таймер, подключенный по схеме SP580.

https://pic.maxiol.com/images2/1706715751.780858384.bi53.png

Таймер доступен из любого режима, и сидит по адресам E000-E7FF. Так вот он у меня гудит, как и в случае с MX2 (Сябр) начинает гудеть спустя полминуты и гудит так ещё полминуты, потом затихает, а через полминуты всё начинается вновь.
Сходу я воспользовался вот этой рекомендацией (https://zx-pk.ru/threads/32172-quot-spetsialist-quot-syabr-v2-sborka-naladka-obmen-informatsiej.html?p=1218097&viewfull=1#post1218097) (понятное дело, с корректировкой адреса таймера), запуская эту программу с SD. Однако гудение не замолкает, а лишь меняет тональность.

Каково же было моё удивление, когда я выяснил, что таймер гудит и в режиме SP580! Только там период звука значительно длиннее - начинает гудеть позже и гудит дольше. Неужели в Мониторе SP580 не предусмотрели инициализацию таймера? Так ведь предусмотрели! Буквально на первых же шагах запуска Загрузчика SP580 видим такое:



LF83D:
ld hl, 0xe003
ld (hl), 0x36
ld (hl), 0x76
ld (hl), 0x90
dec hl
ld (hl), 0x01
dec hl
ld (hl),0x50
ld (hl),0xc3
dec hl
ld (hl),0x10
ld (hl),0x15


Что это за странности такие? Может кто-то пояснить? А за одно рассказать как его всё-таки заглушить, чтобы не гудел.

ivagor
22.09.2025, 18:48
Если выполнить фрагмент только до
ld (hl), 0x01
включительно, то продолжает гудеть?

SegaBoy
22.09.2025, 18:58
Что это за странности такие? Может кто-то пояснить? А за одно рассказать как его всё-таки заглушить, чтобы не гудел.
Таймер гудит потому что он настроен и запущен.

Вот эта часть кода настраивает каналы:


LF83D:
ld hl, 0xe003
ld (hl), 0x36 ; канал 0 - режим 3
ld (hl), 0x76 ; канал 1 - режим 3
ld (hl), 0x90 ; канал 2 - режим 0

После его выполнения таймер молчит - потому что все каналы настроены и готовы к работе, но не проинициализированы для счёта.

А вот эта часть - поочерёдно запускает все три канала в работу:


dec hl ; канал 2
ld (hl), 0x01
dec hl ; канал 1
ld (hl),0x50
ld (hl),0xc3
dec hl ; канал 0
ld (hl),0x10
ld (hl),0x15

Все три канала получили значения для счёта в своих режимах, а установка значения и запускает канал таймера.

Чтобы таймер "молчал" надо его настроить, но не запускать счёт в каналах.

Serg6845
22.09.2025, 20:56
Что это за странности такие? Может кто-то пояснить? А за одно рассказать как его всё-таки заглушить, чтобы не гудел.

возможно аппаратная проблема... или в схеме выборки что-то не так или сам таймер не очень живой. этот код должен его заткнуть.
похоже надо будет делать второй подход к снаряду...

CityAceE
22.09.2025, 21:51
Если выполнить фрагмент только до
ld (hl), 0x01
включительно, то продолжает гудеть?


Вот эта часть кода настраивает каналы:
Если запустить код во время тишины, то да, больше гудеть не будет. Однако если запустить его во время гудения, то оно больше не остановится. Хорошо бы иметь код, который глушить ВИ53, даже в процессе гудения.


сам таймер не очень живой
Оба таймера, мне великодушно предоставил derfliegenddehollander. Я так понимаю, что они оба из одной партии. И, возможно, ведут себя особым образом, так как кроме меня, никто не жаловался на гудение в Сябре/MX2. Может быть реально с чипами что-то не так?

SegaBoy
23.09.2025, 03:49
https://pic.maxiol.com/images2/1706715751.780858384.bi53.png


CityAceE, я собрал на макетке эту схему. Логическим анализатором присел на выходы каналов ВИ53. При подаче питания на выходе канала 0 наблюдается единица, на канале 1 меандр примерно 199,9 Гц и на канале 2 единица. Судя по схеме к динамику подключён только выход канала 0 и на нём постоянно единица - если ошибок нет, то при включении ничего не должно быть слышно.
При записи в управляющий регистр значения 0х36 на канале 0 остаётся единица, после записи значения 0х76 меандр на канале 1 прекращается и устанавливается единица и после записи значения 0х90 канал 2 переходит в ноль. Если далее не посылать значения в каналы таймера, то на выходе каналов будут постоянно присутствовать значения 1 1 0. Динамик тоже должен молчать.
После посылки значений в каналы 0(0x1510), 1(0xC350) и 2(0x01), в канале 0 появляется меандр 370 Гц, в канале 1 меандр 39,9 Гц и примерно через 60 мс канал 2 переходит из нуля в единицу и тем самым выключает канал 0. Меандр в канале 1 не может быть слышен, так как его выход не подключен к динамику.
Повторная запись в управляющий регистр снова выключает все каналы. Запись значений в каналы снова запускает меандр в канале 1.

Возможно присутствует какая-то ошибка в схеме, разводке платы, в подключении или вместо канала 0 к динамику подключен канал 1.
Если же таймер не реагирует на запись в управляющий регистр и не останавливает счёт в каналах, то скорее всего он не исправен.

CityAceE
23.09.2025, 08:03
SegaBoy, спасибо за тестирование и подробное описание того, что должно быть.


Возможно присутствует какая-то ошибка в схеме, разводке платы, в подключении или вместо канала 0 к динамику подключен канал 1.

Схему разводил и паял AlexBel. Зная его дотошность, вряд ли ли он где-то ошибся:

https://pic.maxiol.com/thumbs2/1758603301.780858384.53.png (https://pic.maxiol.com/?v=1758603301.780858384.53.png&dp=2)

Нюанс в том, что у меня два одинаковых чипа ВИ53 и оба гудят при старте. Один в Сябре, второй вот теперь в ЛИКе. Судя по объяснению, ничего не должно гудеть при старте, однако ж гудит. Не могли же ошибиться сразу в двух схемах! Полагаю всё-таки, что дело именно в самих чипах.

AlexBel
23.09.2025, 08:38
Спасибо, конечно, за положительное мнение, но ошибиться я мог запросто, как и любой другой человек. И, насколько я понял, ошибки есть.
Что касается гудения, то дело, на 99% уверен, не в таймерах (они не имеют сброса и начинают выдавать сигнал сразу при включении), а в схеме, которая этот сигнал глушит до особого разрешения погудеть. Или в управлении этой схемой. Кстати, джампер X8 правильно стоит? Замыкается 1-2 или 2-3?

- - - Добавлено - - -


вместо канала 0 к динамику подключен канал 1.

Так как плата формировалась в "сквозном проекте", прямо из схемы, то и подключения на плате должны быть в соответствии со схемой. А по схеме выход звука берётся с канала 0. Джампер - для двух вариантов схемы, чтобы было проще. Но звук, всё равно, идёт с канала 0.

Serg6845
23.09.2025, 09:19
CityAceE, я собрал на макетке эту схему. Логическим анализатором присел на выходы каналов ВИ53. При подаче питания на выходе канала 0 наблюдается единица, на канале 1 меандр примерно 199,9 Гц и на канале 2 единица. Судя по схеме к динамику подключён только выход канала 0 и на нём постоянно единица - если ошибок нет, то при включении ничего не должно быть слышно.

так все правильно, при включении ничего и не слышно. но если подождать с полминуты - начнет гудеть. что впрочем вполне укладывается в наблюдаемую картину - 2МГц делится каналом 1 до (округленно) 200Гц - т.е. делится на 10000. далее если эти 200Гц поделить еще на 10000 (канал 2, для которого канал 1 являеся источником клока, в предположении что все каналы при включении ведут себя одинаково) - получим на выходе период 50 секунд - т.е. 25 сек молчим, затем 25 сек. гудим. что мы и наблюдаем в реале.
вопрос почему штатным образом не глушится.

- - - Добавлено - - -


Нюанс в том, что у меня два одинаковых чипа ВИ53 и оба гудят при старте. Один в Сябре, второй вот теперь в ЛИКе. Судя по объяснению, ничего не должно гудеть при старте, однако ж гудит.

думаю что гудеть оно может как минимум. иначе не стали бы заморачиваться тем куском кода в мониторе SP580. в даташите на таймер сказано - при включении состояние не определено, по поведению похоже что везде где можно устанавливаются 1.

CityAceE
23.09.2025, 10:14
Непонятная ситуация. У меня, как выяснилось, две абсолютно разных ВИ53 - разные года, разные производители, даже корпуса разные. И ведут себя по-разному. Я ставил обе в ЛИК. Гудение через полминуты разной тональности. На одной именно гудение, на второй больше на треск похоже. Мелодия, которую написал Олег Никитин, а озвучил ВИ53 Денис Грачёв, под Emu80 и на MX2 звучит как положено, а на ЛИКе какая-то какофония. Причём на разных ВИ53 эта какофония отличается.

В коде проигрывателя нет инициализации ВИ53. Мелодию (какофонию) можно услышать исключительно, если запускать файл во время гудения.

В MX2 оба чипа ведут себя идентично - гудят через полминуты после подачи питания. Музыку оба играют нормально, так же как и в Emu80

Можно послушать как это должно быть под Emu80. Для этого нужно в конфиг-файл spec.conf вставить, заменив соответствующую секцию:



Ppi8255 ppi1
Ppi8255 ppi2

Pit8253 pit
pit.frequency = 2000000

RkPit8253SoundSource sndSource
sndSource.pit = &pit

AddrSpace addrSpace
addrSpace.range = &ram, 0x0000, 0x8FFF
addrSpace.range = &videoRam, 0x9000, 0xBFFF
addrSpace.range = &rom, 0xC000, 0xDFFF
addrSpace.range = &pit, 0xE000, 0xE7FF
addrSpace.range = &ppi1, 0xF000, 0xF7FF
addrSpace.range = &ppi2, 0xF800, 0xFFFF


Сейчас всё выглядит так, как будто бы в схеме есть ошибка. Но почему оба чипа ведут себя в MX2 одинаково и по-разному в ЛИКе?

P.S. Естественно, что для тестов на разных платформах адреса ВИ53 в проигрывателе я меняю.

ivagor
23.09.2025, 10:14
AlexBel, респект за возможность перемычками настроить двухканальность.

CityAceE
23.09.2025, 11:27
респект за возможность перемычками настроить двухканальность.
Да, большое спасибо Алексею за это! Мы в соседней теме все вместе обсуждали как сделать правильно. И вот Алексей реализовал.
Насколько я знаю, в Emu80 именно двухканальность сделана, а не по схеме SP580. Вот бы ещё хоть какую-нибудь двухканальную музыку под это дело...

ivagor
23.09.2025, 12:16
В коде проигрывателя нет инициализации ВИ53.
Так делают или в тестах или в программах "для себя". Для "общественной" программы это совсем нехорошо, ее могут запустить и не после инициализации, а после другой программы, которая может изменить режимы каналов таймера.

AlexBel
23.09.2025, 12:22
AlexBel, респект за возможность перемычками настроить двухканальность.

Это не совсем двухканальность, у таймера, в любом случае, звук берётся с выхода 0, а перемычка определяет его дальнейший путь. Хотя, если вторым каналом считать бипер - да, можно сказать, двухканальность :)

ivagor
23.09.2025, 13:16
Я про бипер+таймер. С учетом вывода на магнитофон получается даже трехканальность, но магнитофон подается (если подается) в отдельное устройство воспроизведения, поэтому трехканальность скажем так несбалансированная.

AlexBel
23.09.2025, 13:23
Я про бипер+таймер. С учетом вывода на магнитофон получается даже трехканальность, но магнитофон подается (если подается) в отдельное устройство воспроизведения, поэтому трехканальность скажем так несбалансированная.
Стерео!:D

ivagor
23.09.2025, 14:49
Хорошо бы иметь код, который глушить ВИ53, даже в процессе гудения.
Для SP580 предлагаю такую последовательность команд

ld hl, 0xe003
ld (hl), 0x76 ; канал 1 - режим 3
ld (hl), 0x90 ; канал 2 - режим 0
ld (hl), 0x36 ; канал 0 - режим 3

после этого должно глохнуть из любого положения.

CityAceE
24.09.2025, 18:08
В общем, причина неправильного звука и отсутствие реакции на команды ВИ53 была обнаружена. На плате всё-таки содержится ошибка - порядок битов данных ВИ53, к сожалению, инвертирован. Лично я это исправить не смогу - там требуется ювелирная работа паяльника, так как эти же дорожки идут на ВВ55, к которой подключен контроллер SD.

Тем не менее протестировал таймер программной инверсией порядка битов в передаваемых данных. В итоге таймер глушится, а музыка проигрывается как задумано.

Но есть ещё одна, гораздо более серьёзная проблема, которую пока неизвестно как решать. При вставленной в панельку ВИ53 через несколько минут после начала работы компьютера начинает портится память. Происходит это после небольшого прогрева. Я запихивал компьютер в холодильник на 15 минут и он потом минут 10 работал без сбоев. Если его охлаждать до комнатной температуры, то без сбоев он работает гораздо меньше. Тест Рюмика первоначальный тест ОЗУ всегда проходит без ошибок. Но после длительного теста, в процессе которого на экран сыпется много артефактов в виде точек, всегда показывает ошибки по 6, 5, 4 и 0 битам ШД (тестировал только с одним экземпляром ВИ53). После того, как компьютер остынет, этот тест проходит без ошибок, но прогревшись ошибки появляются вновь. Точки сыпятся исключительно в местах обновления экрана. Там где картинка статична, точки не возникают. Но всё это происходит исключительно, когда вставлена ВИ53. Если чип извлечь, то компьютер работает без сбоев сколько угодно долго. Причём ошибки исчезают моментально, даже ничему остывать не нужно. С обоими чипами ВИ53, которые у меня есть, поведение одинаковое.

ivagor
24.09.2025, 20:12
ШД проца Лика без буферизации, возможно с таймером уже не тянет.

CityAceE
25.09.2025, 10:03
Одновременно с ВИ53 к компьютеру на той же плате подключена и ВВ55 для SD. Наличие или отсутствие ВВ55 никак не сказывается на появление этих глюков. Глюки возникают исключительно когда ВИ53 на месте.
Помимо родного процессора у меня есть ещё парочка. Попробовал вставлять и их тоже, но проблемы никуда не делись. Более того, с одним из процессоров, который трудится в Сябре появились ещё и цветные артефакты, то есть зацепило дополнительно и память к блоке цветности. Стало быть от экземпляра процессора тоже что-то зависит. Если менять процессор на уже разогретом компьютере, то артефакты сыпятся сразу.
Тест Рюмика с двумя моими ВИ53 и тремя процессорами всегда показывает одни и те же ошибки - по 6, 5, 4, 0 битам ШД.

CodeMaster
25.09.2025, 10:10
Глюки возникают исключительно когда ВИ53 на месте.
А если изъять ВВ55 из уравнения?

puller
25.09.2025, 12:40
Глюки возникают исключительно когда ВИ53 на месте.
Попробуйте припаять конденсатор 0.1мкФ прямо на ноги питания ВИ53.

CityAceE
25.09.2025, 19:42
А если изъять ВВ55 из уравнения?
Да, я писал, что пытался без неё тестировать - артефачит, если ВИ53 в панельке.


Попробуйте припаять конденсатор 0.1мкФ прямо на ноги питания ВИ53.
Впаял 0.22. Вроде меньше стало точек, но всё равно они никуда не делись.

puller
25.09.2025, 23:53
Надо смотреть осциллографом, что делается на выводах CS и RD ВИ53. Можно по одному отрезать эти выводы и соединять их через резистор с +5В.

CityAceE
11.10.2025, 17:35
Ну что ж, Serg6845 благополучно нашёл и устранил причину глюков памяти! Никто не был прав в своих догадках. Но, конечно, и полной картины тоже ни у кого не было. Сергей, процитируй, пожалуйста, себя сам, с картинками ;). Я думаю, что эта информация может оказаться полезной для кого-то ещё!

Serg6845
12.10.2025, 10:11
Сергей, процитируй, пожалуйста, себя сам, с картинками ;).

Ок. ну вобщем предысторию все знают - готовый ЛИК, в готовом корпусе, с готовой платой расширения, заточенной под этот корпус. поставить ее как-то по-другому - не выйдет. с точки зрения длины проводов получилось не слишком оптимально, шину данных пришлось тащить сантиметров на 30. ну да ладно, после того как у меня много лет работало вот это (это первый Ленинград, с приделанными AY8912, контроллером дисковода, 128к и конвертором в VGA) -

https://pic.maxiol.com/thumbs2/1760251194.1435348404.img20190609123500.jpg (https://pic.maxiol.com/?v=1760251194.1435348404.img20190609123500.jpg&dp=2)

- вроде и не так страшно.
подключил плату, запустил цвет, сделал переключение ПЗУ на РЕ3, потом довольно долго копался с флешкой - пересобрал загрузчик чтобы работал как на стандарте, так и на Сябре и забыл про заголовок при загрузке с ленты. таймер пока не ставил и с глюками за время ковыряния не сталкивался. в конце поставил таймер, притащил на него тактирование со 2 ноги DD10, включил-заработало. а потом выяснилось что с прогревом оно глючит. ладно, делаем второй подход.
сначала подумал что ошибся с номиналом резисторной сборки на выходах РЕ3, заменил 4.7к на 1к - не помогло. вспомнил что такты на таймер паял последними, отпаял - глюки пропали. отсюда все просто - смотрю сигналы тактирования памяти и на /RAS вижу такое (это с отпаянным клоком таймера, т.е. как оно было изначально без всех доработок)

https://pic.maxiol.com/thumbs2/1760251953.1435348404.newfile1.png (https://pic.maxiol.com/?v=1760251953.1435348404.newfile1.png&dp=2)

тыкаюсь проводком от таймера во 2 ножку DD10 - иголки становятся выше. похоже с прогревом все становится хуже, то ли они становятся еще выше то ли пороги срабатывания у м/с памяти понижаются - но в определенный момент их начинает хватать для левых срабатываний и начинаются глюки.
исследуем дальше - тыкаю пинцетом в 3 ногу DD10 - иголки пропадают.

https://pic.maxiol.com/thumbs2/1760252324.1435348404.newfile2.png (https://pic.maxiol.com/?v=1760252324.1435348404.newfile2.png&dp=2)

вобщем повесил на 3 ногу DD10 50пф на землю, посмотрел что это не привело к мусору на тактах процессора (а заодно взял клок на таймер с /RAS - те же 2МГц и на 1 провод меньше тащить на плату расширения) - и вот оно, три дня гонял, глюков нет.
да, знаю что обвешивать емкостями цифровые сигналы - плохой тон, но альтернатива - переделывать весь кусок схемы DD10-DD33 и вокруг - в данном случае не слишком приемлема.

ну там еще была бага с перевернутой шиной данных на таймере, но это чисто механическая задача - порезать дорожки и перепаять линии накрест.

CityAceE
12.10.2025, 14:02
Сергей, спасибо! Теперь есть готовое протестированное решение, которое можно подключать в любому стандартному Специалисту, добавляя ему функционал:

1. 8 цветов
2. Заглушку на НП
3. Таймер ВИ53 (SP580)
4. Переключение джампером/тумблером STD/SP580
5. SD vinxru

Неплохо было бы сейчас с учётом ошибок и доработок подготовить плату готовую для заказа в Китае. Уверен, что пригодится многим владельцам Специалистов. Правда, насколько я понял, не так просто эту плату подключать - нужно тянуть много проводов и делать разрезов на плате.
AlexBel можешь ещё чуток с платой поколдавать?