Как стать автором
Обновить

Комментарии 26

на борту был встроенный кварц на 8мгц. А большего оказалось и не нужно

При этом у самого Z80 столько же.

От этого мегагерцы не становятся другими.

В аналогичной ситуации я просто взял TCA8418 на опрос клавиатуры и простенький STM32 на мозги. Плюс простенькая схема на 2 транзисторах для организации 2-х стороннего обмена с имитацией ОК.

Как минимум нужны диоды со стороны левых регистров (которые драйвят ряды). Иначе при нажатии 3 кнопок в 2 рядах например будет гостинг и без диодов не просто появится 4ая нажатая виртуально кнопка (как было бы с диодами), а вообще хзчто из-за деления напряжения на резисторах. Как максимум нужно по диоду на каждой кнопке (можно применять сдвоенные в корпусе sot-23), тогда вообще любая комбинация клавиш будет точно опознаваться.

У протокола PS/2 в отличие от USB нет ограничений на одновременно нажатое кол-во клавиш. (если точнее, у USB от этого ограничения можно избавиться только извратами с несколькими ендпоинтами и т.д.)

Верно. Но, я по ходу дела уже эмпирически установил, что две-три кнопки одновременно оно вполне нормально опознает. А дальше уже можно списать на "нефиг по клаве ходить".

В общем, концепт я сделал, а более въедливые товарищи уже под свои задачи доработают, если кому нужно.

А как же комбинации Ctrl+Alt+Shift+Button в IDE'шках?)

В большинстве случаев можно развешать клавиши по линиям так, чтобы известные комбинации близко не пересекались, либо совсем не пересекались, особенно, CTRL-ALT-SHIFT.

Важное замечание, отмечу себе такой пунктик на будущее.

Поддерживаю. Раскладка выбрана неудачно - комбинации Shift+W+Q, Shift+W+E, A+S+Alt приводят к фантомным нажатиям - клава не игровая :)

Работа проделана большая. Но что мешало взять контроллер от убитой PS/2 клавы и развести кнопки?

Как-то даже и не знаю, что ответить.

Вопрос, наверное, должен пониматься примерно как "Зачем разбираться, как оно устроено, если вокруг только и валяются убитые клавы с контроллерами, которые кто-то более умный уже сделал?"

А я ведь в самом начале пишу - цель сугубо академическая.

Реализацию в железе я начал с того, что обычным образом нашел в столе – микросхемку контроллера Attiny2313A и жмень сдвиговых регистров 74HC595 и 74HC165.

А если бы там лежали радиолампы? Делали бы на лампах? 64-пиновые PIC18 того же производителя стоят где-то пару долларов. Двух штук достаточно, чтобы все ваши кнопки подключить напрямую. Развести по 40 линий на микроконтроллер вроде как не проблема, если микроконтроллер на другой стороне платы. Может я что-то непонимаю. Хоть все кнопки одновременно нажимай. Код намного проще.

Подловил. Я ведь и усилители на лампах тоже собираю.

Вообще, PICи не вписываются в мою личную дендрофекальную философию. Пытаюсь делать, чтобы любой школьник мог разобраться и повторить, а у школьника, скорее всего, как максимум, ардуина найдется.

В одной из следующих статей вообще про декатроны напишу.

И дело не только в трудоемкости рассыпухи, а еще в том, что на нормальном контроллере доступен и другой алгоритм опроса:

выдаем активный уровень на все строки/столбцы одновременно. Ждем прерывания с ортогональных линий. Как только уровень изменился (на любой линии), локализуем нажатие за 8-3-1 шагов (тоже возможны вариации в зависимости от возможности перенастраивать входы на выход).

С множественными нажатиями тоже возможно.

Это принесет повышение быстродействия и экономичности без необходимости повышать частоту сканирования.

ну и просто алгоритм красивый.

Еще на основе похожего алгоритма я делал регистратор замыканий. Делал я его для расшифровки командаппарата, но можно применить и для расшифровки произвольной клавиатуры.

Логика такая: есть N=35 линий, пронумерованных. Все подтяжками притянуты к 0 и настроены на вход. Пускаем бегущую 1 на выход, и смотрим, какие входы на нее реагируют. Строим список соединений. Если список отличается от предыдущего, то сохраняем текущее время и список соединений.

А дальше расшифровываем в табличку.

Астрологи объявили на Хабре неделю годных статей? Однозначно плюсую!

Вообще, PICи не вписываются в мою личную дендрофекальную философию. Пытаюсь делать, чтобы любой школьник мог разобраться и повторить, а у школьника, скорее всего, как максимум, ардуина найдется.

Так и я о том же, "Циклично опрашивая сетку пересечений клавишных проводников, определить пересечение, возникающее при нажатой клавише" - зачем это школьнику, когда он может просто напрямую сосчитать состояние кнопки, дешево, энергоэффективно, меньше помех от "тренировок" длинных линий, минимум кода. Доисторические сдвиговые регистры и нетривиальный код школьника скорее демотивируют. Не нравятся вам PIC, ну да на вкус и цвет как говорится, возьмите ATMEL или что угодно, хоть STM32. Кто не боится корпусов с большим количеством пинов, тот может взять микроконтроллер в 100-пиновом корпусе, или даже больше. Я не вижу проблем разводки дорожек, если на плате с кнопками микроконтроллер будет стоять на обратной стороне.

При всем этом респект за то что сделали что-то своими руками. Напрягает несколько только символика вашего автара в совокупности с никнеймом. Но это может быть только мое, остальным нормально, но модеры пусть по возможности обратят внимание. "rheinhard" как бы ассоциируется с "Рейнхард Гейдрих", крылья аватара - дубовые листья на его воротнике, а символ по центру внизу - половинка от стилизованного SS. Бред конечно, но вот как-то ассоцирируется, не то чтобы сильно напрягает, но некий дискомфорт в общение вносит.

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

Не надо ничего менять. У товарища излишне буйная фантазия.

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

А почему сдвиговые регистры-то доисторические? Вроде, самый ходовой продукт сейчас. Их много в интернет-магазинах, и они дешевые. Так-то и PICи недалеко от них в плане устаревания ушли. Да и на ассемблере пойди заставь школьника писать. :) Си естественнее.

А так, не спорю, можно было бы и stm взять. Как раз, лежит набор дожидается интересного проекта. Есть идея, например, рассмотреть создание самодельного накопителя на базе SPI RAM, с приводом и микросхемой-съемной памятью, располагающейся отдельно на удобной для замены платке. STM в этом случае будет эмулировать, по сути, флешку. А в памяти будет полноценно форматированный операционкой раздел.

Главная идея статьи задекларирована в названии - подключение к компьютеру в качестве клавиатуры по PS/2 – это просто. Хорошая идея, многим интересно разобраться с протоколом, за этим сюда на этот ресурс и приходят. Конкретная реализация, особенно такая специфическая как ваша интересна гораздо меньшему кругу людей. Я не против вашей, я немного против того, чтобы она звучала как разумный вариант для всех. У каждого свои тараканы, лучше, на мой взгляд кратко пробежаться по самым ходовым вариантам, а на свой вариант просто дать ссылку.

Из ходовых вариантов вариантов в моем понимании (которое может быть весьма однобоко)

  • не хочу ничего паять (почти), возьму голубую пилюлю STM32 и сделаю эмулятор работы клавиатуры для удаленной работы;

  • признаю только пики и ассемблер (таковых на удивление немало), сотня клавиш мне не надо, но десяток-другой антивандальных я бы подключил через простейший пик.

  • на халяву досталось плат разработчика с таким-то микроконтроллером, пусть ребенок на Visual Studio на C# что-нибудь сочинит для бабушки, нажала на эту кнопку - ей такая радиостанция на компьютере, другую кнопу - сериалы, третью - песни.

  • и т.д. и т.п.

Вы собственные суждения выдаете за общие суждения, что ли? Это мания величия. Главная идея статьи мной задекларирована в названии, и мне ее раскрывать. Ваше мнение, как писать статьи, мне малоинтересно.

Я выкладываю конкретную рабочую реализацию, коих итак почти нет, вы предлагаете превратить ее в обзорную мусорную статью, коих итак полно. Зачем? Не осознаете этого?

Не нравится чья-то реализация, ну сделайте свою, хоть на PIC в связке c Raspberry Pi. Опишите, напишите статью, даже я зайду. Посмеяться.

Чем обусловлен выбор кнопок?
Такой клавиатурой пользоваться же будет неудобно, и это мягко сказано.

Прототип. На самом деле, терпимо, и можно работать. Клавиатура нужна была к компьютеру, который сам по себе, скорее, экспонат, чем рабочая машина.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории