PIC18F14K50 (21) / PIC16F145x (2) --- USB-MIDI コンバータ (2)

USB - MIDI コンバータのプログラムが大体できあがりました。
元ネタにしたのは Microchip アプリケーション用ライブラリ MLA (Microchip Libraries for Applications) に含まれる USB オーディオクラス・MIDI ストリーミング・サブクラスに関するデモ・プログラムで、ハードウェア構成としては、「Low Pin Count USB Development Kit」ボードを対象にしています。
このボードは初期の型番「DM164127」では PIC18F14K50 が使用されていましたが、途中で使用チップが PIC16F1459 に変わり、型番も「DM164127-2」に変更されています。
そのため、デモ・プログラムもそれぞれ初期型の PIC18F14K50 用と現行の PIC16F1459 用との、ふたつのプロジェクトで構成されています。
それを活かして、改造版である USB-MIDI コンバータ・プログラムでも PIC18F14K50 / PIC16F1459 / PIC16F1455 に対応させました。 ただし、PIC16F1459 は実チップを所有していないので、実際に動くかどうかは未確認です。
(2017 年 9 月 7 日追記: PIC16F1459 の実チップでの動作を確認しました。)
PIC16F1459 の場合の CPU 周りの回路を下に示します。

PIC16F145x では、外付けの 12 MHz 水晶振動子を使わずに 16 MHz の内部オシレータを使用して USB デバイスを実現できるので、それを利用し水晶発振回路を省略しています。
ハードウェア的には PIC18F14K50 と PIC16F1459 はピン・コンパチブルなので、その他の回路は PIC18F14K50 の場合と同一です。
ICSP (In-Circuit Serial Programming) に関しては、ICSPDAT/ICSPCLK ピンが RC0/RC1 に変更されていて、ホストへの USB 接続と、PICkit3 への ICSP 接続とを同時に接続したままにしておくことが可能です。
ただし、電源部分の逆流防止回路は省略しているので、USB / ICSP 同時接続の場合には「PICkit3 側から電源供給しない」設定にする必要があります。
PIC16F1455 の場合の CPU 周りの回路を下に示します。

PIC16F1455 では、UART RX/TX のピン割り付けが PIC18F14K50/PIC16F1459 の場合とは異なっており、RC5/RC4 に割り当てられています。
これらのピンは USB-GPIO12 ボードでは LED 表示のために使われており、それに揃えると UART の機能が利用できなくなってしまいます。 そのため、LED 表示に使用するピンの方を RC2/RC3 に変更しています。
元ネタのデモ・プログラムでは RC0 を USB の接続状態を示す LED 出力に使っていますが、ここでは ICSP 接続の方を優先して、RC0/RC1 は ICSP 接続専用とし、LED 表示は RC2/RC3 に割り当てています。
PIC16F1455 を使った「最小構成」の回路図を、MIDI インターフェース部も含めて下に示します。

「最小構成」のため、LED や ICSP 接続の端子は省略してあります。
また、MIDI OUT 部のインバータを 1 段減らすために UART TX 出力の反転機能を利用しています。
抵抗入りトランジスタ (いわゆる「デジタル・トランジスタ」) を利用して部品点数を減らしています。