i8255

8-битные микроконтроллеры и микропроцессоры от Intel и их клоны, а также компьютеры на них построенные

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

i8255

Post by Lavr »

Заинтересовала меня тут одна ситуация с нашим популярнейшим 55-м портом (КР580ВВ55А aka i8255).

Так, судя по известной по всем мануалам таблице, Регистр Управляющего Слова читать нельзя.
i8255.gif
Вопрос у меня возник, а что же всё-таки прочитается, если его прочитать?

Вопрос не праздный, в частности, такая ситуация может возникнуть, если в компьютере порты
включены, как ячейки памяти, и мы делаем дамп памяти по этим адресам...
Что считается из Регистра Управляющего Слова i8255?

Жалко, я свой "Специалист_МХ" обратно запрятал... :-? Но может быть кто-либо из своего опыта
знает ответ?
You do not have the required permissions to view the files attached to this post.
iLavr
VGrad
Maniac
Posts: 208
Joined: 18 Nov 2013 15:15
Location: все оттуда ;)

Re: i8255

Post by VGrad »

Ссылка из педивикии на intel у меня не открывается :( http://download.intel.com/design/archiv ... 125604.pdf

А вот альтернативные http://www.sharpmz.org/download/82c55a.pdf и datasheet.hk/view_online.php?id=1135008&file=0005\8255a_38897.pdf гласят, что читается Control word !

Плата с 55 портом в наличии есть. А материнки с ISA, что бы поэкспериментировать увы ....
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: i8255

Post by Lavr »

Ситуация такова, что даташиты хоть от Intel, хоть сторонние её не проясняют, иначе бы я и не спрашивал.

Из оригинального даташита на i8255A: Datasheet.hk_8255a_38897.pdf
i8255A.gif
Видим, что операция чтения из Регистра Управляющего Слова трактуется как Illegal Condition.

Но реально, оттуда что-то читается, ситуация возникла в реальных условиях на макете -
что-то из Регистра Управляющего Слова читается, и, похоже, не то, что я предполагаю.

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


Ну а с 82С55 - ситуация как с таймерами ВИ53\54: у ВИ53 регистр настройки также не читается,
а у ВИ54 - регистр настройки прочитать можно.
82C55.gif
Отсюда один вывод, который мне ничего не проясняет: 82С55 - это модернизированный i8255A.

Но меня интересует, что же читается вот в тот самый момент, который трактуют как Illegal Condition.
И ситуация ещё интересней, Регистр Управляющего Слова у меня читается сразу после сброса
и процессора и порта, когда в него ещё ничего и не успели записать... :roll:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Re: i8255

Post by VituZz »

Могу на "Орионе" в М256 почитать РУС какого-нибудь ВВ55-го. Надо?
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: i8255

Post by Lavr »

VituZz wrote:Могу на "Орионе" в М256 почитать РУС какого-нибудь ВВ55-го. Надо?
Неудобно было просить, но это было бы просто великолепно, чтобы потом можно было сравнить:
что прочиталось из РУС у тебя на "Орионе", что прочитается у меня на моём макете.

И если не затруднит PVV - тоже попрошу прочитать РУС КР580ВВ55А на его "Специалисте".


P.S. К сожалению состояние подготовки к ремонту в доме вынуждает всё заворачивать в целофан
и прятать. Иначе бы я и на своем "Специалисте" РУС порта ВВ55 прочитал...
iLavr
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Re: i8255

Post by VituZz »

Не стал разбираться, что там к чему, просто посчитывал и позаписывал по адресу F603h, где, если мне память не изменяет, находится РУС третьего ВВ55 в "Орионе". Ну, как бы это сказать, что-то читается... :-) После включения там 40h, если же попробовать писать туда разные значения, то считывается в основном 20h, но может быть и 80h, и A0h. Считывается не то, что пишется, и зависит, видимо, от того, что записал туда ранее. Если что-то конкретное надо посмотреть-позаписывать, то я могу, мне это не тяжко... :-)

Использовал EDMEM, не M256. Им оказалось удобнее и сильно быстрее. Может, что не так делал?
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: i8255

Post by Lavr »

VituZz wrote:После включения там 40h, если же попробовать писать туда разные значения, то считывается в основном 20h, но может быть и 80h, и A0h. Считывается не то, что пишется, и зависит, видимо, от того, что записал туда ранее.
Я что-то такое подозревал... что считывается, возможно, разный код.

У меня ситуация вот какая: в процессе отладки микропроцессор "наезжает" на область портов,
поскольку они включены, как ячейки памяти, и исполняет считанные из портов байты как код.
Вместо всей остальной памяти процессор исполняет NOP из резисторов на ШД.

Известно, что при подаче сигнала начального сброса RESET регистр управляющего слова ВВ55
устанавливается в состояние, при котором все каналы настраиваются на работу в режиме 0
на ввод информации.
Поэтому, из портов А, В, С микропроцессор читает то, что я ему резисторами снаружи подставил. :wink:
А вот что он выполняет, читая РУС, я могу сейчас только догадываться - но по осциллограммам
вижу, что точно не NOP и не одно и то же...
iLavr
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: i8255

Post by PVV »

Я выполнил такую команду:
DF800,F8FF
и получил вывод вида:
00 FB 00 FB 00 FB 00 FB 00 FF 00 FF 00 FF...
если нажимать кнопки на клавиатуре во время вывода, то значение FF меняется и повторяется четное число раз. Такое впечатление, что из адреса управляющего слова считывается предыдущее значение регистра, настроенного на ввод... мс КР580ВВ55 91го года выпуска...
petrenko
Doomed
Posts: 598
Joined: 10 Mar 2012 16:21
Location: РФ

Re: i8255

Post by petrenko »

Хм .. Однако интересно всё сие ..
А у моей самоделки не получится прочитать по адресу У(правляющего)С(лова) .
У меня дешифратор для RD&{A0,A1==1,1} отдельный регистр ввода выбирает.
( потому как нечего пропадать даже одному адресу адресного пространства )
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: i8255

Post by Lavr »

Ну и поскольку я доделал свою "махарайку" (как говорит Tronix :lol: ), я решил для себя прояснить
этот вопрос, который сама же "махарайка" передо мной и поставила:
Что же считается из Регистра Управляющего Слова i8255 (aka КР580ВВ55А) сразу после
включения питания, когда в РУС еще ничего не записывали?


По включению питания у меня пошагово отработала следующая программа:

Code: Select all

0000:
   JMP 0F003H; переход в "ПЗУ" (реально это порт А ППА, через который от LPT PC подаются эти коды)
F003:
   IN  0FCH;   выключить стартовую карту памяти
   LDA 0FFFFH; считаем РУС
   MOV B,A;    сохраним в B
   MVI A,92H;  PORT INI WORD
;-------- A - на ввод (по нему и поступают коды)
;-------- B - на ввод - не используем
;-------- C - на вЫвод (8 светодиодов индикации)
   STA 0FFFF;  настроим порт ВВ55
   STA 0FF7F;  вЫвод в C = 92H (убедимся что порт настроен правильно)
   MOV A,B;    восстановим состояние РУС по включению
   STA 0FF7F;  вЫвод значения РУС в C
   LDA 0FFFFH; снова считаем РУС (там записано 92H)
   STA 0FF7F;  вЫвод значения РУС в C
   HLT;        остановим процессор
У меня получилось, что после включения питания в РУС находится 00H.

Но и после того как ППА был настроен Управляющим словом 92H, из РУС всё равно читается 00H.
(Понятно, что читается "с адреса" РУС, поскольку как реагирует ППА на "запрещенное" чтение - неизвестно.)

Аппаратно эксперимент чистый: D0...D7 процессора напрямую соединены с D0...D7 ППА, никаких
резисторов или шинных формирователей - нет.
Выдаваемое процессором на D0...D7 слово состояния мешать не должно, программа выполняется
пошагово и значение STATUS должно успеть "рассосаться" на ШД.

ППА типа КР580ВВ55А 8804.
iLavr
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Re: i8255

Post by VituZz »

Для чистоты эксперимента можно попробовать порты разных заводов и годов выпуска.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: i8255

Post by Lavr »

Мне пока представляется следующее (как предположение): сам порт К580ВВ55А по обращению
в Регистр Управляющего Слова не выдает ничего, похоже, что Z-состояние на ШД. А проц читает
то, "что случилось" в этот момент на ШД.

Вы оба делаете дамп памяти по портам ППА, т.е. серию чтений подряд, поэтому у вас есть какие-то
значения, и они разные, поскольку у вас разные компьютеры, а значит и разная ситуация на ШД.

А я читаю РУС медленно в пошаговом режиме, поэтому шина успевает разрядиться и у меня читается 00H.
Вот такое пока предположение...
iLavr
User avatar
Black_Cat
Doomed
Posts: 455
Joined: 23 Nov 2007 15:53
Location: Saint Petersburg, Russia

Re: i8255

Post by Black_Cat »

Ну так что в итоге решили, открывает 8255 буфера на шину данных при чтении регистра управления, или нет?
"Очень трудно найти чёрную кошку в тёмной комнате... особенно, если её там нет.", "Forever!". :wink:
zx.clan.su - Soviet Union ZX Spectrum Community - форум посвящённый развитию Спека.
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: i8255

Post by Alikberov »

У меня выдаёт два значения - FE и FF.
Andy6zx
Fanat
Posts: 54
Joined: 22 Apr 2015 06:56
Location: Киров

Re: i8255

Post by Andy6zx »

Всем доброго. Чтобы не плодить сущности спрошу в этой теме. Кто нибудь использовал КР580ВВ55А в режиме 1?
Поясню, В режиме 1 порт А используется для ввода 8 разрядного слова по сигналу /STB, который подаётся на С4. При этом с С5 и С3 выаются сигналы /IBF и INTR. В КР580ВВ55А порт С разбит на две тетрады С0-С3 и С4-С7, которые можно независимо запрограммировать на ввод или на вывод. Получается, что в режиме 1 сигналы управления для порта А используют выводы и одной и другой тетрады - т.е. этими ножками программно произвольно рулить уже не получиться. Если порт В одновременно запрграммировать в режим 0, то соответствующие ему ноги управления в младшей тетраде С0, С1 и С2 будут свободны и ими можно программно рулить или на ввод или на вывод. В старшей тетраде заняты С4 и С5, можно ли управлять С6 и С7 так же на ввод или вывод?