Здравствуйте, пришлось отложить на некоторое время плисину. Выкладываю схему. В ней состояние кнопок загружается по прерыванию в регистр-защелку (LPM_FF) по переднему фронту. Для создания фронта используется XOR, когда на входе '0', XOR перекл. из 0 в 1. Прерывания (внизу картинки обрезано) реализованы по лог.И, если хоть одна кнопка нажата, уровень спадает до лог '0'. Прерывание вывел на вывод плис для мк.
Далее 14 разрядов загружаются в сдвиговый регистр PISO(LPM_SHIFTREG) при чтении по SPI. Вот здесь, скорее всего, что-то и не работает.
Для load (LPM_SHIFTREG) реализована задержка на 1 clock. Вначале на clock инверт. 1. Когда идут клоки, перекл. в 0. И только на след. импульсе в 1. Соответственно 1 импульс клока идет на загрузку в сдвиг.рег. (load=1), остальные на сдвиг.
Вроде бы ничего сложного нет. Но на осциллограмме ничего нет с MISО. Но прерывание срабатывает. НЕ знаю что делать, ЗАциклился уже.
А с дребезгом борюсь в мк. После прерывания, задержка 100 мс, а затем считываю state bottom.
Да мк мастер, SPI перекл. по заднему фронту, захват по переднему, полярность положительная. По spi идут 24 импульса клока. В середине картинки схема рабочая.
Жду любых советов.