Titus, может быть мы друг друга не понимаем. Приведу конкретный пример. На одной линии Y6 находятся клавиши АР2, ТАБ, УПР, ГРАФ, АЛФ, 0(доп), .(доп), ВВОД(доп). Я нажимаю АР2 и получаю код нажатия 006. Не отпуская её последовательно друг за другом я нажимаю клавиши ТАБ, УПР, ГРАФ, АЛФ, 0(доп), .(доп), ВВОД(доп). При этом никаких кодов нажатия не получаю. У нас нажаты все восемь клавиш на линии Y6, получили код нажатия только самой первой нажатой клавиши. Теперь последовательно отпускаем клавиши в такой же последовательности, что и нажимали. Первой отжимаем АР2, соответственно никакого кода отжатия не получим, т.к. нажаты ещё семь клавиш. И только тогда, когда отожмем последнюю клавишу ВВОД(доп), линия Y6 полностью освободится, тогда получим код отжатия 0206.
- - - Добавлено - - -
Тут есть ещё один очень неприятный момент. Вывод на дешифратор DC_CTR_X стробируется сигналом CLK_KBD1_16. В момент "заморозки" останавливается генератор и по идее на линии CLK_KBD1_16 должен остаться низкий уровень, соответственно на выбранной линии X должен остаться низкий уровень и можно прочесть текущее состояние линий Y. А без "заморозки" во время чтения линий Y можно попасть в другой полупериод сигнала CLK_KBD1_16, соответственно на линиях X не будет "бегущего нуля", соответственно с линий Y прочтутся одни нули.





Ответить с цитированием