В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

Не стартует материнка от кнопки питания. Лечим очень нетривиальным методом

📆2 апреля 2018   ✒️maddiego   🔎8.851   💬7  
Приветствую читателей журнала Датагор! Есть у меня пожилой компьютер, которому уже исполнилось лет десять. Параметры у него соответствующие: «пенёк» 3,0 ГГц, пара Гб ОЗУ и древняя материнская плата EliteGroup 915-й серии.

И задумал я куда-нибудь старичка пристроить (подарить, продать), т. к. выбрасывать жалко. Но мешала задуманному одна неприятность: у материнки не срабатывало включение от кнопки питания, и что бы я ни делал, начиная от проверки проводов и заканчивая прозвонкой транзисторов на плате, проблему найти так и не смог. Отдавать в ремонт спецам — ремонт окажется дороже всего компа.

Думал я, думал и нашёл способ запустить моего бедолагу. Выдернул батарею BIOS-а, от чего комп испугался и сразу стартанул при следующем появлении питания! А дальше — почти в каждом BIOS-е есть запуск ПК от любой кнопки клавиатуры или кнопки POWER на клавиатуре. Казалось бы, проблема решена. Ан нет, есть нюансы. С USB-клавиатур запуск не срабатывал. Плюс не хотелось пугать нового хозяина, компьютер должен стартовать от привычной кнопки питания на корпусе.

Пришлось решать проблему по-своему, а наработками спешу поделиться с вами.

ХОД МЫСЛЕЙ МОИХ

У нас есть материнская плата, которая отказывается запускаться, PS/2 порт для клавиатуры, знания в области микроконтроллеров и любопытство.
А что если, собрать схемку, которая с одной стороны, слушает кнопку питания на корпусе, а с другой отправляет код нажатия кнопки POWER на клавиатуре прямо в PS/2 порт? Должно сработать!

Полез я гулять по Интернету, искал статьи, описывающие протоколы работы PS/2 порта клавиатуры, и выяснил, что протокол достаточно простой и очень похож на двухпроводной протокол I2C или TWI, а команды отправляются пачками в основном в одну сторону.
Не стартует материнка от кнопки питания. Лечим очень нетривиальным методом
Распиновка гнезда PS/2 на материнской плате



Пример посылки одного байта


Существуют два стандарта клавиатур, старая ХТ и новая АТ, какая из них у меня на компьютере, я точно не знал. Получается, клавиатура отправляет сперва стартовый бит 0, после пишет 8 битов младшим битом вперёд, далее отправляет бит чётности и стоповый бит. Всего 11 битов на пакет. Однако, клавиатура отправляет минимум 3 таких пакета. Первый, это код нажатой кнопки, затем, код отпускания кнопки 0xF0, а дальше код отпущенной кнопки.

Пример отправки пакетов при нажатии кнопки «J»


Не все кнопки содержат в себе всего 1 байт кода, есть и по 2, 6 и даже 8 байт! Например, безобидная кнопка PAUSE, шлёт пулемётную очередь из 8 байтов: 0xE1, 0×14, 0×77, 0xE1, 0xF0, 0×14, 0xF0, 0×77.

Изучив особенности протокола, я собрал быстро макетную плату с микроконтроллером посередине и дисплеем сверху, дабы попытаться принять команды от PS/2 клавиатуры и узнать что да как с протоколом по таймингам. К сожалению, я принимал только абракадабру.

Всё-таки без осциллографа не обойтись, подумал я и давай применять свой опыт из предыдущей статьи про модуль к проектору в использовании аудиокарты компьютера в качестве осциллографа. У аудиокарты стереовход, т.е. у меня есть самодельный двулучевой осциллограф до 16 кГц!

И начал я разбирать свою PS/2 клавиатуру. Следуя по дорожкам, нашёл контакты, отвечающие за кнопку POWER на платке клавиатуры. Припаял два провода к ножкам DATA и CLOCK, а другой конец проводов пустил на аудиоштекер типа «джек», который засунул в синий разъём аудиокарты этого же компьютера. Включил компьютер, поставил на запись канал линейного входа, и начал перебирать кнопки клавиатуры.
Заранее отмечу, мне нужна была последовательность команд кнопки POWER, а она в свою очередь выключает испытуемый компьютер, я откусил провод CLOCK идущий от платы клавиатуры к материнской плате и спокойно смотрел, что да как она передаёт в никуда.

Увидел такое чудо


Мне снова повезло: частота передачи сигнала от клавиатуры составила около 15 кГц, что является почти потолком пропускной способности аудиокарты. Это видно на рисунке ниже: края импульсов гладкие как мыло, но понять что к чему можно.

Первый пакет данных от клавиатуры


Как видно, сверху линия данных DATA, снизу линия тактов CLOCK. Проведя вертикали, можно выудить биты: 0 00000111 0 1. Тут идёт первый стартовый бит 0, после 8 битов кода кнопки, бит чётности 0 и стоповый бит 1. Т.е. клавиатура отправила код 0xE0, он же 224.

Затем следовала вторая часть кода кнопки.

Второй пакет данных с клавиатуры


Здесь уже был отправлен код 11101100, т.е. 0×37. Сложив их вместе, получаем 0xE0, 0×37. Сравнив с таблицей кодов я окончательно понял, как всё работает.

Пример кодов с Википедии


Дело за малым. Написать программку для мелкого микроконтроллера Tiny13 (smd, 8 ног), которых у меня накопилось как семечек, и всё это спаять вместе по невероятно сложной схеме!

Принципиальная схема устройства на бумаге



Схема на железе


ПРОГРАММА

Не стал я особо заморачиваться над кодом, выдернул из исходников предыдущих своих проектов функцию отправки байта по I2C и немного допилил её, добавив проверку бита чётности. Вывел управление на одну кнопку, при нажатии которой, происходит отправка трёх байтов на PS/2 порт и всё это дело прошил в микроконтроллер.

ПРАКТИКА

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

Перерезанная дорожка от ножки для родной кнопки питания


Может возникнуть вопрос, почему я не применил готовую платку от клавиатуры и начала писать программу и паять весь этот огород? Я хотел оставить гнездо PS/2 свободным для подключения клавиатуры.
Мой контроллер при нажатии на кнопку питания отправит материнской плате команду на запуск и больше никак не будет взаимодействовать с PS/2. Тогда как плата из клавиатуры отвечала бы на команды от ПК и в одном разъёме две клавиатуры, скорее всего, «поругались» бы.


Микроконтроллер на материнской плате



Подключение к гнезду PS/2 от клавиатуры



Общий вид



До ремонта этот бедолага служил мне вот в таком виде, без корпуса


ФАЙЛЫ

🎁 Прошивка для заливки (hex)  543 b ⇣ 18
🎁 Программа в CodeVision AVR 3.12 (исходники)  32.02 Kb ⇣ 17
🎁 Проект для опытов в Proteus v8.4 SP0  19.15 Kb ⇣ 14
🎁 «Осциллограмма» в mp3-файле (открывать в любом аудиоредакторе)  259.18 Kb ⇣ 16

ЗАКЛЮЧЕНИЕ

Собрал всё в корпус и подключил переднюю кнопку на родные штырьки от фронтальной панели. Теперь мою старую компьютерную систему можно включать и выключать как положено — кнопкой на корпусе и без проблем использовать любую PS/2 клавиатуру.
Ремонт удался, цель достигнута, плюс масса исследовательского материала!

Всем спасибо за внимание!

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.




 

Читательское голосование

Нравится

Статью одобрили 65 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

Поделись с друзьями!

 

 

Связанные материалы

 

Схема на Датагоре. Новая статья Модуль ИК дистанционного управления ПК на микроконтроллере ATTiny26 для перелистывания презентаций. ИК-клавиатура на 2 кнопки... Привет всем датагорцам! Возникла у меня в рабочем порядке проблемка. Есть неплохой проектор на...
Схема на Датагоре. Новая статья Счётчик витков для намоточного станка на ATtiny13... Случилось так, что припекло мне трансформатор мотать, всё бы хорошо, да станка только не хватает -...
Схема на Датагоре. Новая статья Анатомия микроконтроллеров ATmega - 3. Прерывания.... Итак, наши светодиоды мигают, но мы не можем никак повлиять на программу, давайте добавим в схему...
Схема на Датагоре. Новая статья Таймер от 1 секунды до 100 часов на микроконтроллере ATMEL AT89C2051... Картинка от Novelty Kitchen Timers В радиолюбительской практике частенько необходим таймер:...
Схема на Датагоре. Новая статья Работа с датчиком DHT11. Строим термометр-гигрометр на ATMEGA8... Привет любителям электроники! Сегодня я решил познакомиться с датчиком влажности DHT11, который...
Схема на Датагоре. Новая статья Вертушка «Эстония 010». Новая система управления на Arduino UNO... Arduino UNO R3 MEGA328P на Алиэкспрессе Здравствуйте, уважаемые Датагорцы! Делюсь с вами...
Схема на Датагоре. Новая статья Миниатюрный полный USB-RS232 адаптер на CP-2102 для подключения микроконтроллера к компьютеру по USB... В продолжение к теме «Программатор AVR910», про маленькое устройство, хочу предоставить вашему...
Схема на Датагоре. Новая статья Грызём микроконтроллеры. Урок 7. Подключение к МК кнопок, клавиатуры, энкодера... Очень давно обещал продолжить цикл статей по работе с микроконтроллерами, но не было физической...
Схема на Датагоре. Новая статья Педаль сустейна для синтезаторов Casio CTK-3000, TECHNO KB-820, KORG, YAMAHA, TECHNO и др.... Доброго дня, уважаемые Датагорцы! В этой небольшой статье для начинающих описан мой опыт...
Схема на Датагоре. Новая статья Анатомия микроконтроллеров ATmega - 2... Итак, продолжим издевательство над МК. Что же нам ещё такого сделать? Давайте заставим мигать...
Схема на Датагоре. Новая статья Управление шаговым двигателем с ПК... Драйвер для шагового двигателя, который управляется с персонального компьютера. Привет всем! Решил...
Схема на Датагоре. Новая статья Простой станочек для намотки + счетчик витков из калькулятора... Понадобилось мне в один прекрасный день намотать катушки, и сразу же возник вопрос как считать...
 

Комментарии, вопросы, ответы, дополнения, отзывы

 

<
Читатель Датагора

WF1273

<
Читатель Датагора

doswindows

<
Читатель Датагора

zas5522

<
Читатель Датагора

stupic

<
Читатель Датагора

MegaLeon

<
Читатель Датагора

Datagor

<
Читатель Датагора

maddiego

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой