Клавиатура сдалась
После 4 часов танцами с бубном вокруг компа - кнопки заработали всё 32шт. Мои опасения за длину и толщину дорожек не подтвердились. РСА9555 превосходно и логично отработала прерывания. Дребезг наверное есть, но из-за структуры программы (два потока) и временных задержек в коде их не заметно. Вариантов при котором возникают случайные срабатывания или ошибочный код нажатой кнопки не может быть в принципе.
Верхние 4 линии работают на выход с нормальным уровнем (в момент ожидания нажатия) =0. Нижние 8 выводов работают на вход с лог уровнем=1 (ага вот так странно). Такую структуру позволяет сделать РСА9555, любые выводы и количество могут работать как на вход так и на выход в разнобой. Я давно уже вынашивал схему клавы, но сделал только сейчас. Причем я тестил енкодеры и LED, а клаву не тестил и сделал и схему и печатку на удачу. Ни каких подтягивающих резисторов не понадобилось. Просто после нажатия на кнопку с выходных выводов подается (в матрице 4х8) лог 0 на входные, что в свою очередь вызывает прерывания, которое я и отлавливаю. После этого со скоростью света в 4 итерации я по очереди выставляю лог0 на одном из 4 выходов и считываю входные выводы, и если код отличный от 0xff (все входы в лог 1) то значит в этой линии была нажата кнопка. В результате появляется код нажатой кнопки (в том числе в энкодерах).
И даже уже ночью сделал переключение LEDs диапазонов.
Чтобы был понятен масштаб работы по программированию , то все ,что я сделал за 2 дня (включая работы на работе
) и если представить, что вся работа это алфавит от А до Я - это тянет, всего лишь, на первую букву в алфавите "А" и еще пипец сколько делать надо.