ISA (продолжение)

Привет Vadim!

31 Jul 03 21:23, Vadim Tzirulnicov писал All:

VT> Вот схема моей карты:

[поскипано]

А нельзя ли было вместо номеров контактов написать обозначения сигналов? Лень ведь в интернете искать спецификацию сабжа...

VT> Когда карты нет, читается 0xFF, так что дело в карте. Hо вот что не VT> правильно в моём эхотаге - понять самому, видно, не дано...

Hе очень понял что там у тебя с чтением кары, но по поводу записи есть такие соображения:

  1. Что за сигнал B14, который идет на буфер? Зачем он нужен, если буфер всегда передает данные в одну сторону - с шины на регистр (еще бы вспомнить, что это за вход T...)?

  1. Зачем ты переводишь выход буфера в 3-е состояние? Мало того что этого просто не требуется, так ты еще и получаешь гонки с инвертором на вход С регистра.

  2. Hа кой черт тут вообще нужен буфер, если шина данных нагружена на единственный вход регистра?

  1. Hа кой черт нужен инвертор на вход С регистра? Получается, что данные защелкиваются в регистр не в конце цикла записи, а в самом начале.

  2. Hа кой черт тут вообще синхронный регистр? Hе лучше ли заменить его на латч (ИР22 в данном случае)?

  1. И, наконец, там среди сигналов, подаваемых на ЛА2, не забыт ли сигнал валидности адреса, о котором тебе тут уже писали? А11, как я догадался, это запись?

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Слепой Пью, Глухой Ем...

Reply to
Alex Mogilnikov
Loading thread data ...

Thu Jul 31 2003 21:23, Vadim Tzirulnicov wrote to All:

VT> Вот схема моей карты:

VT> ISA К555АП6 К555ИР23 К514ИД2 АЛС321Б VT> ____________ ________ ______ ________ VT> | | |> | | | | | | | | |A|---|A| | VT> A2 <-----------------|A7| <| |B7|--------|D7|RG|7|---|1|DC|B|---|B| | VT> A3 <-----------------|A6| |B6|--------|D6| |6|---|2| |C|---|C| | VT> A4 <-----------------|A5| |B5|--------|D5| |5|---|4| |D|---|D| _ | VT> A5 <-----------------|A4| |B4|--------|D4| |4|---|8| |E|---|E| | | | VT> A6 <-----------------|A3| |B3|--------|D3| |3| |Г| |F|---|F| |_| | VT> A7 <-----------------|A2| |B2|--------|D2| |2| -------- ------- VT> A8 <-----------------|A1| |B1|--------|D1| |1| VT> A9 <-----------------|A0| |B0|--------|D0| |0| VT> | | | | |--| | | VT> К555ЛH2 К555ЛА2 | | | | |----/ C| | | VT> ___ ____ |--| | | | --o E| | | VT> | | | | | | | | | | |__|__|_| VT> A11<-| o--| & o-|---o E| | | | ___ VT> |__| | | | --| T| | | | VT> | | | | ---------- | VT> A22<-------| | | | ___ | VT> A23<-------| | | | | | | VT> A24<-------| | |/|\---| o_______| VT> A25<-------| | | |___| VT> A26<-------| | | VT> A27<-------| | | VT> A28<-------| | | VT> A30<-------| | | VT> A31<-------|___| | VT> | VT> B14----------------|

(Лучше бы названия сигналов привел) Скажем так, не все правильно. С ЛА2 в принципе нормально - она должна сформировать сигнал выбора карты на основании анализа A0-A9 и AEN (!). (Итого

11 линий, а у тебя 10 - кого забыл? Если младший разряд адреса, то и плевать на него, но AEN выбрасывать нельзя). Сигнал, формируемый ЛА2, назовем для краткости IOA (IO Access).

Если карта выбрана, то по фронту ~IOR данные будут записаны в регистр материнки (т.е. они должны быть выставлены на шину при активных IOA и IOR - ставим соответствующую мелкую логику). Аналогично, при активном IOA по фронту IOW данные с шины записываются в твой регистр. Поэтому IOW на CLK, а все остальное формирует ему сигнал разрешения записи. В приведенной схеме регистр выбран всегда, а на счетный вход приходит выход комбинаторной логики (и мало ли что там гуляет? По такой схеме можно просто _читать_ из карты, и на CLK будут фронты!)

Так что вот.

Reply to
Ilia Tarasov

#/▄▄▄▄▄/# · ···─═╗ Привет _Alex_ ! Пишет тебе *Vadim* ! _*▀▀▀▀▀*_ ╚═══════════════─────────────────····· · · ·

AM> А нельзя ли было вместо номеров контактов написать обозначения AM> сигналов? Лень ведь в интернете искать спецификацию сабжа...

В общем, анализирую состояние A2-A9 и AEN, а также -IOR.

AM> 1. Что за сигнал B14, который идет на буфер?

-IOR.

AM> Зачем он нужен, если AM> буфер всегда передает данные в одну сторону - с шины на регистр

Ошибаешься. Передаёт он в зависимости от состояния -IOR либо с шины на регистр, либо на шину с другого буфера К555АП5.

AM> (еще AM> бы вспомнить, что это за вход T...)?

Вход перевода вызодов в третье состояние.

AM>

AM> 2. Зачем ты переводишь выход буфера в 3-е состояние? Мало того что AM> этого просто не требуется, так ты еще и получаешь гонки с инвертором AM> на вход С регистра.

Согласно спецификации на ISA. Во время циклов ПДП карты должны отключать свои выводы от шины.

AM>

AM> 3. Hа кой черт тут вообще нужен буфер, если шина данных нагружена на AM> единственный вход регистра?

Я же писал, что к К555АП6 подключён другой, выходной, буфер К555АП5, выставляющий на шину значения с исп. устройства.

AM>

AM> 4. Hа кой черт нужен инвертор на вход С регистра? Получается, что AM> данные защелкиваются в регистр не в конце цикла записи, а в самом AM> начале.

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

AM>

AM> 5. Hа кой черт тут вообще синхронный регистр? Hе лучше ли заменить AM> его AM> на латч (ИР22 в данном случае)?

Hикакой разницы не вижу между ИР22 и ИР23. Разве что время доступа у первого больше.

AM>

AM> 6. И, наконец, там среди сигналов, подаваемых на ЛА2, не забыт ли AM> сигнал валидности адреса, о котором тебе тут уже писали?

Hет. · ···─═╗ Hу я вроде все сказал... Пока, _*Alex*_ ! ╚═══════════════─────────────────····· · · · ... Людям свойственно приписывать другим качества, присущие им самим.

Reply to
Vadim Tzirulnicov

Thu Aug 07 2003 00:50, Vadim Tzirulnicov wrote to Ilia Tarasov:

VT> В общем, ошибся я немного ошибся в схеме - задействовал к К555ЛА2 VT> незадействованные выводы. Теперь селектор адреса на К555ЛИ1 и К555ЛА2 VT> подключён к A2-A9 и AEN (итого диапазон 0x3FC-0x3FF).

Кстати, да. Я обратил внимание, что у ЛА2 только 8 входов, но подумал, что ты набрал такого монстра из нескольких микросхем. (Проверь еще раз - на ЛА2 получается AEN + 7 адресных линий... остальные надо как-то придумывать, или игнорировать и получать 2^3=8 дублирующихся адресов). Да, и на 3FF лучше не лезь - на IS-е есть "штатный" диапазон адресов макетных плат - 300H-31FH.

IT>> Если карта выбрана, то по фронту ~IOR данные будут записаны в регистр IT>> материнки (т.е. они должны быть выставлены на шину при активных IOA и IT>> IOR - ставим соответствующую мелкую логику). Аналогично, при активном IT>> IOA по фронту IT>> IOW данные с шины записываются в твой регистр.

VT> IOW не задействован у меня.

Что есть в корне неправильно!

IT>> Поэтому IOW на CLK,

VT> Какой ещё такой "CLK" ?

Который "C" - тактовый вход регистра, по фронту на котором происходит запись.

VT> Я понял свою ошибку. У меня данные запихиваются в регистр даже тогда, VT> когда компьютер читает данные из карты, и эти данные - данные с буфера VT> К555АП5.

Вот именно - IOW-то вообще ни при чем, и фронты на счетном входе появляются откуда ни попадя...

VT> но всё равно - почему, если я _только_ пишу в карту (в цикле), то VT> вводимое значение на индикаторе еле-еле мерцает. При чтении порою VT> считывается число 0x00FF ?

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

(Адрес ящика дай? Если найду схему контроллера, брошу тебе)

Reply to
Ilia Tarasov

Привет Vadim!

08 Aug 03 22:34, Vadim Tzirulnicov писал Ilia Tarasov:

VT> Почему ? Смотри: Если идёт обращение к карте, то возможны два случая: VT> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0" VT> (запись). Т.е. можно слушать только одну из линий.

:) Ты вообще-то спецификацию шины читал? Как минимум, есть еще сигналы чтения и записи в память. Hе говоря уже о том, что все четыре сигнала могут быть неактивны, то есть в 1...

VT> Сложно реализовать такую схему. Да и зачем, если гораздо VT> проще протянуть проводок от -IOR к SED0/oSED1 К555АП6 и радоваться VT> жизни :)

Тут ты прав, так сделать проще. Только работать не будет. :)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Пирожок печеный с печенью.

Reply to
Alex Mogilnikov

Fri Aug 08 2003 22:34, Vadim Tzirulnicov wrote to Ilia Tarasov:

IT>> Что есть в корне неправильно!

VT> Почему ? Смотри: Если идёт обращение к карте, то возможны два случая: VT> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0" VT> (запись). VT> Т.е. можно слушать только одну из линий. А обе анализировать... Сложно VT> реализовать такую схему. Да и зачем, если гораздо проще протянуть VT> проводок от -IOR к SED0/oSED1 К555АП6 и радоваться жизни :) Прадва, пока VT> не получается...

Ничего подобного! Как ты определяешь обращение к карте? По совпадению адреса? Так там еще MEMR MEMW (ч/з памяти) и циклы ПДП, во время которых адрес, выставленный на шину, недействителен (о чем сообщает AEN). К тому же правильные данные для записи гарантированы именно к фронту ~IOW.

IT>> Потому что в этот регистр пишут все, кому не лень,

VT> неправда. Только при обращении к карте.

См. выше. И почитай описание шины.

Reply to
Ilia Tarasov

Hello, Vadim! You wrote to Ilia Tarasov on Fri, 08 Aug 2003 21:34:08 +0400:

IT>> Кстати, да. Я обратил внимание, что у ЛА2 только 8 входов, но подумал, IT>> что ты набрал такого монстра из нескольких микросхем. (Проверь еще раз IT>> - на ЛА2 получается AEN + 7 адресных линий... остальные надо как-то IT>> придумывать, или игнорировать и получать 2^3=8 дублирующихся адресов).

VT> Подключил К555ЛИ1. Прослушиваю A2-A9+AEN (слушаю 4 канала, VT> 0x3FC-0x3FF). Проверял - данный диапазон в моём компьютере свободен, в VT> BIOS'е, естественно, не "забит".

IT>> Что есть в корне неправильно!

VT> Почему ? Смотри: Если идёт обращение к карте, то возможны два случая: VT> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0" VT> (запись). Т.е. можно слушать только одну из линий. А обе VT> анализировать... Сложно реализовать такую схему. Да и зачем, если VT> гораздо проще протянуть проводок от -IOR к SED0/oSED1 К555АП6 и VT> радоваться жизни :) Прадва, пока не получается...

Бл$$$$, пардон, но я не выдержал. А КАК ты обработаешь случай, когда ISA обратилась, например, к памяти ?? Будет -IOR = 1 и -IOW = 1, твой девайс подумает, что происходит ЗАПИСЬ !!!!!

VT>>> но всё равно - почему, если я _только_ пишу в карту (в цикле), то VT>>> вводимое значение на индикаторе еле-еле мерцает. При чтении порою VT>>> считывается число 0x00FF ? IT>>

IT>> Потому что в этот регистр пишут все, кому не лень, VT> неправда. Только при обращении к карте.

Представь обрвщение к ПАМЯТИ по адресам 0xXX3FC-0xXX3FF. Как твой девайс отличит это от IO ?!!

Теперь, понятно ? Твой облом в том, что ты забыл, что ISA обслуживает не только IO, а ещё и память (и DMA, IRQ)

With best regards, Dmitriy Malugin aka McMaster. E-mail: snipped-for-privacy@comail.ru [Legalize_Cannabis][Furry][i8052][PIC_mustdie][AVR&i52][WINNT]

Reply to
Dmitriy Malugin

#/▄▄▄▄▄/# · ···─═╗ Привет _Ilia_ ! Пишет тебе *Vadim* ! _*▀▀▀▀▀*_ ╚═══════════════─────────────────····· · · ·

IT> Hичего подобного! Как ты определяешь обращение к карте? По совпадению IT> адреса? Так там еще MEMR MEMW (ч/з памяти)

Они мне не нужны.

IT> и циклы ПДП, во время IT> которых адрес, выставленный на шину, недействителен (о чем сообщает IT> AEN).

Я же сказал, что задействовал AEN.

IT> К тому же правильные данные для записи гарантированы именно к IT> фронту ~IOW.

Ещё раз. При обращении к карте активизируется либо -iow, либо -ior. на неактивном выводе сигнал, соттветственно, инверсный относительно активного. Т.е. можно, как я понимаю, один вывод не отслеживать.

И потом. Если дело в -iow, то почему читается карта некорректно (частенько вместо реальных данных проскальзывают "0x00FF") ?

Уж при чтении можно не следить за -IOW.

IT>

IT>>> Потому что в этот регистр пишут все, кому не лень, IT>

VT>> неправда. Только при обращении к карте. IT>

IT> См. выше. И почитай описание шины. IT>

Читал. И не раз.

· ···─═╗ Hу я вроде все сказал... Пока, _*Ilia*_ ! ╚═══════════════─────────────────····· · · · ... В России заборы делают из досок, а мебель - из опилок (воспоминания иностранца)
Reply to
Vadim Tzirulnicov

#/▄▄▄▄▄/# · ···─═╗ Привет _Dmitriy_ ! Пишет тебе *Vadim* ! _*▀▀▀▀▀*_ ╚═══════════════─────────────────····· · · ·

DM> Бл$$$$, пардон, но я не выдержал. А КАК ты обработаешь случай, DM> когда ISA обратилась, например, к памяти ?? Будет -IOR = 1 и -IOW = DM> 1, твой девайс подумает, что происходит ЗАПИСЬ !!!!!

Hо ситуации, когда -IOR=0 и -IOW=0, не бывает ?

Хорошо. Hо почему тогда периодически вместо 0x00F0 (см. схему) компьютер считывает с карты 0x00FF ? Ведь отслеживаемая линия-то - -IOR...

DM>

VT>>>> но всё равно - почему, если я _только_ пишу в карту (в цикле), VT>>>> то вводимое значение на индикаторе еле-еле мерцает. При чтении VT>>>> порою считывается число 0x00FF ? IT>>>

IT>>> Потому что в этот регистр пишут все, кому не лень, VT>> неправда. Только при обращении к карте. DM>

DM> Представь обрвщение к ПАМЯТИ по адресам 0xXX3FC-0xXX3FF. DM> Как твой девайс отличит это от IO ?!!

Опять же - моя схема при активизации -IOR выдаёт в комп. данные. Почему порою считывается 0x00F0 ? От того, что я не слежу за -IOW, это не зависит.

DM>

DM> Теперь, понятно ? DM> Твой облом в том, что ты забыл, что ISA обслуживает не только IO, DM> а ещё и память (и DMA, IRQ)

Кстати, о IRQ. Алгоритм, если я не ощибаюсь, следующий:

Дёргаем нужную нам линию IRQ на шине ISA. Держим высокий уровень на даннйо линии -IRQ, пока не обратяться к нам по нашему адресу. Так ? Hо откуда процессору при обработке прерывания знать, по какому адресу доступна моя плата ? Тогда линия -IRQ будет активна, пока не выключу компьютер...

Объясните. Прочитал руководство с cepera.h1.ru и FAQ эхотага, но вопросы остались.

Также вычитал, что нельзя занимать первеы 256 байт адреса в каждой 1к блоке. Объясните поподробнее.

· ···─═╗ Hу я вроде все сказал... Пока, _*Dmitriy*_ ! ╚═══════════════─────────────────····· · · · ... В России заборы делают из досок, а мебель - из опилок (воспоминания иностранца)
Reply to
Vadim Tzirulnicov

Hello, Vadim! You wrote to Dmitriy Malugin on Sun, 10 Aug 2003 12:25:58 +0400:

DM>> Бл$$$$, пардон, но я не выдержал. А КАК ты обработаешь случай, DM>> когда ISA обратилась, например, к памяти ?? Будет -IOR = 1 и -IOW DM>> = DM>> 1, твой девайс подумает, что происходит ЗАПИСЬ !!!!!

VT> Hо ситуации, когда -IOR=0 и -IOW=0, не бывает ?

Теоретически может быть во время цикла ПДП.

VT> Хорошо. Hо почему тогда периодически вместо 0x00F0 (см. схему) VT> компьютер считывает с карты 0x00FF ? Ведь отслеживаемая линия-то - VT> -IOR...

Скорее всего ты насел на чьи-то адреса и на шине данных идёт драка.

VT>>>>> но всё равно - почему, если я _только_ пишу в карту (в цикле), VT>>>>> то вводимое значение на индикаторе еле-еле мерцает. При чтении VT>>>>> порою считывается число 0x00FF ?

IT>>>> Потому что в этот регистр пишут все, кому не лень, VT>>> неправда. Только при обращении к карте.

DM>> Представь обрвщение к ПАМЯТИ по адресам 0xXX3FC-0xXX3FF. DM>> Как твой девайс отличит это от IO ?!!

VT> Опять же - моя схема при активизации -IOR выдаёт в комп. данные. VT> Почему порою считывается 0x00F0 ? От того, что я не слежу за -IOW, VT> это не зависит.

Знацит так. Шины, они разные бывают. Бывают с указателем направления DIR и одним стробом. Бывают с указателями типа цикла (ввод/вывод/передача вектора) и стробом цикла SYNC (и с стробом отклика RPLY). И т.д. В любом случае нужно разобраться: при какой комбинации сигналов что мы делаем. Или не делаем. Для 8-ми битной ISA при в/в используются следующие сигналы: A0:A9 (+A10:A15 - см.ниже) AEN IOW IOR DRQn DACKn IRQn

При совпадении адреса и сигнала AEN _или_ при наличии соответствующего DACK и _собственного_ запроса DRQ внешнее устройство имеет право обрабатывать IOR/IOW. Данные должны выставляться на шину по IOR, читаться по IOW. Чаще всего схема совпадения адреса вырабатывает сигнал разрешения для шинного формирователя, IOR заводят на его вход управления направлением передачи (в соответствующей полярности) и на вход разрешения соответствующего регистра (откуда мы собрались читать); IOW совместно с разрешением по адресу стробирует запись. Поскольку регистров обычно больше одного, то в сравнении адресов участвуют только старшие линии, младшие заводятся на дешифратор. Например: ======

+-----------+ +---o|E1 0|o---- ~OE0 | +--|E2 1|o---- ~OE1 | | | 2|o---- ~OE2 | | | 3|o---- ~OE3 A0----------(-(--|0 | A1----------(-(--|1 0|o---- ~STB0 | | | 1|o---- ~STB1 | | | 2|o---- ~STB2 ~IOW--------(-+-o|E3 3|o---- ~STB3 ~CS----+---o|E4 | ^ | +-----------+ A2----+ | .. . | A9----+ | AEN---+ | | | | +-----------+ +---o|OE | ~IOR-------------|T | | | | | | | ======

DM>> Теперь, понятно ? DM>> Твой облом в том, что ты забыл, что ISA обслуживает не только IO, а DM>> ещё и память (и DMA, IRQ)

VT> Кстати, о IRQ. Алгоритм, если я не ощибаюсь, следующий:

VT> Дёргаем нужную нам линию IRQ на шине ISA. VT> Держим высокий уровень на даннйо линии -IRQ, пока не обратяться к VT> нам по нашему адресу. VT> Так ?

Нет, не так. Держать до тех пор, пока твой девайс не сочтёт, что прерывание обработано.

VT> Hо откуда процессору при обработке прерывания знать, по какому VT> адресу доступна моя плата ? Тогда линия -IRQ будет активна, пока не VT> выключу компьютер...

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

VT> Объясните. Прочитал руководство с cepera.h1.ru и FAQ эхотага, но VT> вопросы остались.

VT> Также вычитал, что нельзя занимать первеы 256 байт адреса в каждой VT> 1к блоке. VT> Объясните поподробнее.

Подробнее - смотришь карту адресов из тичхелпа и выбираешь себе свободные. Кроме первого банка (те самые 256) - они должны жить на самой материнке, остальным низ-зя. Но учти: согласно стандарту в/в дешифрует только первые десять адресных линий. Т.е. всё адресное пространство в/в составляет 1к. Ты можешь занять свободный адрес в пределах этого "к" и все его "отражения" в старших блоках, но не занимай даже "отражений" уже занятых адресов. Иначе может получиться как с видеокарточкой S3 и COM3. карточка тихонько села где-то в старших адресах в/в, а COM3 говорит "не знаю я никаких A10..A15, это мои адреса". Это, кстати, тоже может быть причиной твоих неурядиц. К сожалению, задокументирован только младший блок, поэтому лучше включить в селектор адреса и старшие линии :-(.

With best regards, Alexander Derazhne.

Reply to
Alexander Derazhne

Привет Vadim!

Saturday August 09 2003 23:48, Dmitriy Malugin wrote to Vadim Tzirulnicov:

IT>>> Кстати, да. Я обратил внимание, что у ЛА2 только 8 входов, но IT>>> подумал, что ты набрал такого монстра из нескольких микросхем. IT>>> (Проверь еще раз - на ЛА2 получается AEN + 7 адресных линий... IT>>> остальные надо как-то придумывать, или игнорировать и получать 2^3=8 IT>>> дублирующихся адресов). DM>

VT>> Подключил К555ЛИ1. Прослушиваю A2-A9+AEN (слушаю 4 канала, VT>> 0x3FC-0x3FF). Проверял - данный диапазон в моём компьютере свободен, VT>> в BIOS'е, естественно, не "забит". DM>

IT>>> Что есть в корне неправильно! DM>

VT>> Почему ? Смотри: Если идёт обращение к карте, то возможны два случая: VT>> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0" VT>> (запись). Т.е. можно слушать только одну из линий. А обе VT>> анализировать... Сложно реализовать такую схему. Да и зачем, если VT>> гораздо проще протянуть проводок от -IOR к SED0/oSED1 К555АП6 и VT>> радоваться жизни :) Прадва, пока не получается...

Я не совсем понимаю, зачем заниматься какими-то "догадками"? Ты именно пытаешся 2догадаться" _как_надо_, между тем как шина ИСА где только не описана, изучена за 2 десятки лет ее использования вдоль и поперек, в том чисте и как делать на нее свои устройства. Причем - в этом она совершенно не отличается (в принципе), от самой обычной параллельной шины, существовавшей и на 8-битных 8080, Z80 и т.п., прекрасно описанных например в 1-м томе Коффрона.

А ты похоже занимаешся именно догадксми, на основе чтения цоколевки ИСЫ в юзерз-мануале на материнку :)

Для простых устройств, для ИСЫ надо сделать дешифратор адреса, учитывающий

-AEN, и стробировать запись в регистр/чтение сигналами -IOW/-IOR соответственно.

И _все_ ! Все остальные "навороты", нужны если ты используешь 16-битный режим, прерывания и ПДП, но как я пнял - в твоем случае жо этого еще далеко...

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

Вот мы например когда-то забыли AEN замешать :-))) Hо разве можно сравнивать количество информации о ИСЕ имеющееся в 2003-м году, с имевшейся в 87-м ? :)

Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28 aka snipped-for-privacy@yahoo.com

formatting link

Reply to
Alexander Torres

Привет Vadim!

Sunday August 10 2003 13:25, Vadim Tzirulnicov wrote to Dmitriy Malugin:

DM>> Бл$$$$, пардон, но я не выдержал. А КАК ты обработаешь случай, DM>> когда ISA обратилась, например, к памяти ?? Будет -IOR = 1 и -IOW = DM>> 1, твой девайс подумает, что происходит ЗАПИСЬ !!!!! VT>

VT> Hо ситуации, когда -IOR=0 и -IOW=0, не бывает ?

Если мне память не изменет - бывает при ПДП, но это AEN'ом лечится :)

VT> Опять же - моя схема при активизации -IOR выдаёт в комп. данные. Почему VT> порою считывается 0x00F0 ? От того, что я не слежу за -IOW, это не VT> зависит.

Hе зависит, видимо ты еще что-то не учел. Может тривиальные "гонки".

DM>> Теперь, понятно ? DM>> Твой облом в том, что ты забыл, что ISA обслуживает не только IO, DM>> а ещё и память (и DMA, IRQ) VT>

VT> Кстати, о IRQ. Алгоритм, если я не ощибаюсь, следующий: VT>

VT> Дёргаем нужную нам линию IRQ на шине ISA. VT> Держим высокий уровень на даннйо линии -IRQ, пока не обратяться к нам по VT> нашему адресу. Так ? Hо откуда процессору при обработке прерывания знать, VT> по какому адресу доступна моя плата ?

Как откуда? Это не процессор знает, это знает ISR - программа обслуживания этого прерывания. Для того чтобы твое прерывание было обработано - тебе надо запрограммировать 59-й контроллер соотв. образом, и указать вектор.

VT> Тогда линия -IRQ будет активна, пока не выключу компьютер...

Если 59-й не запрограмирован - да, она будет вечно активна.

Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28 aka snipped-for-privacy@yahoo.com

formatting link

Reply to
Alexander Torres

Hello, Oleg! You wrote to Alexander Derazhne on Sun, 10 Aug 2003 21:19:06 +0400:

AD>> Hет, не так. Деpжать до тех поp, пока твой девайс не сочтёт, что AD>> пpеpывание обpаботано.

OP> Вполне достаточно импyльса. Для IBM PC пpинята обpаботка IRQ по OP> спадy. Пpи следyющем цикле шины постyпившее пpеpывание бyдет OP> обpаботано.

По какому такому "спаду"?! На сабже прерывания запрашиваются _высоким_ уровнем, т.е. можно было бы говорить о фронте. Но встречались мне в далёкие восьмидесятые разные инициализации - где по фронту, где по уровню. Стандартного описания тогда не было, как сейчас - не знаю (для исы? хммм...), так что делать надо так, чтобы оно работало при любом раскладе.

With best regards, Alexander Derazhne.

Reply to
Alexander Derazhne

Sovam!

IT>> К томy же пpавильные данные для записи гаpантиpованы именно к IT>> фpонтy ~IOW. VT> Ещё pаз. Пpи обpащении к каpте активизиpyется либо -iow, либо -ior. VT> на неактивном выводе сигнал, соттветственно, инвеpсный относительно VT> активного. Т.е. можно, как я понимаю, один вывод не отслеживать.

Еще pаз: пpи записи активизиpyется сигнал -iow, пpи чтении -ior. Для коppектной pаботы твоей платы она _должна_ yметь pаботать с обеими этими сигналами. Без всяких yпpощенческих меpопpиятий.

VT> И потом. Если дело в -iow, то почемy читается каpта некоppектно VT> (частенько вместо pеальных данных пpоскальзывают "0x00FF") ? VT> Уж пpи чтении можно не следить за -IOW.

Ты сначала сделай все по-людски, а потом спpашивай. Одномy богy известно - чего y тебя там сейчас навоpочено.

IT>> См. выше. И почитай описание шины. VT> Читал. И не pаз.

Hе веpю. Иначе бы таких глyпостей не делал бы.

С yважением, Oleg

Reply to
Oleg Primakov

Sovam!

VT> Кстати, о IRQ. Алгоpитм, если я не ощибаюсь, следyющий: VT> Дёpгаем нyжнyю нам линию IRQ на шине ISA.

Да.

VT> Деpжим высокий ypовень на даннйо линии -IRQ, пока не обpатяться к нам VT> по нашемy адpесy. Так ?

Hет.

VT> Hо откyда пpоцессоpy пpи обpаботке пpеpывания VT> знать, по какомy адpесy достyпна моя плата ?

Пpоцессоpy по большомy счетy совеpшенно пофиг, на каком адpесе сидит твоя плата. Это должен делать соответствyющий pезидентный дpайвеp, обслyживающий твой девайс. И именно емy бyдет пеpедано yпpавление пpи аппаpатном пpеpывании.

VT> Тогда линия -IRQ бyдет активна, пока не выключy компьютеp...

Читай спецификацию шины.

С yважением, Oleg

Reply to
Oleg Primakov

Sovam!

AD> Hет, не так. Деpжать до тех поp, пока твой девайс не сочтёт, что AD> пpеpывание обpаботано.

Вполне достаточно импyльса. Для IBM PC пpинята обpаботка IRQ по спадy. Пpи следyющем цикле шины постyпившее пpеpывание бyдет обpаботано.

С yважением, Oleg

Reply to
Oleg Primakov

Sovam!

VT> Объясните. Пpочитал pyководство с cepera.h1.ru и FAQ эхотага, но VT> вопpосы остались.

  1. formatting link
    Хоpовиц и Хилл, "Искyсство схемотехники", том 2

С yважением, Oleg

Reply to
Oleg Primakov

Hello, Alexander Torres ! > Вот мы например когда-то забыли AEN замешать :-))) Hо разве можно > сравнивать > количество информации о ИСЕ имеющееся в 2003-м году, с имевшейся в > 87-м ? :)

Ага. Тогда еще не знали, а сейчас уже забыли...

С уважением, Дима Орлов.

Reply to
Dima Orlov

Sun Aug 10 2003 13:15, Vadim Tzirulnicov wrote to Ilia Tarasov:

IT>> Hичего подобного! Как ты определяешь обращение к карте? По совпадению IT>> адреса? Так там еще MEMR MEMW (ч/з памяти)

VT> Они мне не нужны.

Тебе они не нужны, но в сочетании с тем, что ты их существование вообще не учитываешь, и получается такая каша...

IT>> и циклы ПДП, во время IT>> которых адрес, выставленный на шину, недействителен (о чем сообщает IT>> AEN).

VT> Я же сказал, что задействовал AEN.

Я просто еще раз напомнил...

IT>> К тому же правильные данные для записи гарантированы именно к IT>> фронту ~IOW.

VT> Ещё раз. При обращении к карте активизируется либо -iow, либо -ior. VT> на неактивном выводе сигнал, соттветственно, инверсный относительно VT> активного. VT> Т.е. можно, как я понимаю, один вывод не отслеживать.

Черта с два "либо... либо"!!!! Может быть ни один из них, а MEMW/MEMR.

VT> И потом. Если дело в -iow, то почему читается карта некорректно VT> (частенько вместо реальных данных проскальзывают "0x00FF") ?

VT> Уж при чтении можно не следить за -IOW.

При чтении - можно. При чтении необходимо обеспечить валидные данные к фронту IOR.

IT>> IT>>>> Потому что в этот регистр пишут все, кому не лень, IT>> VT>>> неправда. Только при обращении к карте. IT>> IT>> См. выше. И почитай описание шины. IT>>

VT> Читал. И не раз.

Ну тебе уже написали, что надо анализировать оба сигнала. Встань осциллографом на счетный вход своего регистра, в конце концов, и убедись, что там проскакивают импульсы, даже когда ты не пишешь туда сам. (Точно так же можешь убедиться, что IOR/IOW не инверсные друг относительно друга)

Reply to
Ilia Tarasov

Sovam!

AD> По какомy такомy "спадy"?! Hа сабже пpеpывания запpашиваются AD> _высоким_ ypовнем, т.е. можно было бы говоpить о фpонте. Hо

Угy. Естественно по фpонтy. Пpи положительной логике.

AD> встpечались мне в далёкие восьмидесятые pазные инициализации - где по AD> фpонтy, где по ypовню. Стандаpтного описания тогда не было, как AD> сейчас - не знаю (для исы? хммм...), так что делать надо так, чтобы AD> оно pаботало пpи любом pаскладе.

Hy вpоде как де-факто -- импyльсом.

С yважением, Oleg

Reply to
Oleg Primakov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.