Jump to content
    

Прошу помощи в разработке энкодера колеса мыши

1 час назад, khach сказал:

Но к сожалению там чистая эмуляция без возможности отладки.

У КР580ИК80 все сигналы/шины торчат наружу. Память - тоже снаружи. Также имеются подробные описания диаграмм работы всех этих шин/сигналов.

А значит вполне возможно взять любой МК, подключиться им к шинам/сигналам КР580ИК80 и написать программу на МК, которая будет анализировать передаваемые по шинам данные, выдавать управляющие сигналы (HALT и т.п.) на КР580ИК80. И реализовать все необходимые функции отладочного эмулятора: Просмотр содержимого регистров/памяти (по захваченным и сохранённым с шин данным), breakpoint-ы (анализируя адрес выбираемой из памяти команды и остановку в нужный момент) и т.д.

Т.е. - сваять собственный J-Link для КР580ИК80.  :wink:

Если знакомый хоть немного умеет программировать микроконтроллеры (а он должен это уметь), то такое сделать несложно. Да даже на абдурине можно слепить. Если конечно овчинка стоит выделки.....

Share this post


Link to post
Share on other sites

В 17.05.2024 в 17:43, khach сказал:

Кто-нибудь знает современный аппаратный отладчик КР580ИК80 (I8080)? Знакомый мучается с ремонтом древней советской измериловки и что то сбоит в цифровой части процессора.

Если по-простому, то пишется банальная программка на 10 строк для опроса/проверки необходимого узла, подключается обычный лог-анализатор(лучше на 16 каналов) и изучается лог.

Share this post


Link to post
Share on other sites

10 минут назад, HardEgor сказал:

Если по-простому, то пишется банальная программка на 10 строк для опроса/проверки необходимого узла, подключается обычный лог-анализатор(лучше на 16 каналов) и изучается лог.

А куда программу пихать? Там вообще то однократные PROM типа RT  использованы. Лог это хорошо, но только в системе еще и прерывания есть, а они были у I8080 очень хитро реализованы как на современное время, когда опкоды на шину данных выдвавал контроллер прерываний. Вот даже выловить такое логическим анализатором не получалось нормально- ножек тупо не хватало. 8бит данные, 16- адрес, стробы записи-чтения отдельно для памяти, отдельно для портов вовда-вывода, прерывания итд. Ног ЛА  не хватало за всем следить да и триггера на события не все получалось программировать.

Вот  нашел такой аппаратный отладчик http://tauntek.com/8080-In-Circuit-Emulator.htm

Кто нибудь с таким дело имел?

Share this post


Link to post
Share on other sites

В 17.05.2024 в 20:02, khach сказал:

А куда программу пихать? Там вообще то однократные PROM типа RT  использованы.

Как обычно  - ноги CS отсоединить от PROM, сверху напаять панельку и в неё вставить flash или UVPROM. А можно и вообще всё вычитать и перепаять.

В 17.05.2024 в 20:02, khach сказал:

Ног ЛА  не хватало за всем следить да и триггера на события не все получалось программировать.

Обычно не всё адресное пространство использовалось, так что старшие адреса можно не подключать.

А можно действовать в лоб  - дизассемблировать программу и тогда можно осмысленно отлаживать.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Так надо же понять, что менять. Замена всего по очереди с тем качеством плат- прямая дорога в мусорку.  Причина обычно более менее простая- или микросхема подохла от времени, или обрыв дорожки. Но вот найти где неисправность- проблема. Вот недавно было- обрыв адресной линии, притом не по всей длине шины- ПЗУ читается правильно, а ОЗУ- происходит заворот адресации по одной из адресных линий. Поди поймай это дело. Внутренний тест ОЗУ проходит, т.к был написан по принципу 00-FF, а не псевдослучйная последовательность как в современных тестах. Понятное дело, что прошивку слили, отдизасмили, потом долго ловили где она слетает. Эмулятор программный тут полностью бесполезен, помог бы аппаратный, тот что буржуи ICE (in circuit emulator) называют. Но его небыло и долбались логическим анализатором и осциллографом цифровым.

Вторая ситуация- в системе таймер типа ВИ53- одна линия данных отвалилась. Т.е в микросхему пишется не то что надо, а чтения для проверки не предусмотрено. Логика работы прибора полностью нарушена.

Share this post


Link to post
Share on other sites

Хорошо, низкое качество и плохое состояние плат мешают замене.

А эмулятор тогда куда и как втыкать?

А если процессор и память на колодках, то что мешает замене?

Да и проблема замены DIP сильно преувеличена.

Старые микросхемы можно аккуратно отрезать в местах выхода выводов из корпуса микросхемы.

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

А для диагностики обрывов эмулятор вообще не нужен, нужны схема и мультиметр, не мне Вас учить.

Вот если память начала слетать постепенно, тогда эмулятор может помочь, не спорю.

Share this post


Link to post
Share on other sites

12 минут назад, A.V.Avtomat сказал:

А если процессор и память на колодках, то что мешает замене?

Процессор если в DIP то выпаивать, искать метрическую колодку, что уже не так и легко, и вставлять туда эмулятор. А если такой? Память ПЗУ в виде платы с РТ-шками планарными- туда ничего нового не вставить. Только полная замена платы на плату с DIP пзу-хой типа 2764 быстрой. Но это уже модификация прибора.

Прозвонка не всегда помогает- бывает что от дохлой микросхемы появляется левая подтяжка логического уровня, она видна только осциллографом. Несколько раз такое наблюдал- на шине данных один из битов подтянут веерх по уровню и логического нуля нормального нет. При этом часть источников данных шину "прожимают" до логического нуля, а часть не могут, т.к нагрузочная способность  выводов низкая и буфера типа ИР82 нет.

Вообще надо отдельную тему по ремонту ретро создавать.

ik80.jpg

Share this post


Link to post
Share on other sites

1 час назад, A.V.Avtomat сказал:

А эмулятор тогда куда и как втыкать?

Никаких "эмуляторов" никуда втыкать не надо. Я выше уже писал как можно сделать. Нужно только прочитать описание работы КР580ВМ80А.

Обнаружить в описании сигналы HLD, RDY, HLDA, WAIT. Почитать как они работают. Далее можно с помощью этих сигналов останавливать CPU на нужном адресе памяти и с помощью них же шагать по командам. Т.е. - достаточно будем поднять пару ножек CPU (или перерезать пару дорожек), чтобы врезаться в эти цепи.

Например здесь достаточно подробно описан КР580ВМ80А: https://elancev.narod.ru/texno/bm80/bm80.htm

Share this post


Link to post
Share on other sites

Шагать то можно, а вот брейкпоинты как ставить? Особенно если брейкпоинт на ввод-вывод в порт нужен. Или за указателем стека следить? Дамп память снять? Иногда это решалось программой монитора, но ее не всегда можно воткнуть в адресное пространство. У буржуев такое встречал- монитор отдельной еепроминой, контроллер прерываний имел ножку куда можно было подать сигнал от компаратора событий брекпоинта и управление улетало в монитор. Но это только один раз такая продуманная конструкция попалась, и то она была уже на 8085 проц ( 85 не 86!)

Share this post


Link to post
Share on other sites

1 час назад, khach сказал:

Шагать то можно, а вот брейкпоинты как ставить? Особенно если брейкпоинт на ввод-вывод в порт нужен.

Точно также - анализируя сигналы шин. Я выше уже писал:

В 17.05.2024 в 15:24, jcxz сказал:

И реализовать все необходимые функции отладочного эмулятора: Просмотр содержимого регистров/памяти (по захваченным и сохранённым с шин данным), breakpoint-ы (анализируя адрес выбираемой из памяти команды и остановку в нужный момент) и т.д.

КР580ВМ80 - это не МК, у него все шины торчат наружу. Можно легко детектировать моменты чтения команд из памяти и адреса, по которым они выполняются. И останавливать в нужный момент (HLD или RDY). Простой схемой из нескольких логических элементов.

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

1 час назад, khach сказал:

Или за указателем стека следить? Дамп память снять?

Смотреть регистры CPU или содержимое памяти конечно сложнее. Тут без программы не обойтись. Написать программу на каком-нибудь ARM-е, подключив его к шинам КР580ВМ80 и следить за потоком команд, эмулируя внутри ход выполнения программы. Тогда, при остановке на бряке, внутри ARM-а будет всё содержимое ОЗУ и регистров КР580ВМ80.

Но вот просто остановить на каком-то адресе - достаточно простой схемки из нескольких логических элементов.

 

PS: Когда-то в середине 90-хх, будучи студиоузом, я придумал и спаял RAM-диск (на 256КБ) для своего тогдашнего домашнего компа на КР580ВМ80. "Контроллер" этого диска был построен на всего 4 или 5 простых логических ИС (логика, триггеры, 8-разрядный регистр вроде был). Он был подключен к шинам КР580ВМ80, перехватывал команды, выбираемые процессором из ОЗУ и, обнаружив определённый код команды (один из неиспользуемых кодов команд), переключал обращение к штатному ОЗУ компа на обращение к моему диску. Таким образом, чтобы прочитать или записать байт на этот диск, нужно было выполнить любую команду с операндом M, перед которой поставить этот код неиспользуемой команды. Помню, что встроить этот контроллер в шину КР580ВМ80 было несложно. Даже для студента всего недолго знакомого с электроникой. Почти все нужные сигналы там уже были.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...