Проект "ТРЫНДЕЛКА"

MIDI-гитара своими руками

Главная
Протокол MIDI
Принцип действия
Звукосниматель
Лады и струны
Питание
Аналоговая часть
Контроллер PIC16x74
COM-порт
MIDI-порт
Управление и индикация
Алгоритм детектирования нот

Фотоальбом
MIDI-файлы

Об авторе

Контроллер PIC16x74

В качестве управляющего устройства использован микроконтроллер PIC16x74B производства Microchip. Самый удобный из семейства (из имевшихся в наличии) - контроллер PIC16F74B (flash-ПЗУ программ с электрическим стиранием). Наряду с хорошими сторонами у него есть и недостатки, но хорошие стороны перевешивают. Главная хорошая сторона - по работе он мне доступен в неограниченных количествах, и к нему имеется вся документация, программаторы, эмуляторы и даже, кажется, транслятор С (хотя конечно программирование микроконтроллеров на языке С - это пижонство).

Особенности микроконтроллера, которые мне оказались важны:

  • минимальная необходимая обвязка: резистор на питание в цепи сброса и кварц, плюс 1 мкФ в качестве фильтра питания - ВСЕ!;
  • тактовая частота до 20 МГц (практически от нуля, так как все элементы статические);
  • наличие встроенного АЦП с возможностью коммутации с ним любого из 8 входов;
  • наличие встроенного асинхронного приемопередатчика;
  • мощные порты (до 20 мА на порт, до 200 мА суммарно);
  • наличие третьего состояния (высокий импеданс), программно выставляемого на любом выводе любого порта;
  • весьма извращенная (о, как же я матерился, поняв, что при отрицательном результате вычитания флаг переноса сброшен!), но краткая и поэтому "усвояемая" система команд RISC (35 команд).

pic.gif (7840 bytes)

Распределение портов:

A0..A3, A5, E0 - входы АЦП для определения амплитуды колебания струн с 1 по 6

B0..B5 - выходы сканирования порожков для струн с 1 по 6

B6, B7 - контакты для подключения кнопок и светодиодов индикации

C0..C3, D0..D3, C4..C5, D4..D7, E2..E1, A4 - входы сканирования порожков с 1 по 17

C6 = TX - выход асинхронного передатчика

C7 = RX - *вход асинхронного приемника

* в перспективе планируется подключение дополнительного контроллера, обслуживающего, например, ЖК-дисплей и полноценную панель кнопок

<<< Назад   |   Вперед >>>