С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А прошивка сырая или просто не рабочая?Сообщение от caro
Хотя все равно склоняюсь к Mega8(88) - доработки прошивки под базовый кристалл (8515) было бы относительно несложно портировать и под эту вариацию. Но, естественно, это доступно только автору, поскольку одно дело в исходнике корректировать, а другое в дизасме.
Сырая, не проверенная на железе.
У Mega8(88) не очень удобно распределение ножек по портам - один полноценный 8-ми битный порт,
но поскольку именно на нем закреплены основные сигналы прерываний использовать
его как порт связи с шиной Z80 не получается.
Так что простыми способами перенести прошивку из Mega8515 в Mega8(88) не получается.
Добавлено через 2 минуты
Проще просто сесть и написать новую прошивку. Даже лучше может получится.
KingOfEvil вон за 4 дня склепал прошивку под свой Z-контроллер.
Последний раз редактировалось caro; 06.06.2007 в 17:05. Причина: Добавлено сообщение
Писал я с год назад клавиатурного шпиона аж под Tiny13 с Atmelовской флэш-памятью по SPI, с анализом даже интересующих логинов. В принципе работало, с глюками правда (куда ж без них). Только вот прикол - админа дали раньше, чем железка помогла.
Анти-офтоп: Caro, а можно поинтересоваться изначально прошивка писалась на асме или на Си?
Я вот уже несколько дней пытаюсь контроллер клавиатуры замутить
Подумал, и решил всетаки сам...
Заодно и контроллеры подучить (точнее начать изучать) может получится.
Пока результатов нима.
Но меня интересует вот что:
* если одновременно нажато 2 или более кнопки, каким образом это проще распознать?
* что делать с автоповтором, который в РС-клавиатуре? Как он работает? Просто передает несколько раз код нажатия клавиши и только при отпускании передает код, что кнопка отпущена? (нигде доку найти не мог на ету тему...) Может есть пара ссылок?
Судя по описаниям контроллеров клавиатур (я имею ввиду встроенных в клавиатуры),
они допускают обработку не более 6 одновременно нажатых клавиш.
Поэтому в памяти внешнего контроллера организуется буфер на 6 скан-кодов.
Каждая нажатая клавиша вызывает выдачу в интерфейс своего скан-кода (некоторые больше одного).
Даже если нажато одновременно несколько клавиш, их скан-коды будут выданы в линию один за другим,
в порядке опроса матрицы клавиатуры встроенным контроллером.
Принятые скан-коды помещаются в буфер внешнего контроллера.
При отпускании клавиши, в начале выдается служебный байт (0xF0) - признак отпускания, затем сам скан-код этой клавиши.
При этом из буфера удаляется код отпущенной клавиши.
При удержании клавиши начинается цикл автоповтора, при котором в линию передается один и тот же код нажатой клавиши.
Принятый код надо просто сравнить с тем что уже лежит в буфере, и при совпадении просто игнорировать.
Есть правда еще один вариант и лично я им пользуюсь.
Надо переключить клавиатуру в режим scan code 3, при котором каждой нажатой клавише соответсвует один уникальный скан-код, а также установить режим работы Make/Break запрещающий автоповтор кода:
Код:ldi data,0xf0 ;Select Alt_Scan rcall trans_ack ;передать ldi data,0x03 ;Alt_Scan = 3 rcall trans_ack ;передать ; ldi data,0xf8 ;Select All Make/Break rcall trans_ack ;передать
Последний раз редактировалось caro; 07.06.2007 в 08:54.
Может конечно и ошибаюсь, но можно и второй порт под порт данных заюзать - PB, а осциллятор использовать внутренний. Ведь контроллеры в самих клавах/мышах не обладают большой стабильностью частоты. В то же время внутренний осциллятор Меги, в принципе обладает приемлимой стабильностью частоты. Кроме того, хоть и не так хорошо как в базе (8515), но и в Меге8 можно реализовать COM-порт; проблемы только будут с пересчетом коэффициентов для таймеров, и отклонением этих частот от стандартных, но это не очень существенно, IMHO.Сообщение от caro
Длительность WAIT увеличится.
Да, стабильность при работе с клавиатурой и мышкой вполне премлемая.
Только вот частота 8 Мгц, а для Mega8(88) можно ставить внешний до 20 МГц.
COM-порт при тактовой частоте 8 Мгц с приемлемой точностью может работать со скоростью не выше 9600 бод.
Реализовать можно все что хочется, только какими усилиями.
При таких потребностях в периферии проще уж ставить и контроллер соответсвующий.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)