Долгое время на прогулках по блошиным рынкам я увлечённо высматривал винтажные музыкальные инструменты, особенно синтезаторы 70-x-80-x годов. Я нахожу их звуки очень красочными и разнообразными, а также эти устройства интересны с точки зрения схемотехники.
Однажды, благодаря счастливой случайности и AI-алгоритму поиска, популярный сервис объявлений подобрал мне идеальный вариант.
И это оказалось не «пищалка» с пластиковым звуком и не кондовый электроорган, — а очень даже продвинутый для середины 80-х и актуальный по сей день аналоговый полифонический синтезатор с цифровым управлением, выпущенный компанией Roland.
После приобретения музыкальный инструмент не подавал никаких признаков жизни кроме подсветки дисплея. Вскрытие и сверка со схемой из документации показали следующее, - невнимательный настройщик, обслуживавший синтезатор, перепутал местами два кабеля. Разработчики использовали Poka Yoke для предотвращения неправильного подключения шлейфов между платами. Однако они либо не досмотрели, либо ассортимента не хватило.
В результате на главной плате установили два разъёма с одинаковым количеством контактов. Это единственные два кабеля, в которых можно было ошибиться.
Вот в таком вот состоянии инструмент мне и достался. Устранив ошибку сначала я очень обрадовался, — основные функции заработали, но к сожалению вышли из строя два входа микросхемы IC7 «Gate Array», которая выполняет роль IO интерфейса для CPU, в частности для функций клавиатуры. Из Рис. 1 и Рис. 3–4 показана блок-схема обработки нажатия клавиш.






Так как микросхема MB62H195 уже не выпускается и её трудно приобрести, было принято решение восполнить функционал с помощью популярной компактной отладочной платы «Blue Pill».
Всего задействовано 11-ть входов STM32F103C8T6, как раз те, что толерантны к 5 Вольтам.
На 9-ть входов подключённых параллельно выходам IC3 Decoder приходят отрицательные импульсы (сигналы поочерёдно переходят в низкий уровень), а два оставшиеся подключены параллельно резисторам подтяжки (+5.0 V) к выходам микропереключателей клавиш, которые прежде шли на R2 и R3.
На осциллограмме ниже можно увидеть, как при нажатой клавише одной из октав период между импульсами на любом рабочем входе Rx «IC7 Gate» составляет 4 mS. То есть как на непосредственных выходах T5, T4 так и на декодированных T0..T3 →0..9, что в общей сумме дает 11-ть выходных каналов, период между зондируемыми импульсами составляет 4000/11 = 363 uS, если условиться, что цикл генерации непрерывен и равномерен.

.

В среде разработки Keil uVision4 представлен программный код этого проекта.
RTOS не используется. Событие нажатия клавиши или кнопки отслеживается в прерывании по входам PA11 и PA10.
Внутри обработчика происходит анализ номера нажатой клавиши и запись его в очередь.
В главном цикле происходит анализ отпускания клавиш, причём синхронно с зондирующими импульсам. События отпускания тоже записываются в очередь. Далее происходит чтение из очереди и формируются MIDI команды.
Из-за того, что двузначные номера preset-ов требуют комбинацию из двух кнопок, то было принято решение сделать счётчик нажатия к Bank (3-4) / Number (3-4). Это изменило правило выбора выделенных на рис.7 preset-ов, но позволило иметь доступ ко всему набору.

Этот проект наглядно демонстрирует, как инженерный подход и современные микроконтроллеры могут спасти редкое оборудование, даже при отсутствии оригинальных компонентов.
Roland Alpha Juno-1 снова исправен и готов к творчеству!