Суть ошибок штатного драйвера:
контакты (пины) serport.0.pin-Х-in и serport.0.pin-X-in-not перепутаны между собой.
причем контакт serport.0.pin-1-in-not не работает вообще (всегда 0)
Поэтому строки
Код: Выделить всё
net col0 serport.0.pin-9-in => matrix_kb.0.col-00-in
net col1 serport.0.pin-8-in => matrix_kb.0.col-01-in
заменяем на
Код: Выделить всё
net col0 serport.0.pin-9-in-not => matrix_kb.0.col-00-in
net col1 serport.0.pin-8-in-not => matrix_kb.0.col-01-in
цепи, относящиеся к энкодеру, пока не трогаем (все равно работать должен), а если будет крутиться не в ту сторону, можно вместо serport.0.pin-6-in указать serport.0.pin-6-in-not
Далее, возможна такая ситуация
как здесь
Повторюсь:
У меня вместо галетника стоит тумблер на три положения, причем в среднем (как раз Y) оба контакта разомкнуты. Поэтому в hal-файле устроена соответствующая логика. Вам нужно ее убрать. Для этого замените строчки
Код: Выделить всё
net ledx matrix_kb.0.key.r2c1 => comkbdenc.ledx or2.0.in0
net ledz matrix_kb.0.key.r1c1 => comkbdenc.ledz or2.0.in1
net nn1 or2.0.out => not.0.in
net ledy not.0.out => comkbdenc.ledy
на
Код: Выделить всё
net ledx matrix_kb.0.key.r2c1 => comkbdenc.ledx
net ledy matrix_kb.0.key.r1c1 => comkbdenc.ledy
net ledz matrix_kb.0.key.r0c1 => comkbdenc.ledz