Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 28

Тема: [Поиск 1] Контроллер PS/2 или USB клавиатуры

  1. #1
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,929
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    114 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию [Поиск 1] Контроллер PS/2 или USB клавиатуры

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

    Поэтому подумываю как бы подключить обычную клаву. Наверное придется модифицировать BIOS, или грузить драйвер/резидент после старта DOS. Ни у кого идей нет, как бы попроще реализовать? На чем вообще USB клавы делают для новоделов всяких? Что за контроллер?

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master Аватар для Quest
    Регистрация
    10.12.2012
    Адрес
    г. Петрозаводск
    Сообщений
    607
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Контроллер PS/2 или USB клавиатуры

    Про usb не слышал. У Поиска ведь обычная механическая клавиатура как у Спектрума... Для Спектрумов есть контроллеры, позволяющие подключить IBM клавиатуру вместо механической.
    Вот например: http://zx-pk.ru/showthread.php?t=17270
    Последний раз редактировалось Quest; 10.08.2014 в 23:23.
    Scorpion ZS-256, ZX Spectrum +3, ZX-Evolution & NeoGS, Поиск-1, Scorpion ZS 1024 Turbo+

  4. #3
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    800
    Спасибо Благодарностей отдано 
    340
    Спасибо Благодарностей получено 
    71
    Поблагодарили
    56 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Скажу идею - кидайте тапками
    У Поиска есть разъём магнитофона, в котором найдутся 3 свободных вывода + есть земля.
    У Поиска есть свободные линии портов КР580ИК55.
    Добавить на макетке транзистор, для линии данных, защиту от статики на обе линии и
    можно сделать PS/2 мышь или клавиатуру.
    Я прав, или что-то помешает так сделать?

  5. #4
    Moderator
    Регистрация
    23.01.2011
    Адрес
    Донецк
    Сообщений
    793
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как минимум, нужно ведь совместимость с клавой IBM PC обеспечить. Т.е. оно должно в порт 60h писать, в BDA где-то символы храниться должны. Ну и существующий механизм опроса клавы вырубить надо Т.е. сделать можно, и может быть даже нужно, но геморройно
    Поиск-1, Поиск-2, Парус ВИ-201, Олимпик-С, Электроника МК61

  6. #5
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    800
    Спасибо Благодарностей отдано 
    340
    Спасибо Благодарностей получено 
    71
    Поблагодарили
    56 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #6
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,929
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    114 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не, ну в принципе, тут имхо два пути:
    1) Дополнительный контроллер на шине. Можно на чем угодно, хоть на PIC, хоть на ARM, хоть на 8042 (если разобраться, как оно работает). Она общается с клавой - как только символ поступил - генерируется IRQ, которое обрабатывает резидент или дополнительный BIOS-rom. По IRQ символ забирается из из контроллера.
    Минусы - чтение напрямую из портов ввода-вывода (60h чтоле) по прежнему остается в системной плате, проги которые работают напрямую с портами - в пролете. Если сделать дешифрацию портов на контролере, то будет конфликт с системной платой. Плюс в биосе по прежнему сидит подпрограмма сканирования родной клавиатуры, жрущая процессорное время.
    Плюсы - не нужно лезть в нутрь Поиска - вставил контроллер и пошел.

    2) Подключить клаву к штатному разъему Поиска на материнке. Для этого собрать маленький переходник на микроконтроллере (PIC/Arm).
    Плюсы - все проги работают как и раньше, все так же софтово идет опрос клавы. Программная составляющая не меняется.
    Минусы - отключается штатная клавиатура. Подпаиваются провода на материнскую плату, дополнительно устанавливается небольшой переходник куда-то в корпус. Так же в корпусе вырезается дырка под провод или под PS/2 разъем (в случае если контроллер держит USB-host, под USB-разъем).

  8. #7
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,929
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    114 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Все-таки думаю, что можно отдельный контроллер клавы сделать, вставляемый в слот расширения. Поиск постоянно (приблиз 18.2 раза в секунду) производит опрос родной матричной клавиатуры. Схематически делается это с помощью программного интервального таймера 8253 (ви53), канал 1 которого формирует меандр ~18.2 Hz. Канал 1 заведен сразу на контроллер прерываний 8259, на запрос прерывания 6 (IRQ 6).



    По высокому уровню контроллер прерываний пытается (в зависимости от текущих приоритетов) передать управление на обработку IRQ 6, то есть int 0eh. В обработчике прерывания int 0eh и производится уже программный опрос ВВ55, который дергает линиями матрицы на клавиатуре и в зависимости от расшифровывает символы. Дальше этот же обработчик запихивает код символа в порт 0x60, или если это дополнительный код, то 0xE0 и вызывает программно int 9h.

    Таким образом, нужно перепрограммировать интервальный таймер 8253, чтобы на выходе канала 1 всегда был логический "ноль". Тем самым мы программно выключим аппаратное сканирование родной клавиатуры (перестанет вызываться IRQ6/int 0eh). Осложняет ситуацию наличие постоянного высокого уровня на GATE, поэтому я не знаю как точно это сделать. По быстрым прикидкам - перевести 8253 в режим 0 (прерывание терминального счета), загрузить счетчик, на выходе будет 0, пока счетчик уменьшается, а затем сразу перезагрузить только младший байт счетчика, не давая ему старший байт. По идее счет должен остановится, на выходе OUT должен быть по прежнему низкий уровень. Это можно в протеусе проверить, проверю как-нибудь.

    Ну а дальше берем микроконтроллер который может PS/2 парсить, организуем какой-нибудь свой левый порт ввода-вывода, заводим с ножки микроконтроллера сигнал на какой-либо свободный IRQ, например на IRQ7. Микроконтроллер как получил от PS/2 клавиатуры байт - распарсил его и выдал в порт, дернув при этом IRQ 7. Поиск свалился в обработчик прерывания IRQ7, где мы взяли байт из нашего левого порта ввода-вывода и кинули его в порт 0x60h, передали управление int 9h.

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

    Вот такие мысли у меня...

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

    Либо, можно отключать аппаратное сканирование родной клавы через контроллер прерываний 8259 - у него есть Interrupt Mask Register. 8 бит маска, если бит установлен в 0 - прерывание разрешено, если 1 - прерывание запрещено. Таким образом что-то вроде:
    Код:
    in al,21h
    or al,64      ; установить шестой бит в единицу
    out 21h,al
    должно запретить вызывать IRQ6.

    Можно скомбинировать - а) попытаться все-таки настроить таймер 8253, что бы на OUT1 был всегда ноль б) запретить обслуживать IRQ6 в контроллере прерываний через IMR б) поставить заглушку в обслуживающее прерывание int 0eh (mov al,20h; in 20h,al; iret).

  9. #8
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    800
    Спасибо Благодарностей отдано 
    340
    Спасибо Благодарностей получено 
    71
    Поблагодарили
    56 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Контроллер PS/2 делают на небольших контроллерах ATMEGA, даже в местных проектах вроде видел.
    Другое дело, что PS/2 клавиатура и мышь уже дефицит.
    Может имеет смысл, подумать про USB?
    Скажем взять контроллер STM32F.
    И сделать на нём сразу контроллер клавиатуры и мыши, который возвращает код кнопки и движение мыши.
    По тому же таймеру 1, писать в буфер клавиатуры код кнопки и мышиное прерывание INT33 поддержать, напрямую, без COM-порта.
    А вот тут вопрос, много свободного места в штатном ПЗУ остаётся?

  10. #9
    Moderator
    Регистрация
    23.01.2011
    Адрес
    Донецк
    Сообщений
    793
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ничего там не остается, как правило. Но проблему чуть-чуть смягчает тот факт, что у Поиска есть разводка под вторую микросхему. Да и, если речь идет о контроллере, ничего не мешает туда подсадить ещё одну РФку с расширением BIOS
    Поиск-1, Поиск-2, Парус ВИ-201, Олимпик-С, Электроника МК61

  11. #10
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,929
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    114 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от DrPass Посмотреть сообщение
    Да и, если речь идет о контроллере, ничего не мешает туда подсадить ещё одну РФку с расширением BIOS
    Речь именно об отдельном контроллере, без модификации самого Поиска.


    Цитата Сообщение от Копейкин Посмотреть сообщение
    Может имеет смысл, подумать про USB?
    Скажем взять контроллер STM32F.
    И сделать на нём сразу контроллер клавиатуры и мыши,
    Оно конечно да. Но, есть нюансы. Во-первых насчет ps/2 клавиатур - полно их. Вот открываем обычную московскую конторку, фарцующую комповым железом - nix.ru (в Питере, кстати, тоже есть офис) : выбираем клавиатуры с ps/2 интерфейсом, выдает список в наличии около 60 различных видов от простых до геймерских, цена от ~200 руб за "обычные" митсуми до ~10000 руб за супер-навороченные. Пол сотни клав, сейчас, в наличии, в преддверие 2016 года 21 века, с доступностью - "пошел и купил". Так что здесь проблемы не вижу пока острой.

    По поводу stm32 - да, есть вроде бы модели, которые могут одновременно два OTG (ну чтоб одновременно и мышка и клава). Но:
    а) модели с двумя OTG на борту - не бюджетники. Начиная с stm32f4 (Cortex M4) серии вроде - стоят вполне ощутимо.
    б) в интернете нет документальных подтверждений, что кто-либо смог запустить одновременно два OTG хоть на каком stm32. На форумах одинокие крики о помощи и тишина в ответ. А это значит, что при разработке нужно будет пройтись по всем возможным граблям и костылям, "от" и "до". Что честно говоря мало прельщает, учитывая довольно-таки примитивную и скучную задачу для контроллера. Не та задача, с которой хочется долго возится.
    в) не все однозначно у stm32 с параллельными шинами. Оно конечно можно наверное и через LCD-интерфейс, или в новых кортексах черех DCMI для камеры, или просто таймер-тригер на DMA завести, чтоб данные захватывались минуя проц сразу в SRAM. Но, защелок то там нет, а значит нужно еще успевать из высокоимпедального состояния перейти в input или output, в зависимости от.. Короче опять костыли, эксперименты....
    г) И последнее - корпус QFN, а значит нужно травить плату. Я пока не освоил, хотя "на подходе".

    Поэтому я пока проверю идею в целом на уже имеющейся "базе" от неудавшегося SD-контроллера. Там PIC 40-ногий, с функцией Parallel Slave Port - хорошо согласуется с ISA шиной без мозговыноса. Только USB нету, даже одного, поэтому пока PS/2.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Конвертер USB -> PS/2 для клавиатуры
    от Ewgeny7 в разделе Устройства ввода
    Ответов: 118
    Последнее: 02.01.2022, 23:39
  2. [Поиск 1] Контроллер IDE
    от CHRV в разделе Поиск
    Ответов: 25
    Последнее: 02.10.2020, 16:07
  3. Контроллер USB клавиатуры
    от andreil в разделе Устройства ввода
    Ответов: 99
    Последнее: 24.02.2019, 17:25
  4. USB контроллер матрицы клавиатуры.
    от fan в разделе Устройства ввода
    Ответов: 2
    Последнее: 25.07.2007, 00:43

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •