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

 
 
 
7

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

Разместил maddiego 2 апреля 2018. Просмотров: 1 246

Приветствую читателей журнала Датагор! Есть у меня пожилой компьютер, которому уже исполнилось лет десять. Параметры у него соответствующие: «пенёк» 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 ⋅ 7
Программа в CodeVision AVR 3.12 (исходники) 32,02 Kb ⋅ 6
Проект для опытов в Proteus v8.4 SP0 19,15 Kb ⋅ 4
«Осциллограмма» в mp3-файле (открывать в любом аудиоредакторе) 259,18 Kb ⋅ 5

ЗАКЛЮЧЕНИЕ

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

Всем спасибо за внимание!
Тимур (maddiego)
Узбекистан, Ташкент
Профиль maddiego
Мне 27, с паяльником подружился в 10 лет. В 22 скатился в сферу микроконтроллеров.
 

Понравилось? Палец вверх!

  • всего лайков: 43

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

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


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

WF1273

Вячеслав Читатель Датагора
  • Гражданин
Комментарий # 1 от 2 апреля 2018 16:05.
Ответить
  • С нами с 10.11.2015
  • Ушёл в реал Пользователь offline
  • 36 комментариев
  • 1 публикация
 
Из личного опыта: у всех компов (4 шт. Celeron 2,66GHz, материнка Foxconn) с подобной проблемой рано или поздно происходил сильный "бабах" в блоке питания при включении 220В на силовом щите (похоже, летели цепи "дежурки" в БП?).

<

doswindows

Алексей Читатель Датагора
  • Гражданин
Комментарий # 2 от 2 апреля 2018 21:45.
Ответить
  • С нами с 22.03.2009
  • Ушёл в реал Пользователь offline
  • 31 комментарий
  • 0 публикаций
 
Хорошо придумано
А кнопка reset работает ?
Мне пару мамок попадались с похожей гиморойной кнопкой заруска и вот и reset на них тоже неработал

<

zas5522

Сергей Читатель Датагора
  • Гражданин
Комментарий # 3 от 3 апреля 2018 11:26.
Ответить
  • С нами с 3.10.2010
  • Ушёл в реал Пользователь offline
  • 2 комментария
  • 0 публикаций
 
Это если в "мамке" нет других неисправностей.

<

stupic

Сергей Читатель Датагора
  • Гражданин
Комментарий # 4 от 3 апреля 2018 23:32.
Ответить
  • С нами с 13.09.2008
  • Ушёл в реал Пользователь offline
  • 11 комментариев
  • 0 публикаций
 
У материнок ECS EliteGroup на 915-м часто попадалась проблема - отвал сокета. ECS экономил и использовал только Socket 775 в SMD исполнении, да ещё тогда как раз перешли на бессвинцовые припои, не отладив технологию.

<

MegaLeon

Дмитрий Читатель Датагора
  • Подписчик
Комментарий # 5 от 4 апреля 2018 18:41.
Ответить
  • С нами с 15.04.2009
  • Ушёл в реал Пользователь offline
  • 11 комментариев
  • 0 публикаций
 
Много раз оживлял компы на работе, которые не включались, принудительным запуском блока питания, после если загружался комп, входил в биос. сбрасывал настройки по дефолту, перезагружал, и комп начинал работать от родной кнопки питания.

<

Datagor

Игорь Котов Читатель Датагора
  • Главный редактор
Комментарий # 6 от 4 апреля 2018 19:24.
Ответить
  • С нами с 25.02.2011
  • Ушёл в реал Пользователь offline
  • 2 017 комментариев
  • 272 публикации
 
Дима, я тебя уверяю, Тимур взялся за паяльник, когда исчерпал все софтовые и т.п. способы.

<

maddiego

Тимур Читатель Датагора
  • Гражданин
Комментарий # 7 от 5 апреля 2018 10:47.
Ответить
  • С нами с 2.08.2016
  • Ушёл в реал Пользователь offline
  • 25 комментариев
  • 8 публикаций
 
Спасибо всем за комментарии и дельные советы, моя цель была избавиться от этой мамки, ибо жаба душила её выкидывать, а время шло lol

Добавление комментария


Налетай! Паяльники, станции, жала с доставкой
  • smilelolbyewinkyahoocoollaughing
    crazybadcryingsadirefulsickstraight
    ballooncakegooddrinksmailbombsun
    nightrainstarscolddashguitar-manhandshake
    musicnegativenopardonshoksleepunknown
    wackoyawnblushbullyhashsmokingwhew