Скажем мне надо получить raw поток, или надо с такой-то частотой узнать логический уровень на таком-то пине ide разъема. или наоборот выдать уровень. где начинается моя свобода ? ос любая которая позволит взять эксклюзивно один иде канал.
Здравствуйте, lomom, Вы писали:
L>Скажем мне надо получить raw поток, или надо с такой-то частотой узнать логический уровень на таком-то пине ide разъема. или наоборот выдать уровень. где начинается моя свобода ?
Для начала Вам нужно посмотреть документацию на используемый контроллер. Очень может оказаться, что после загрузки очередного слова в регистр вывода контроллер защелкивает его там до получения сигнала подтверждения. И наоборот — данные с шины становятся видны в регистре только после поступления оттуда сигнала стробирования.
ЕМ>Для начала Вам нужно посмотреть документацию на используемый контроллер. Очень может оказаться, что после загрузки очередного слова в регистр вывода контроллер защелкивает его там до получения сигнала подтверждения. И наоборот — данные с шины становятся видны в регистре только после поступления оттуда сигнала стробирования.
я так понимаю что это данные, мне же нужен один пин, может адреса, может какой управления. если кто писал драйвер, или какую системную, знает какой контролер смотреть, желательно старые платы на п2-3.
Здравствуйте, lomom, Вы писали:
L>я так понимаю что это данные, мне же нужен один пин, может адреса, может какой управления.
Если Вам нужен только один разряд — к чему сложности с IDE? Традиционно это делается через LPT или COM-порты, коли Вы ориентируетесь на старые платы — эти порты там есть (у USB-адаптеров проблемы со скоростью).
Если уж очень хочется через IDE — смотрите в сторону статических сигналов, управляемых и принимаемых программно (SRST в Control Register, DRDY или IDX в Status Register).
Здравствуйте, Евгений Музыченко, Вы писали:
L>>Скажем мне надо получить raw поток, или надо с такой-то частотой узнать логический уровень на таком-то пине ide разъема. или наоборот выдать уровень. где начинается моя свобода ? ЕМ>Для начала Вам нужно посмотреть документацию на используемый контроллер. Очень может оказаться, что после загрузки очередного слова в регистр вывода контроллер защелкивает его там до получения сигнала подтверждения. И наоборот — данные с шины становятся видны в регистре только после поступления оттуда сигнала стробирования.
Чушь и ересь. Сигнал "стробирования" поступает от самого контроллера (верней -- вовсе от процессора). И держится пока WAIT ему (не) позволяет, либо некое малое фиксированное время. IDE-интерфейс не менялся с 80-х годов и почитать как он устроен можно в книге М. Гука "Аппаратное обеспечение IBM-PC". Не надо пугать людей и вводить в заблуждение. И сейчас можно подключить western digital 5" на 40МБайт и с него даже можно DOS загрузить. Да, появились DMA и т.п. -- но это в данном случае не нужно. Единственное что -- появился Plug and Play. Но в голом досе адреса портов BIOS настроит на типовые.
И про документацию не нужно. Регистры с известными номерами портов -- они устроены одинаково. Верней, там и регистров-то нет, фактически это регистры НЖМД уже. Там ISA-шина по-сути, только скорости по-выше. Я вообще так ещё помню, когда "контроллер" для 386 представлял из себя микросхему мелкой логики и набор резисторов.
Здравствуйте, Евгений Музыченко, Вы писали:
L>>я так понимаю что это данные, мне же нужен один пин, может адреса, может какой управления.
А да, я ещё не сказал. Ничего там не "защёлкивается", данные висят только на время выполнения процессором команды OUT -- может быть менее микросекунды.
ЕМ>Если Вам нужен только один разряд — к чему сложности с IDE?
Затем что IDE в таких применениях любят -- это практически единственная возможность получить доступ к шине процессора через порт ввода-вывода. Скоростной доступ. Потому, что тот же LPT будет работать гораздо медленее, более 1-2МБайт/сек там сложно прокачать. Я, разумеется, имею ввиду EPP и ECP-режимы (IEEE 1284 кажись).
EM> Традиционно это делается через LPT или COM-порты, коли Вы ориентируетесь на старые платы — эти порты там есть (у USB-адаптеров проблемы со скоростью).
Тут тоже проблемы со скоростью. Особенно если не напрямую, а через драйвер.
ЕМ>Если уж очень хочется через IDE — смотрите в сторону статических сигналов, управляемых и принимаемых программно (SRST в Control Register, DRDY или IDX в Status Register).
Не надо путать контроллер винчестера и собственно IDE-интерфейс. В момент исполнения процессором инструкции IN можно считать любой бит шины данны DataX, либо установить там любой уровень на время выполнения команды OUT (данные можно защёлкнуть во внешнем регистре сигналом I/O Write). Но подключать на IDE-шину всякое непотребство не стоит -- она подключается практически напрямую к параллельной шине компьютера. В момент когда нет чтения (сигнал I/O Read) там не должно быть ничего работающего на выход с низким выходным сопротивлением.
ЕМ>Изучать контроллер можно отсюда.
Изучать контроллер винчестера в данном случае -- не стоит.
ЕМ>>Если Вам нужен только один разряд — к чему сложности с IDE?
fk0> Затем что IDE в таких применениях любят -- это практически единственная возможность получить доступ к шине процессора через порт ввода-вывода. Скоростной доступ. Потому, что тот же LPT будет работать гораздо медленее, более 1-2МБайт/сек там сложно прокачать. Я, разумеется, имею ввиду EPP и ECP-режимы (IEEE 1284 кажись).
да, надо 5 мгц дёргать.
fk0> Не надо путать контроллер винчестера и собственно IDE-интерфейс. В момент исполнения процессором инструкции IN можно считать любой бит шины данны DataX, либо установить там любой уровень на время выполнения команды OUT (данные можно защёлкнуть во внешнем регистре сигналом I/O Write). Но подключать на IDE-шину всякое непотребство не стоит -- она подключается практически напрямую к параллельной шине компьютера. В момент когда нет чтения (сигнал I/O Read) там не должно быть ничего работающего на выход с низким выходным сопротивлением.
Что не хорошо подключать согласен, но плата будет заниматься только этим так-что не страшно, лишь-бы был результат.
нужно один стробирующий входящий сигнал, отлично если на этот пин можно посадить прерывание.Можно где пример посмотреть как считывают и пишут — или в моём случае дергают пинами ?
out 0x170, 0
out 0x170, 0xff
out 0x170, 0
так дернет пином с чатотой шины ?
Здравствуйте, lomom, Вы писали:
fk0>> Не надо путать контроллер винчестера и собственно IDE-интерфейс. В момент исполнения процессором инструкции IN можно считать любой бит шины данны DataX, либо установить там любой уровень на время выполнения команды OUT (данные можно защёлкнуть во внешнем регистре сигналом I/O Write). Но подключать на IDE-шину всякое непотребство не стоит -- она подключается практически напрямую к параллельной шине компьютера. В момент когда нет чтения (сигнал I/O Read) там не должно быть ничего работающего на выход с низким выходным сопротивлением.
L>Что не хорошо подключать согласен, но плата будет заниматься только этим так-что не страшно, лишь-бы был результат.
Нельзя управлять сигналами данных в момент когда нет чтения со стороны процессора. Можно сжечь буфер в материнской плате.
L> нужно один стробирующий входящий сигнал,
Только если в разрыв шины (данных) поставить регистр типа 1533ИР23. Т.е. он по-стробу (вход /C) запоминает байт данных и он потом может быть считан пока сигнал /WRITE (с IDE разъёма) в нуле (подключается к /OE регистра).
L> отлично если на этот пин можно посадить прерывание.
Процессор на прерывание отреагирует очень небыстро. Хотя там есть вход IRQ -- и может быть использован для получения прерывания контроллером прерывания (интеловский аналог 1810ВН59) -- а дальше уже как контроллер запрограммируешь. Это если под досом. Под виндовсом надо делать свой драйвер и чтоб драйвер винта штатный не мешал (не обрабатывал прерывания и не лез в порты), под линуксом аналогично.
> Можно где пример посмотреть как считывают и пишут — или в моём случае дергают пинами ?
М. Гук "Аппаратные средства IBM-PC". Я бы советовал завести на машине дос. После того, как будет отлажено -- переносить на винду/линукс в виде драйвера. Может быть ralf brown interrupt list и другие "учебники" программирования под дос старых времён...
L>out 0x170, 0 L>out 0x170, 0xff L>out 0x170, 0 L>так дернет пином с частотой шины ?
Пином /WRITE дёрнет 3 раза и быстро. Пинами D0-D7 дёрнет один раз и со скоростью выполнения команд процессора (между которыми вполне может возникнуть прерывание).
L>>out 0x170, 0 L>>out 0x170, 0xff L>>out 0x170, 0 L>>так дернет пином с частотой шины ?
fk0> Пином /WRITE дёрнет 3 раза и быстро. Пинами D0-D7 дёрнет один раз и со скоростью выполнения команд процессора (между которыми вполне может возникнуть прерывание).
Чушь написал. На D0-D7 3 раза на короткое время (пока /WRITE в нуле) возникнет 0, потом 1, потом 0. В остальное время там будет неизвестно что! Поэтому для фиксации -- опять же 1533ИР23, вход /C на /WRITE, /OE на GND.