Не всегда можно адекватно разместить все кнопки на PC-шной клавиатуре.
Вид для печати
Не всегда можно адекватно разместить все кнопки на PC-шной клавиатуре.
Написали десяток постов в пустую. Никто не предложил существенного выхода из поднятой ситуации. Я не пойму чем вам не нравиться предложенная раскладка?
Если большинство символов совпадает это хорошо. А чтоб подделываться под писишную, то нужно менять Монитор в Специалисте или дотошно следить и прописывать в проге атмегы все регистры под несколько "неудобных" кнопок. Я так понял, дело упёрлось в такие как -/_, =/+ и другие на PS/2 клаве. Но ничего не поделаешь, по крайней мере сейчас. Главное запустить PS/2 адаптер, оттестировать. Один vinxru конечно не уследит за всеми клавишами, их так много, более ста. :speccy:
Главное запустить адаптер. Потом все клавиши отладить. :v2_cool:
Что например скажет b2m на счёт соответствия нажатий клавиш двух клав PS/2 и специалистовской. Он как-то обошёл эту проблему в своём эмуляторе.
Там еще проблема в том, что контроллер клавиатуры должен знать активную раскладку.
Клавиша " ' Э будет привязана к трем различным кнпокам Специалиста в зависимости от РУС/ЛАТ + Шифт.
Именно. Проблема Спеца в том, что он на клавку не говорит об выбранном языке (ситуация с шифтом решаема). Тот же Орион говорит - там предусмотрено. А в спеце нет. Тупо матрица 12х6. Вот и приходится повторять ее.
А софт напрямую в клаву лезет или можно поправить монитор?
На последних раскладках потерялся Ъ
Короче, проблему высказываниями здесь не решить. Нужно собирать девайс. Там разберёмся.
Я знаю, что адаптированные со спецтрума игры (вроде Lode Runner или D.T.E.), бэйсик "Практик" и еще некоторые обычные игры (КОРТ, Алмаз) точно лезут напрямую, причем некоторые через IN/OUT. Обидно, что одной правкой монитора не обойтись - так бы можно было в нем вывести штатный сигнал языка. Сам сигнал, кстати, есть - там признак в памяти у стандартных мониторов, который переключает высоту тона нажатия клавиш, которая разная для языков.
Можно конечно сделать, что бы пользователь сам сообщал контроллеру, что переключился РУС-ЛАТ. Причем, он это уже и так делает, переключая раскладки клавишей Scroll Lock.
Тогда будет крайне непонятно поведение клавиатуры, если Scroll Lock и РУC/ЛАТ будут в противоположных состояниях.
Очередная версия.
Я тут сделал горячее подключение клавиатуры и перезапуск клавиатуры, если она зависла.
Сделал режим MX. Переключается клавишей Print Screen.
Как бы хотелось взглянуть на фьюзы для прошивки.
vinxru, ты писал: "прошил один из контроллеров клавиатуры с фьюзом RSTDISBL. Т.е. ножка, которая использовалась для перепрограммирования контроллера, теперь используется для вывода данных. В этой поделке она сбрасывает компьютер.
И сразу же нашел ошибку в программе. Вывод "сброс компьютера" оказался подключенным через внутренний резистор 10 ком (программа обнуляла регистр DDRС). Пришлось ставить усилитель на транзисторе. Еще забыл задать начальное состояние сброса. Сразу после включения до нажатия любой клавиши, сброс зажат."
На схеме не где не отображен этот транзистор. Подскажи где его ставить. Ещё на схеме не подписаны выводы синхронизации и данных на PS/2 клавиатуру.
У меня тоже заработал PS/2 адаптер только наполовину. Объясню почему. Всё в STD режиме работает, но переключаюсь в МХ (в Специалисте_МХ2 по директиве Х) и всё. Висим. Ну вроде такие как ВК, ПС, ПВ, РУС/LAT работают, а вот цифровые, верхний ряд и цифры - не в какую, даже не пищит динамик на нажатие большинства. Переход в МХ режим, как написано здесь по Insert'у и по Print Screen'у не происходит и как оно должно происходить - индикация-то режима вроде есть, а толку нет. В МХ нужно вначале вводить дату. Никак. Ладно нажимаю ВК и всё. F6-то не работает, даже игры с Flash-диска не запустить. Обидно.:(
Ещё как организовать сброс? Я так предполагаю нужно вывод Атмеги (какой?) посадить на сброс? Но у нас фьюз RSTDISBL не включен. Я выставлял фьюзы как на рисунке два топика назад. Блин а если он у нас включен - всё! без Atmega Fusebit doctor'а уже этот контроллер не прошить?:mad:
Вот нарисовал выводы на разъём клавы.
На сайте автора прошивки от 5.06.2013 (я его прошивал), а здесь несколько топиков назад представлен архив с файлами от 24.03.2013.
Автор написал:
"А у меня все руки не доходят перекинуть F1-F10. Завтра точно сделаю, или я редиска."
Но я говорю, что почти все клавиши не работают в МХ режиме, не только функциональные (в Специалисте не на чем проверить Fn - может и работают). Или только сделано само переключение режима? Кодировки-то для МХ другие (цитата от b2m):
Цитата:
Вот таблица кодов из монитора Специалиста:
00 01 02 03 04 05 06 07 8A 8B 8C 1F
3B 31 32 33 34 35 36 37 38 39 30 2D
6A 63 75 6B 65 6E 67 7B 7D 7A 68 3A
66 79 77 61 70 72 6F 6C 64 76 7C 2E
71 7E 73 6D 69 74 78 62 60 2C 2F 7F
81 0C 19 1A 09 1B 20 08 80 18 0A 0D
А вот уже из Специалиста-МХ:
1B 8A 00 01 02 03 04 05 06 8B 8C 1F
3B 31 32 33 34 35 36 37 38 39 30 2D
4A 43 55 4B 45 4E 47 5B 5D 5A 48 3A
46 59 57 41 50 52 4F 4C 44 56 5C 2E
51 5E 53 4D 49 54 58 42 40 2C 2F 5F
81 0C 19 1A 20 20 20 08 09 18 0A 0D
Как говорится, почувствуйте разницу. Не совпадает верхний ряд, а также 09,1В.
Большие и маленькие буквы - не важно, так уж устроен драйвер.
Остальное совпадает.
Вместо Atmega Fusebit doctor'а лучше программатор с функцией параллельного программирования AVR взять.
http://www.zx.pk.ru/showpost.php?p=624219&postcount=85
Кстати и цена смешная.
Имеется в наличии только Atmel48-20PU. Хотелось бы получить прошивку под эту МС, плюс какие фьюзы выставлять ...
Прошивай только вот этой прошивкой (в атаче). Мне её автор дал чтобы я проверил режим МХ. А у меня как назло блок питания на Специалисте_МХ2 сгорел. Пока ставлю новый. Фьюзы эти. Режим MX должен переключается клавишей Print Screen. Было и другое описание назначения клавиш (ПВ, ПС и т.д.), но я его потерял. Кто найдёт впишите в тему.
Вот спаял Atmega Fusebit Doctor. Буду лечить свои атмеги.
Кстати пока не будет работать сброс в PS/2 адаптере. Автор предусмотрел его, но чтобы его задействовать (с вывода 1 атмеги подать на сброс компьютера) необходимо включить фьюз RSTDISBL. Но лучше это пока не далать т.к. потом ещё раз прошить контроллер без специальных мер не удастся. А у меня есть специальные меры - Atmega Fusebit Doctor:v2_dizzy_queen:
Пробовал я пробовал, но Atmega48 не заработала. Atmega8 работает с этой прошивкой.
http://zx.pk.ru/showpost.php?p=586194&postcount=173
А с этой не работает.
http://zx.pk.ru/showpost.php?p=628726&postcount=184
---------- Post added at 07:47 ---------- Previous post was at 07:43 ----------
Совсем забыл, фьюз RSTDISBL поставил, но какие бы кнопки не нажимал, никакого шевеления на 1 ноге Атмеги.
Вот оно что, Михалыч (вернее vinxru). :v2_dizzy_snowball2:
Я то нереагирование клавиатуры списал на сбой моего ПК, думал может что-то по питанию. А оно вон как оказалось - последняя прошивка не рабочая.
Если ты, Vladimir_S, прошил старой прошивкой то попробуй режим МХ - из Монитора 4 переключение по директиве Х. Print Screen пробовал? Должен включиться режим МХ - загорается светодиод на клавиатуре.
:speccy:Что-то скудное описание соответствий клавиш. Сюда буду писать найденные:
Print Screen МХ/Стандарт;
Caps Lock - РУС/LAT;
Scroll Lock - ЙЦУКЕН/QWERTY;
Delete - Сброс;
Esc - АР2;
Tab - ТАВ;
Shift - НР;
Ctrl - ПВ;
Windows - HOME;
Alt - ПС;
Enter - ВК;
Backspace - ЗБ;
Pause/Break - программирование.
...:speccy:
Вот картинка соответствий. Вообще-то они (соответствия) настраиваются самостоятельно, но об этом позже напишу.
Да не так просто заменить АТМЕГУ8 на АТМЕГУ48, АТМЕГА8 имеет 1 КБ РАМ, а АТМЕГА48 имеет только 512 Байт РАМ.
Пробовал заменить исходниках
#include <mega8.h> на #include <mega48p.h>
GICR на EIMSK
WDTCR на WDTCSR,
всё компилируется но при линковке выдаёт что нехватает РАМ, потому что используется много переменных в памяти:
// Переменные в памяти
volatile unsigned char b2c[256]; // Рассчитанный заранее ответ для прерывания.
volatile unsigned char c2b[64]; // Эти переменные должы идти первыми в программе,
volatile unsigned char c2d[128]; // что бы занимать адреса 100h, 200h, 240h, 2C0h
volatile unsigned char d2c[64];
Если бы немного оптимизировать программу и по возможности эти массивы расчитать заранее и записать во флэш, тогда бы и 512 Байт памяти хватило и можно бы было использовать АТМЕГУ48 ...
В программе в зависимости от scanMode используются либо c2b и c2d, либо b2c и d2c.
По идее можно использовать только два массива на 256 и 64 байта и инициализировать их в зависмости от scanMode динамически. На этом экономиться 192 байта. Но этого всё равно не хватает для АТМЕГА48 :-(
Возможно можно упростить код, исключив ненужные режимы?
Интересует только режим эмуляции оригинальной клавиатуры для Специалиста Экспресс.
Не знаю, автор просто подключал в схему Специалиста, т.е. к выводу 2 DD12 по схеме Специалиста Волкова.
Автор мне сообщил, что нужно прошивать этой прошивкой, в ней работает сброс. Вот в атач скачал. Весь архив тута.
fifan, Допроверялся. Прошивка в твоем последнем посте рабочая. Работает и сброс и при нажатии на Print Screen загорается светодиод. Но не успел проверить детально, пришлось ненадолго уехать по работе. А когда приехал через пару часиков не могу запустить контроллер. При включении выбрасывает какой то мусор вместо курсора, или если стоит мигающий курсор, то при нажатии на любую клавишу появляется "/" и комп виснет. Все прозванивается как надо и Атмеги менял и ВВ55. Уже крыша едет. Отложу на недельку.
vinxru пропал куда-то. Пьет чтоле?
А ведь он еще в Орионовской теме обещал выступить с премьерой!
Он ушёл на другой форум (www.nedopc.org/forum). Ещё в ЖЖ бывает активен.
Здесь он тоже бывает, но редко, в основном его можно застать на http://www.nedopc.org/forum
Vinxru здесь больше не пишет. Он тоже собирает Специалист_МХ2. Вот он что написал на счёт его схемотехники: "Ты в курсе, что в плате есть небольшая ошибка. Сигнал CMX формируется из WR процессора, а не из WE памяти. При записи в любое устройство, память работает на выход и регистр цвета на выход. У меня из за этого память глючила."
fifan, Если будешь у себя править сигнал СМХ, потом рекомендации выложишь?
Errata на сигнал CMX давно записана под номером 3 в соответствующей ветке.
Собрал адаптер. Поначалу работал кое-как, реагировал на нажатие некоторых клавиш. Менял прошивки. Сейчас не реагирует ни на одну кнопку.
Посмотрел пайку. Один недостаток - за неимением подтягивающих резисторов на 1 кОм поставил на 4,7 кОм. Может это оказывать влияние вплоть до отказа в работе?
И, подскажите, какая прошивка последняя?