Подтверждаю. Прошил и Специалист_МХ2 заработал с PS/2 клавиатурой. Сейчас подстраиваю клавиатуру под себя - есть возможность программировать соответствие клавиш.
Вид для печати
Подтверждаю. Прошил и Специалист_МХ2 заработал с PS/2 клавиатурой. Сейчас подстраиваю клавиатуру под себя - есть возможность программировать соответствие клавиш.
Работает ли эта версия PS/2 адаптера у кого либо со специалистом экспресс?
Или она только заточена для специалиста МХ?
Прочитал всю тему и не нашёл ссылку на исходники адаптера от Vinxru. Есть всё от схемы до ПО. Сайт.
Переместил исходники проекта на свой сайт.
fifan, на всякий случай посмотри на картинку
http://uploads.tapatalk-cdn.com/2017...b1be085788.jpg
резистор обведенный красным не нужен и ресет нужно подавать проводом прямо на тригер
А ведь верно, сброс на схему я не подавал, попробую. Может и резистор не нужно будет выпаивать. Спасибо, tank-uk. До этого я использовал Атмеги8 только в DIP корпусе и в констроллерах интегрированных в основную схему (Специалист 48 SRAM и Специалист SRAM).
Подключил адаптер к Специалисту_МХ2. Резистор на плате адаптера на выводе сброса не убирал. К эту выходу подпаял проводок идущий прямо на схему сброса.
Минусы работы адаптера на Специалисте_МХ2 - не работает тест клавиатуры в переделанном HardWareMan'ом тесте Рюмика. Просто идёт писк и моргание стелизованного вида клавиатуры.
Второй минус - не соответствие клавиш в МХ режиме (переход по Print Screen). Смещение тестовых клавиш вправо на одну клавишу, т.е. чтоб сработала F6 нужно нажать F7. Нужно переделывать прошивку либо сидеть вручную программировать соответствие.
Разбираемся сейчас с автором адаптера по моим минусам. Глюк в тесте Рюмика должен лечится уменьшением номинала резисторов - я ставил 4,7 кОм. Кто будет повторять адаптер поставьте пожалуйста резисторы на 3,3 кОм. Резисторы, это те которые подключены и к портам ВВ55 (18 штук).
Второй минус будем наверное решать перепрошивкой.
Обновил прошивку PS/2 адаптера клавиатуры. Изменения касаются режима МХ: сделано правильное присвоение функциональных клавиш верхнего ряда Специалиста_МХ. Проверено в RAMFOS'е и в моём SpetsCommander'е. В атаче - архив прошивки.
Ещё раз напоминаю, что после записи фьюзев контроллер невозможно будет заново прошить, поможет только Fusebit doctor т.к. фьюз RSTDISBL установлен в 0.
Доброго дня! Есть вопрос по работе адаптера, может кто так-же пробовал: для тестов не стал устанавливать фьюз-бит RSTDISBL и залил прошивку из предыдущего поста. Хотелось-бы узнать, нормальное поведение адаптера или нет, когда после нажатия на кнопку сброс на основной плате, клавиатура перестаёт работать и оживает только после физического передёргивания её разъёма, и то, похоже, не каждый раз оживает. Основная плата из параллельной ветки "от Павля Рябцова", основанная на Специалист-М.
В параллельной теме "Специалист-М и PS/2 клавиатера" что-то похожее начало обсуждаться, но как-то разговор не склеился...
Тоже поинтересуюсь - а как ведет себя СпециалистМ с подключенным адаптером, в который не воткнута клавиатура?
У меня, вроде бы, тест (Рюмика) отказался запускаться... Это нормально, или мне показалось?
Когда воткнул клавиатуру - тест пошел...
По вопросу с неустановленным фьюзом RSTDISBL - в принципе, я могу это проверить, и плата такая же; но зачем это надо? :-)
Да есть такая особенность что если физический не вставлен разъём от PS/2 клавиатуры комп не работает. На Специалисте МХ2 вообще цветная шахматка на экране и зависание.
Я где-то просил, что бы поставили резисторы на адаптер (18 штук) номиналом меньше 4,7 кОм. У кого это так проверьте работает ли тест клавиатуры в тесте Рюмика.
К сожалению, эту просьбу я прочёл уже после того, как впаял все 18 штук десятикилоомников и, как ни странно ;) , клавиатура работает без вопросов. Я только до конца не пойму физику вопроса, для чего там уменьшать величину подтягивающих резисторов, неуж-то емкость входа ВВ55 настолько велика, что фронты затягиваются настолько, что порт не успевает распознать единицу? Какое тут отличие от классической Спецовской клавиатуры у которой, к тому-же, ещё и дребезг контактов присутствует, что значит однозначное затягивание фронта...
Да, забыл сообщить: после установки фьюза RSTDISBL, клавиатура перестала отваливаться.
Изменить номинал резисторов я просил для того чтобы проверить тест клавиатуры в тесте Рюмика. Там все символы кнопок просто моргают и нельзя что-то разобрать. Тест Рюмика ( в архиве есть ридми) никто не юзал что ли?
Нет после выбор теста клавы (кнопка 3) высвечивается символическая клава. На ней у меня все поля сразу начинают моргать - глюк.
Я думаю нужно снять видео чтоб все меня поняли. Я написал не моргание при нажатии клавиши, а вообще глюк с морганием почти всего поля. Глюк идёт несмотря на то, что ни одна клавиша не нажата.
кстати - собрал адаптер, выяснил что из 6 имеющихся клавиатур работают две. полез в исходники, нашел пару багов в части работы с железом PS/2.
собственно вот:
Скрытый текст
//---------------------------------------------------------------------------
// Низкоуровневые функции протокола PS/2
#define ps2_setClock0() { PORTD.PS2_CLOCK = 0; prepared_ddrd |= (1 << PS2_CLOCK); DDRD.PS2_CLOCK = 1; }
#define ps2_setClock1() { prepared_ddrd &= ~(1 << PS2_CLOCK); DDRD.PS2_CLOCK = 0; }
// DataIn и DataOut не нужны - выходы с ОК, 0==Out, In==1
#define ps2_setData0() { PORTD.PS2_DATA = 0; prepared_ddrd |= (1 << PS2_DATA); DDRD.PS2_DATA = 1; }
#define ps2_setData1() { prepared_ddrd &= ~(1 << PS2_DATA); DDRD.PS2_DATA = 0; }
//#define ps2_setData0() { PORTD.PS2_DATA = 0; }
//#define ps2_setData1() { PORTD.PS2_DATA = 1; }
#define ps2_waitClock0() { while(PIND.PS2_CLOCK); }
#define ps2_waitClock1() { while(PIND.PS2_CLOCK==0); }
#define ps2_waitClock() { ps2_waitClock1(); ps2_waitClock0(); }
#define ps2_data() PIND.PS2_DATA
#define ps2_wait() (PIND.PS2_DATA || PIND.PS2_CLOCK)
и вот:
// Отправить байт клавиатуре
// Вход: v_a - байт
void ps2_send() {
// ps2_setDataOut();
ps2_setData0();
delay_us(20);
ps2_setClock1();
delay_us(10);
v_j=0;
ps2_waitClock0();
for(v_i=0; v_i<8; v_i++) {
delay_us(10);
if(v_a&1) { ps2_setData1(); v_j++; } else ps2_setData0();
v_a >>= 1;
ps2_waitClock();
#asm
WDR
#endasm
}
// Бит четности
delay_us(10);
if(v_j&1) { ps2_setData0(); } else { ps2_setData1(); }
ps2_waitClock();
// Стоповый бит
delay_us(10);
ps2_setData1();
ps2_waitClock();
// Пропуск ACK
// ps2_setDataIn();
// Лишний waitClock, из-за него не работали старые клавы
// ps2_waitClock();
if(ps2_data()) reboot(); // Ошибка клавиатуры. Перезагружаем её.
ps2_waitClock1();
ps2_transmitMode();
#asm
WDR
#endasm
}[свернуть]
Народ, а на али продаются такие вот длинноногие панельки как в посте https://zx-pk.ru/threads/20586-ps-2-...l=1#post897002
В чупа чупсе они что то не по гуманным ценам.
Сам себе и отвечу. Кто не сможет найти длинноногие панельки можно взять на али однорядные длинноногие - https://aliexpress.ru/item/329596270...5aa233edUiIE1t
Если вдруг кому еще интересно - небольшая доработка контроллера клавиатуры. Позволяет получить работающий сброс компа с сохранением возможности последовательного программирования контроллера. также поправлено переопределение кнопок - можно переопределить ресет и кнопки переключения раскладок.
схема:
Вложение 78356
прошивка, исходник и батник для avrdude с фьюзами на всякий случай:
Оперативно оформил предложение Erg6845'а у себя на сайте. Доработка размещена в разделе АДАПТЕР PS/2 КЛАВИАТУРЫ, ссылка на архив размещена в таблице.
прошил с RSTDISBL = 1
прошивку взял с поста https://zx-pk.ru/threads/20586-ps-2-...=1#post1171160
29 вывод в 0. он щас вообще висит в воздухе
Доброго дня. надо бы довести до ума....
атмега48 подойдет вместо 8-й? или можно прошивку под атмегу48?
ясно. спасибо.
решил забить окончательно на этот контроллер и спаять оригинальную клавиатуру из старой писишной
ну не люблю оставлять начатое....перепаял на другой плате....запустилось с прошивкой с сайта специалист-пк.рф
Еще багфиксы к клавиатурному контпроллеру
- сброс по умолчанию - Ctrl-Alt-Del, можно сделать как раньше назначив кнопку с кодом 512
- назначив на любую кнопку код 1024 - получим сброс по Ctrl-Alt-Del (кнопка не меняется)
- сброс по PC6 эмулирует открытый коллектор (не проверено)
- 08.2025
- убрал включение светодиода NumLock
- пофиксил сброс при включении - теперь делается один раз при подаче питания, ошибка клавы не приводит к ресету
Вложение 82670
Столкнулся с такой проблемой по Reset. Нажимаю Ait--Ctrl-Del. (узел сброса собран на кт315 , два резистора по 10 кОм , как рисовалось) Микросхема выдает импульс 5В 5mS, на базу КТ315 приходит 1В импульс., а вот на сброс с коллектора КТ315 напряжение снижается на 2,5 В (до 2,5В) и сброса не происходит. Я пока прихожу к выводу, что длительность импульса не достаточна на сброс.
Подскажите, вроде проблема, не очень сложная. Но как заставить работать пока не знаю, менял плечи резисторов. Как заставить транзистор открываться чуть дольше.
- - - Добавлено - - -
https://pic.maxiol.com/?v=1764392858...g4401.jpg&dp=2
- - - Добавлено - - -
[IMG]https://pic.maxiol.com/thumbs2/17643...30.img4401.jpg[/IMG]
- - - Добавлено - - -
[IMG]https://pic.maxiol.com/thumbs2/17643...30.img4402.jpg[/IMG]
- - - Добавлено - - -
[IMG]https://pic.maxiol.com/thumbs2/17643...30.img4404.jpg[/IMG]
Коллектор с эмиттером не перепутали? В открытом состоянии на переходе коллектор-эмиттер КТ315 должно падать порядка 0.6-0.7в, ну чуть больше, но никак не 2.5в.
Нет не перепутал. Вчера весь день экспериментировал. Характерно, что не работает Atmega 8, которая установлена на Доп.плате (вставляется сверху на штатную плату, в разъемы РУ5, ИР12, ИР16, ВВ55). (ставил туда две разных Atmega 8, обе ведут себя одинаково). Atmega 8 в корпусе TQFP32. Сигнал от Atmega 8 с вывода 20, на резистор 10 кОм приходит правильный-(амплитуда 5В) , а базе транзистора (точка уже между сопротивлениями 10кОм ) не хватает напряжения для полного открытия транзистора кт315 (транзисторы тоже разные ставил). Схема сброса ведет себя так - как будто происходит утечка и напряжение на базе не достигает уровня достаточного для полного открытия транзистора, не хватает буквально 0,3 В . Короткого на Atmega 8 не обнаружил. Что самое интересное, отдельно на макетке - выпаиваю Atmega 8 из Доп. платы - ставлю на макетку - он работает как надо, транзистор с Доп.платы, на отдельной плате - работает как надо. Главный вопрос - почему просаживается сигнал идущий на базу с Atmega 8. Какой вид соединения\не соединения \КЗ или отсутствие сигнала на чипе может повлиять -на то что, чип выдает слаботочный сигнал? (по другому не могу объяснить эту потерю амплитуды сигнала на базе КТ315? Корректно на шляпе не работает только Сброс- Все кнопки клавы работают правильно). И наверно добавлю - длительность сигнала - даже на чипе амплитудой 5В - меньше на много - в сравнении с чипом корректно работающем на макетке...( что то его тормозит - останавливает) выдавать более длительный сигнал- может это основная причина- что сигнал на базе просто не успевает вырасти до нужного уровня. Что то запрещает в самом начале выдавать импульс- что это может быть...
Шляпы, чипы, довольно трудно поспевать за прихотливым стилем изложения.
Не знаю, хорошая ли идея использовать пин AREF как GPIO на выход, но если мега8 это позволяет, то почему нет. Надо бы посмотреть настройки пина и почитать о его возможностях.
Для открытия транзистора нужно всего-то +0.6в на базе относительно эмиттера (который, надеюсь, прочно заземлен) и совсем уж какой-то микроамперный втекающий ток.
Все в тексте поправил... Как будто идет запрет на выдачу сигнала с 20 вывода Atmega 8, сразу после его появления...
совершенно тупой вопрос - а ножка сброса атмеги куда подключена? случайно не туда же куда коллектор транзистора? по эффекту - очень похоже. жмешь сброс, транзистор открывается - и сбрасывает атмегу...
- - - Добавлено - - -
идея честно позаимствована вот отсюда
https://habr.com/ru/articles/554946/
ну и схема в даташите это дело подтверждает, уж транзистор открыть там тока точно хватает.
- - - Добавлено - - -
если я правильно помню (давно в код не лазил) - 300мс - это по включению питания, а по кнопке - пока эту кнопку (или Ctrl-Alt-Del) не отпустишь.
Хороший Вопрос! Правильный! Вы правы! Это я туплю... туплю дальше... вопрос тогда, у Доп платы - сброс соединяется со сбросом основной платы. Куда коллектор кт 315 тащить?Цитата:
совершенно тупой вопрос - а ножка сброса атмеги куда подключена? случайно не туда же куда коллектор транзистора? по эффекту - очень похоже. жмешь сброс, транзистор открывается - и сбрасывает атмегу...
значит 29 ногу Атмеги, отрезать от сброса и все?