- Нужна голая плата БК0011М или её фото
- [+] Старые сообщения (89)
-
? Etc. - 14.02.2012 19:16
Интересно, кому помешает аппаратный буфер? Может быть Вам?
-
? Voland@ - 14.02.2012 21:34
>> Интересно, кому помешает аппаратный буфер? Может быть Вам?
Сделать-то не проблема, только для чего? Если только предположить, что на БК будет многозадачная ОС, в ней будет текстовый редактор типо MS word, БК из-за кучи задач подтупит на 2-3 секунды, а пользователь в это время продолжит набор текста и текст не потеряется...
-
? foot@ - 15.02.2012 00:31
Etc>>Интересно, кому помешает аппаратный буфер? Может быть Вам?>>
Скорее всего ничего не получится.
Вы не дочитали статью по вашей же ссылке. Ключевое слово "семиразрядный".
-
? Etc. - 15.02.2012 12:22
Предположим, что дочитал... Вы имеете ввиду - "Коды букв русского регистра, а также коды, полученные по вектору 274, преобразуются в восьмиразрядные. На то, что установлен именно русский режим, указывает ненулевое (200) содержимое ячейки 43." и т.д.
Но буферизовать нужно не коды на выходе, а просто последовательность нажатий клавиш перед "ВП1-014", таким образом логика работы не пострадает.
"При установке в 1 разряда 7 (@177660) по системной магистрали пойдет запрос на прерывание от клавиатуры" - если следующая в буфере нажатий - алфавитно цифровая клавиша, то передаётся набор сигналов её нажатия, если управляющая, то набор сигналов её нажатия... всё это на "вход" "ВП1-014", а не как результат ей работы на выходе.
Извините что витьевато, но думаю понятно?
-
? Etc. - 15.02.2012 12:43
Да, кстати, а как по другому подключать PC-клавиатуру?
В писишной клаве встроенный полноценный буфер "нажатых клавиш", но их много, и нужно ремапить их нажатия в нажатия клавиатуры БК, т.е. тупо иметь таблицу подстановки, а следовательно какое-нибудь но аппаратное устройство обрабатывающее буфер нажатий - необходимо, и установить его в живую БК тоже кажется вожможным, в разрыв между клавиатурой БК и входом "ВП1-014", конечно же необходимо ловить состоян ие 7-го разряда (@177660). Возможно ли это? Кажется у нас тут есть неплохой консультант.
[to anonymous] - Это возможно?
...ещё открывается одна прекрасная возможность, которой грех не воспользоваться!
PC-клавиатуры имеют различные дополнительные клавиши, и их можно использовать! Если поток нажатых клавиш обрабатывать перед "ВП1-014", и иметь дополнительно регистр (или несколько) с возможностью подключения его к порту УП... зачем? - управление громкостью плеера, нум-пед, клавиатурный джойстик, функциональные клавиши в общем...
-
? foot@ - 15.02.2012 15:01
Etc>>В писишной клаве встроенный полноценный буфер "нажатых клавиш", ...>
Что Вы имеете в виду? Есть отработка ОДНОВРЕМЕННО нескольких нажатых клавиш...
Etc>>>...ещё открывается одна прекрасная возможность, которой грех не воспользоваться!
PC-клавиатуры имеют различные дополнительные клавиши, и их можно использовать! Если поток нажатых клавиш обрабатывать перед "ВП1-014", и иметь дополнительно регистр (или несколько) с возможностью подключения его к порту УП... зачем? - управление громкостью плеера, нум-пед, клавиатурный джойстик, функциональные клавиши в общем..>>
Причем здесь вп-014? А буфер только помешает. Например, для клавиатурного джойстика надо назначить клавиши, которые будут устанавливать необходимые биты порта УП. Причем в реальном времени отслеживать для НЕСКОЛЬКИХ клавиш: удерживается клавиша или уже отпущена. Смысл передавать их коды в монитор?
-
? Voland@ - 15.02.2012 15:07
Лучше вот что скажите: PS/2 клавиатуру в регистры старые перекодировать, или перекодировать на уровне ПЗУ? Много программ работает напрямую с регистром клавиатуры?
И по кнопке СТОП - причину частого зависания после ее нажатия можно убрать так, чтобы не сломались какие-то программы?
-
? Voland@ - 15.02.2012 15:09
И еще, по ссылке выше описание для БК0010, где взять подробное описание организации работы с клавиатурой в БК0011М?
-
? Etc. - 15.02.2012 17:49
[to foot]
1. Маленький ликбез... предположим Вы одновременно своими пальцами нажали 104 клавиши, как Вы это рассматриваете?
Как 104 единовременных события, или как одно событие нажатия 104-х клавиш?
В первом случае вы получите поток из 104-х кодов с одикаковым таймстампом, во втором случае один код из 104-х установленных бит, это чисто теоритически.
А теперь - внимание вопрос: Какой из этих методов используется в БК, ДВК? Ответ - ни тот ни другой.
Используется событие - "нажатие клавиши", для выработки кода нажатой клавиши или изменения флага состояния. (это в кратце).
Таким образом, вернитесь пожалуйста к невоображаемым а живым, реальным железкам. Спасибо!
2. ..."Смысл передавать их коды в монитор"...
Вы вообще о чём? Перечитайте написанное мной, там сказано просто...
>Нажитие клавиши PC-клавиатуры
>> определено нажатие функциональной клавиши
>>> изменение "контроллером клавиатуры" в микросхеме регистре нужного бита из "0" в "1"
>>>> с выхода регистра сигнал попадпет на подклёчённый (какой Вам нужно) контакт порта УП
>>>>> ПО на БК обрабатывает событие на порте УП.
Под "контроллером клавиатуры" я понимаю железку, в которую подключается либо PC-клавиатура, либо БК, либо и та и та, а сам "контроллер" - на вход "ВП1-014", плюс к тому - к выходу контроллера - м/с регистр, а её выходы на порт УП.
Что сложного?
-
? Etc. - 15.02.2012 18:11
[to Voland] с этими вопросами лучше к anonymous... - 14 февраля 06:07 он писал про ВП1-014:
"Да, еще два вектора прерывания генерирует и выдает бит замкнутого состояния любой клавиши, кроме рег/упр/ар2, на sel1. И для экономии ног у нее нет своего дешифратора адресного на старший байт, ее выборку вп1-037 генерирует, а она сама только младшие разряды разбирает."
Я не специалист, ном мне кажется, что:
- Напрямую с регистром клавиатуры работают большинство интерактивных программ - DOS, игры и текстовые редакторы;
- "по кнопке СТОП" - если мне память не изменяет - генерируется какое-то прерывание;
- организация работы с клавиатурой в БК0010 и МБК0011М не отличаются.
Немного не понял вопрос - "PS/2 клавиатуру в регистры старые перекодировать, или перекодировать на уровне ПЗУ?"... если речь о перекодировке кодов нажатых клавиш на PC-клавиатуре в набор сигналов для подачи на "ВП1-014", то мне это видится как таблица соответствия кодов PC-клавиатуры набору подаваемых сигналов на вход "ВП1-014" зашитая в "контроллер PC-клавиатуры", т.е. в ту железку, к которой будет подключаться сама клавиатура...
-
? foot@ - 15.02.2012 19:42
Etc>>Таким образом, вернитесь пожалуйста к невоображаемым а живым, реальным железкам. Спасибо!>>
Пожалуйста. А теперь расскажите нам как работает реальная писишная клавиатура. Каким из двух предложенных Вами способов? :))
Etc>> Под "контроллером клавиатуры" я понимаю железку, в которую подключается либо PC-клавиатура, либо БК, либо и та и та, а сам "контроллер" - на вход "ВП1-014", плюс к тому - к выходу контроллера - м/с регистр, а её выходы на порт УП.
Что сложного?>>
Совсем всё просто. Так фигня. Одновременно аппаратно организовать два взаимоисключающих процесса: отложенную буферизацию нажатий, ибо хрен её знает, когда процессор соизволит последовательно прочитать все коды набранной последовательности; и тотже клавиатурный джойстик, где несколько одновременных нажатий необходимо отработать в реальном времени.
-
? foot@ - 15.02.2012 19:58
Etc>>Я не специалист, ном мне кажется, что:
>>- Напрямую с регистром клавиатуры работают большинство интерактивных программ - DOS, игры и текстовые редакторы;
Только те, которые маскируют прерывание, в основном игры.
>>- "по кнопке СТОП" - если мне память не изменяет - генерируется какое-то прерывание;>>
Поленились Вы всё-таки свою статью дочитать даже до середины.
>>- организация работы с клавиатурой в БК0010 и МБК0011М не отличаются.>>
Непонятно, что значит организация. Регистры ведут себя одинаково.
-
? anonymous - 15.02.2012 20:09
Вспомните, как устроен контроллер клавиатуры у ПиСи, на базе микроконтроллера 8041/8042. У него, как и у ВП1-014 два регистра, команд-состояния и данных. В регистр команд и регистр данных пишутся байты, а со стороны mcu выставляется флаг, в какой из регистров записан байт, регистр состояния же куда интереснее: в нем имеются флаги заполненности буферов, один из них выставляется, когда со стороны mcu записывается байт и указывает, что нужно прочитать буфер данных со стороны компа, другой указывает, что буфер прочитан со стороны mcu и комп может давать следующую команду. Эти флаги при инициализации прошивки контроллера могут быть отображены на аппаратные сигналы для запроса прерывания у системы. Теперь, чем это не БКшная "сторона" ВП1-014? А что там по другую сторону регистра - пользователю знать не требуется. Мы с Kisser хотели приделать клавиатуру от PC несколько лет назад, но дело так и не довели до конца, я использовал для этого древний чип 8742, с УФ-стиранием, подключив его на магистраль БК с дешифратором и контроллером прерываний на CPLD, но так и не дописал фирмварь, т.к. отвлекся на другие дела, как и Kisser. Суть доработки в том, что регистр данных читается по тому же адресу, что и у ВП1-014, а регистр состояния размещен был в CPLD, и через него читалось состояние ножки запроса прерывания по заполненности буфера, 6 бит писался-читался в триггере CPLD и управлял контроллером прерывания, выставлявшим вектор из регистра CPLD, указываемого еще одной ножкой 8742, на которой сигнал выставляться должен был прошивкой, в зависимости от состояния alt. Для монитора системы и программ никакого отличия в функционировании заметить было невозможно, также еще один из свободных выводов подавался на 531АП2 регистра SEL1, выставляя сигнал удержания клавиши нажатой. Потому, думаю, просто надо повесить на регистры клавиатуры какой-нибудь микроконтроллер, который будет обслуживать и сканирование матрицы старой клавиатуры, и обслуживание порта PS/2, и выдавать коды в регистр данных, делающий вид, что он ВП-014. Он же может СТОП определять в любом месте матрицы любой нестандартной клавиатуры и давать знать о ее нажатии на отдельном выводе.
Кнопка же STOP подает импульс на вход IRQ1 процессора, переводящий процессор в HALT-моду, пультового отладчика. Однако в оригинальной БК не реализованы регистры CRS&CPC, а также стек эмулятора микрокода MicroODT, из-за экономии на памяти и логике. При нажатии СТОП, процессор переходит в пультовый режим, о чем сообщает, перезаписывая регистр SEL1 его же значением, с установленным 3 битом, что регистрируется в специальном триггере БКшки и первое чтение SEL1 после любой записи в него возвращает содержимое с установленным 2 битом, использующимся в БК для анализа прерывания причины прерывания. После записи флага пультового режима, процессор сохраняет контекст, записывая RS в CRS и PC в CPC, но в БК их просто нет, потому возникает прерывание по ошибке обращения к каналу с 4 вектором, не маскируемое средствами режима пользователя. Если предоставить процессору эти два регистра, то он корректно выйдет в пультовую моду, из которой можно записать в стек пользовательской моды значения регистров этих, а в них занести код из 4го вектора - тогда команда будет прервана корректным образом и возврат из прерывания произойдет не абы куда, а в место прерывания, адрес которого теряется, если не пишется в CPC. Так и из прошивок СМК, и из пультового отладчика, эмулируется нажатие СТОП без зависания программ.
Что касается буферизации клавиатуры, то к каждому байту в FIFO нужно просто добавить еще один бит (а т.к. у нас код клавиши БК 7-битовый, для этого можно 8й бит задействовать шины mcu), определяющий состояние АР2 на момент нажатия клавиши и на выходе FIFO модифицирующий вектор прерывания. На работе старых программ это никак не отразится, для новых же программ нужно предусмотреть запись команды в контроллер клавиатуры, включающий режим передачи скан-кодов насквозь, чтоб отслеживать нажатия и отпускания клавишь в новых программах.
-
? foot@ - 15.02.2012 20:17
Voland>>Лучше вот что скажите: PS/2 клавиатуру в регистры старые перекодировать, или перекодировать на уровне ПЗУ? Много программ работает напрямую с регистром клавиатуры?>>
Если нужна полная совместимость для реплики, то перекодировать напрямую в сигналы старого регистра.
В БК-12 можно улучшить алгоритм регистра при нажатии последовательно двух клавиш - замена регистра данных после отпускания первой или по факту нажатия второй. Можно добавить ещё два регистра данных для распознавания одновременно нажатых клавиш.
Болле трёх одновременно нажатых клавиш писиклавиатура корректно не отрабатывает.
Voland>>И по кнопке СТОП - причину частого зависания после ее нажатия можно убрать так, чтобы не сломались какие-то программы?>>
Никак ни уберёшь. Можно попробовать только "развесить" восстановив каким-то образом предыдущий вектор прерывания.
-
? Etc. - 15.02.2012 22:30
[to foot]
foot>>как работает реальная писишная клавиатура. Каким из двух предложенных Вами способов?
- я описал 2 модели, которыми можно получить данные об одновременном нажатии клавиш для последующей их обработки, а поскольку ни та, ни другая модель в БК не используются - то и обсуждать нечего!
foot>>два взаимоисключающих процесса: отложенную буферизацию нажатий, ибо хрен её знает, когда процессор соизволит последовательно прочитать все коды набранной последовательности; и тотже клавиатурный джойстик, где несколько одновременных нажатий необходимо отработать в реальном времени.
- Извините, но Вы думать головой ленитесь, но хорошо, разжую мельче, благо добрый по натуре.
0. Что должен уметь "контроллер PC-клавиатуры" согласно вшитой в него таблице:
0.1 Читать состояние регистра клавиатуры БК;
0.2 Сопостовлять код нажатой клавиши PC-клавиатуры - набору сигналов подаваемых на вход ВП1-014;
0.3 Сопостовлять событие "не нажата"/"нажата" клавиши PC-клавиатуры - биту состаяния клавиши м/c регистра;
1. Для алфавитно-цифровых и управляющих клавиш:
1.1 Как только разрешается прерывание от клавиатуры - из буфера сигнал нажатой клавиши отправляется на вход ВП1-014;
1.2 Пока нет разрешения прерывания от клавиатуры или выработанный ВП1-014 байт не считан - нажатые клавиши попадают в буфер FIFO до его заполнения или очистки;
2. Для "СТОП" - формирование сигнала нажатия клавиши СТОП.
3. Для функциональной клавиши (расширенных клавиатур) не сопоставленных клавишам БК:
3.1 2 регистра по 8 бит, для возможности сопоставления события "не нажата"/"нажата" - 0/1 - выбранным клавишам клавиатуры PC;
3.2 подключение этих 2-х регистров на вход порта УП;
.
Месье FOOT, если и теперь не понятно - ЛЕСОМ!
¤
¤
-
? Kisser - 17.02.2012 23:54
Ради интереса загнал вот это
http://www.xess.com/projects/ps2_ctrl.pdf
в горячо любимые МАХ7000. Получилось всего 45 ячеек. Конечно, с ДА и регистрами в 64 ячейки не впишется, но в 7128 думаю вполне. Это для олдскул...
Хотя, там нужен все-таки контроллер, хотя бы из-за того, что формируется 2 кода - на нажатие и на отпускание - надо их в один преобразовывать, да и альты со СТОПами отлавливать силами плис - слишком расточительно.
Но с контроллерами не дружу, потому если все-же БКху удастся найти, попробую заняться подключением 8242 с плисной обвязкой, как описывал Anonymous.
-
? anonymous - 18.02.2012 21:40
Я его применял, просто потому что они были, но 8742 - это каменный век, не надо закладываться на него, их и в продаже-то мало осталось. Регистр обмена лучше в самой плиске сделать и писать в него и читать его, применив микроконтроллер с выводом шины данных на улицу, либо через порт микроконтроллера, в последнем случае ничего не теряете - быстродействие у современных контроллеров достаточное для этого.
-
? Etc. - 18.02.2012 21:47
[to anonymous]
Не подскажите аналога CY7C63743, но не с 2-мя а с 4-мя а лучше 6-ю портами по 8 бит?
-
? foot@ - 20.02.2012 10:45
Etc>>Месье FOOT, если и теперь не понятно - ЛЕСОМ!>>
Да ради бога! Не Вам же этот контроллер делать.
-
? Etc. - 20.02.2012 12:31
foot>>Не Вам же этот контроллер делать.
У меня нет опыта работы с железом/софтом, я простой пользователь.
Зато Вы - точно сможете! Вот Вам ссылочка - изучайте!
http://opendevices.ru/wp-content/uploads/2011/09/CY7C63723.pdf
Или скажите - на этом нельзя контроллер клавиатуры сделать?
С загружаемой таблицей подстановки клавиш, с буфером нажатий... докажите что этого нельзя сделать ;)
-
? dk_spb@ - 20.02.2012 23:11
Кстати, на одном из известных форумов вывалили БК11 по 1500 руб.
И желающих практически нет ....
- << Форум