26 Отредактировано hantarex (27-01-2017 21:53)

Re: Адаптер клавиатуры с интерфейсом PS/2

Клава, при подаче питания инициализируется, мигает всеми диодами. Контроллер на NumLock реагирует, светодиод мигать перестает, уровень меняется. Агат на клаву не реагирует:(

Фьюзы правильно выставлены? E4,D9.

Post's attachments

Attachment icon prg.png 77.25 kb, 40 downloads since 2017-01-27 

27

Re: Адаптер клавиатуры с интерфейсом PS/2

Да, фьюзы правильные. Думаю, причину нужно искать в правильности сборки (припоминаю, что на фото как минимум один вывод выглядит плохо пропаянным), правильности подключения и исправности "Агата".
Неплохо бы проверить, поступают ли тактовые импульсы 8кГц с "Агата". И передаются ли туда данные при нажатии кнопок. Изменение характера свечения светодиода и уровня линии переключения языка говорят о том, что программа выполняется и клавиатурные данные принимаются контроллером.

28

Re: Адаптер клавиатуры с интерфейсом PS/2

пустые выводы я вообще не припаивал. а тактовую сегодня проверю, попозже.

29 Отредактировано hantarex (28-01-2017 22:32)

Re: Адаптер клавиатуры с интерфейсом PS/2

В общем - разобрался. Была неисправна D85, заменил - все заработало. Есть проблемы с начальной инициализацией контроллера, примерно один раз из трех запусков машины вместо клавиш мусор гонит, вплоть до псевдографики, на Нумлок не реагирует. Лечу передергиванием контроллера из Агата.

30 Отредактировано AlexBel (29-01-2017 09:22)

Re: Адаптер клавиатуры с интерфейсом PS/2

Я передал собранный контроллер Владимиру, по возможности погоняет на заведомо исправной машине. Обнаруженные проблемы будут исправляться. У меня, к сожалению, не было возможности проверить адаптер досконально, но описанные проблемы ни разу не проявлялись.
Кстати, сам контроллер при успешном запуске продолжает работать стабильно? Сброс, переключение "рус-лат" работает?

Сегодня постараюсь сделать и выложить сюда таблицу соответствий кнопок.

31

Re: Адаптер клавиатуры с интерфейсом PS/2

Если завелся, то работает нормально. Правда, я его минут 30 всего погонял, но глюков не было.

32

Re: Адаптер клавиатуры с интерфейсом PS/2

hantarex пишет:

Если завелся, то работает нормально. Правда, я его минут 30 всего погонял, но глюков не было.

Понял, спасибо. Нужно дорабатывать...

33 Отредактировано AlexBel (29-01-2017 13:26)

Re: Адаптер клавиатуры с интерфейсом PS/2

В тему добавлены файлы с соответствием кодов клавиатуры "Агата" кнопкам клавиатуры PS/2. Пока что без учёта "РЕГ" и "УПР".

34

Re: Адаптер клавиатуры с интерфейсом PS/2

Платы для сборки, исходные тексты программ и собранный образец адаптера клавиатуры переданы Voldemar0. На настоящий момент адаптер обеспечивает минимальный, необходимый для работы, функционал. За время, начиная с публикации на форуме, информация о сборке и проверке поступила только от hantarex. Я предпринял вчера попытку воспроизвести описанную им проблему (нестабильный запуск адаптера при включении вместе с компьютером), но мне это не удалось - за полтора десятка циклов выключения-включения "Агата" адаптер запускался нормально. Возможно, причина в том, что у нас используются различные блоки питания с различным временем нарастания напряжения на выходе. Больше никто о сборке и проверке адаптера не написал.
Я временно прекращаю работу над адаптером. В будущем планирую, как писал в первом посте темы, доработать прошивку, но сейчас пока что нет возможности этим заниматься.

35

Re: Адаптер клавиатуры с интерфейсом PS/2

Попробую поиграться с фильтрующими кондесаторами, скорее всего дело в них. Керамику ставил от балды, емкость неизвестна. Хотя выдрал их с цепи питания вроде. Судил по ширине дорожек:)

36 Отредактировано AlexBel (02-02-2017 16:54)

Re: Адаптер клавиатуры с интерфейсом PS/2

Думаю, предположение о скорости нарастания напряжения питания неверно - если уж его достаточно для нормальной работы "Агата", то уж для контроллера, имеющего встроенную задержку старта и широкий диапазон питающих напряжений, достаточно и подавно. Думаю, причина либо в связке контроллера с клавиатурой (программной или аппаратной), либо в сборке (блокировочные конденсаторы, плохая пайка, несоответствие номиналов и т.п.).
Я несколько раз встречал проблемы совместимости клавиатуры PS/2 с компьютерами, хотя до первого такого случая считал это невозможным. У меня три разные клавиатуры - на всякий случай, адаптер проверял со всеми тремя, проблем не было. Но это не значит, что не может быть проблем с другими. Если есть другие клавиатуры - думаю, стоит попробовать.

37 Отредактировано Voldemar0 (02-02-2017 12:12)

Re: Адаптер клавиатуры с интерфейсом PS/2

А у тебя там brownout детектор разрешен ?
Как мне помнится, его разрешение гарантирует защиту от подобных сюрпризов, разве что сама клава подглючивает

38 Отредактировано AlexBel (03-02-2017 08:46)

Re: Адаптер клавиатуры с интерфейсом PS/2

Не разрешён, но его можно включить, если поставить Fuse Low = 0x24 (порог 4 вольта). Правда, сомневаюсь, что это решит проблему.

Онлайн-калькулятор фьюзов для ленивых: http://www.engbedded.com/fusecalc/ :)

Судя по описанию проблемы, причина в потере синхронизации между клавиатурой и контроллером. Это подтверждается тем, что не работает переключение рус/лат - это никак не может быть связано с передачей данных на "Агат", тем более, что эта передача осуществляется аппаратно.
На этот случай обычно используются тайм-ауты при передаче - если за определённое время передача байта не завершилась, происходит сброс узла приёма и, по возможности, устройства, передающего данные. Но программа писалась максимально простая, поэтому тайм-ауты реализованы не были. В результате потеря одного бита сказывается на всей дальнейшей работе устройства. Повторюсь, время выхода на готовность клавиатуры намного больше времени запуска программы контроллера и инициализации его узлов. Этим я и руководствовался, когда писал программу - к тому времени, когда клавиатура выдаст байт готовности к работе, контроллер будет готов этот байт принять. Собственно, так у меня и происходит, поэтому в дополнительных мерах защиты от рассинхронизации необходимости не было.
К сожалению, статистики по использованию контроллера почти нет - пока что два человека, у одного из которых устройство работает нормально...

39 Отредактировано Voldemar0 (05-02-2017 08:52)

Re: Адаптер клавиатуры с интерфейсом PS/2

Коротенько попробовал - всё работает. Попозже попробую несколько клавиатур и несколько материнок.

НО!!!! Второй раскладки нет ? jcuken ?
Без неё в игрушки некоторые не поиграть совсем, типа shamus'а, например
(там раскладка jcu / fyv / q^c)

-=-

Кто тестирует: пишите на семёрке или девятке ? Тут, кажись, сюрприз будет
И напишите, если не работает, то как именно ? Например, что происходит при нажатии буквы L и ВВОД.

40 Отредактировано AlexBel (05-02-2017 14:03)

Re: Адаптер клавиатуры с интерфейсом PS/2

Альтернативных раскладок нет, не успел ввести. Сейчас пока что нет возможности это сделать - не из чего собрать адаптер (нет контроллера), да и просто некогда.
В ближайшую неделю постараюсь завершить текущие дела, куплю контроллер, соберу адаптер и доработаю прошивку.

О каком возможном сюрпризе в плане "девятки" идёт речь?

41

Re: Адаптер клавиатуры с интерфейсом PS/2

AlexBel пишет:

О каком возможном сюрпризе в плане "девятки" идёт речь?

На девятке тактовая клавиатуры выше раза в чем на семерке

42 Отредактировано AlexBel (06-02-2017 14:36)

Re: Адаптер клавиатуры с интерфейсом PS/2

Так как передача данных на "Агат" сделана аппаратно, то, думаю, проблем не будет - просто данные из буфера быстрее будут выгребаться. На автоповтор это не повлияет.
Но всё же стоит проверить.
Кстати, есть ли описанная hantarex проблема?

43

Re: Адаптер клавиатуры с интерфейсом PS/2

AlexBel пишет:

Так как передача данных на "Агат" сделана аппаратно, то, думаю, проблем не будет - просто данные из буфера быстрее будут выгребаться. На автоповтор это не повлияет.
Но всё же стоит проверить.
Кстати, есть ли описанная hantarex проблема?

А тактирование атмеги с какой частотой?

У каких -то процев было так, что любой вход, который вроде бы как просто вводит значение снаружи, всё равно тактируется внутренним генератором и , соответственно, всегда отстаёт на полтакта примерно. В доках это объяснялось тем, что , мол, не зачем гнать по всем регистрам сильно высокие частоты, достаточно чтобы уровень менялся не чаще, чем его может обработать проц (энергосбережение такое). Вот как бы тут не получалось, что -то такое же.

Но я ещё осцилографом гляну, завтра может.

44

Re: Адаптер клавиатуры с интерфейсом PS/2

AlexBel пишет:

Кстати, есть ли описанная hantarex проблема?

Не, у меня сама платка заводится каждый раз с полпинка, и все вопросы только о её взаимодействии с материнкой агата. Я две клавы попробовал, от митсуми и от гениуса.

45 Отредактировано AlexBel (06-02-2017 19:54)

Re: Адаптер клавиатуры с интерфейсом PS/2

Контроллер тактируется внутренним генератором на 8МГц.
Насчёт тактирования записи в регистры контроллера - да, у AVR такая штука есть. Неприятная особенность, например, при подаче внешнего сигнала на внутренний счётчик. При этом внешняя частота ограничивается тактовой. Контроллеры PIC от этого свободны, у них вход идёт напрямую на счётчик. Столкнулся с этой неприятностью, когда пытался сделать частотомер на AVR.
Но в данном случае, думаю, это не актуально. Передача осуществляется аппаратно, через интерфейс SPI в режиме Slave (в отличии от первой версии, где передача данных была сделана через внешнее прерывание от тактирования агатовской клавиатуры).

46 Отредактировано Voldemar0 (07-02-2017 18:35)

Re: Адаптер клавиатуры с интерфейсом PS/2

В каком режиме у тебя работает spi ?
строб по высокому или низкому уровню ?


Зачем нужен кондёр на линии сброса?


Что делает этот бит ?
#define CSOUT PORTB.1

и зачем он соединён с B2 ?
Самосброс?

47 Отредактировано AlexBel (07-02-2017 19:48)

Re: Адаптер клавиатуры с интерфейсом PS/2

SPI работает в режиме Slave. Насчёт его параметров - не помню, нужно смотреть исходники. При настройке SPI я руководствовался описанием работы клавиатурного интерфейса из книги Мымрина.
Конденсатор на линии сброса создаёт низкоуровневый импульс, формирующий сброс при включении. Линия порта B.2 по совместительству является линией включения SPI в режиме Slave. Линия порта B.1 через B.2 управляет включением SPI.

48 Отредактировано Voldemar0 (07-02-2017 20:24)

Re: Адаптер клавиатуры с интерфейсом PS/2

Кондёр на сбросе - зло. Он даёт очень пологий фронт, к тому же зависящий от числа и типа модулей расширения. В результате бывают случаи, что именно на включении он не сбрасывает. Может быть, например, ЦП уже заработал, а какое -то устройство ещё вроде как в сбросе. В оригинале стоит 531я микруха буфером, перед ней кондёр, а её выход уже в ресет уходит.

В то же время нет проблем сделать софтовый сброс - т.е. удерживать ресет полсекунды через полевик, при инициализации меги.

Но это всё фигня.

Не фигня другое: в slave mode SPI у тебя встаёт в модуле init.c, это программно задаётся. B1 - это, фактически, у тебя внутреннее управление линией !SS, которая разрешает работу передатчика MISO.

И вот какая штука в связи с этим: когда передача заканчивается, судя по осцилограммам, атмега ставит MISO в нулевой уровень независимо от значения последнего переданного бита (я не нашел описания этого явления в доках, так что будем полагать, что это - недокументированая особенность). В тот же момент она генерирует прерывание от SPI и ты B1 ставишь в "1", что сразу гасит MISO и он подлетает к "1". Это происходит очень быстро, но это даёт небольшой коротенький переход 1->0->1 на MISO. А поскольку на материнке начало передачи ловит совершенно асинхронный триггер, то ему на длительность и момент этого импульса относительно синхролинии начхать. И он думает, будто сейчас побежит ещё один байт.

Я пока не закончил изучать это всё явление, в четверг продолжу, наверное.
Но пока мне видится либо кондёр на data-линии, либо инвертор data и инверсия даты в программе. А !SS вообще заземлить навечно.

49

Re: Адаптер клавиатуры с интерфейсом PS/2

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

"Особенность" SPI в режиме Slave в даташите не видел. На осциллографе не смотрел - не было необходимости, так как SPI заработал сразу и с передачей данных проблем не было. Да, собственно, на весьма скромном домашнем осциллографе я вряд-ли бы это увидел, а тащить "Агат" на работу, чтобы посмотреть осциллограммы работающего устройства, разумеется, не стал.

Какие времянки у этого паразитного перехода "1-0-1"? Осциллограф позволяет сделать скриншот?

50

Re: Адаптер клавиатуры с интерфейсом PS/2

AlexBel пишет:

Какие времянки у этого паразитного перехода "1-0-1"? Осциллограф позволяет сделать скриншот?

Всё можно, но меня пока больше удивляет, что это чётко мешает девятке и не мешает семёрке. Хотя вроде бы схемы портов у них почти одинаковые. Я даже специально проверил на нескольких девятках.

Девятки глючат страшно, но мне кажется, дело не только в этом коротком пичке, что-то им ещё не нравится. Хотя по осцилограммам вроде как бы как  будто всё правильно. Режимы SPI я подробно раскопал, тоже выглядят логичными, с картинкой согласуется.

Позднее расскажу, что ещё удастся выкопать.

Чем и как ты компилируешь код ?
Где можно скачать компилятор ?