PIC18F14K50 (19) --- aitendo USB-GPIO

先日 (3 月 24 日)、aitendo の店頭 (出入り口前の廊下に置かれたダンボールの中) で PIC18F14K50 使用の小さなマイコン・ボードを見つけ (単価 199 円)、2 つほど買ってきました。
そのままでは動作しませんでしたが、水晶発振回路のコンデンサを換装して正常に動作するようになりました。
マイコン・ボードの外観の写真を下に示します。

PIC18F14K50-I/SS (SSOP パッケージ) が実装されています。

シルクで「USB-GPIO」と印刷されており、これがボード名称のようです。

回路図を起こすと下のようになりました。

検索してみると、「Robot Electronics」社の「USB-GPIO12」という製品が見つかりました。

USB-GPIO12 General Purpose PIC18F14K50 Module

回路が一致するので、aitendo USB-GPIO は Robot Electronics USB-GPIO12 のコピー品のようです。
ただし、LED がふたつとも緑色であることと、ふたつのコネクタ間の間隔が 700 mil で IC ソケットが利用できないことが違っています。 (USB-GPIO12 は 600 mil 間隔)
ICSP (In-Circuit Serial Programming) に必要な PGD/PGC ピンは USB の D+/D- ピンと共用されており、コネクタに引出されていないので、ICSP でプログラムを書き込むためには下の写真のように USB レセプタクルの端子から「シッポ」を生やす必要があります。

ブレッド・ボード上で PICkit3 と接続すると下の写真のようになります。

Robot Electronics USB-GPIO12 にはあらかじめ HID ブートローダが書き込まれて供給されているようですが、USB-GPIO のフラッシュは消去ずみ状態で、何も書き込まれていませんでした。
そこで、Microchip の MLA (Microchip Libraries for Applications) に含まれる「Low Pin Count USB Development Board」用の HID ブートローダを書き込んでみましたが、動作しませんでした。
オシロで PIC18F14K50 の各ピンの信号を観測すると、そもそも外付けの水晶振動子が発振しておらず、OSC2 端子 (ピン 3) には DC レベルしか出ていないことが分かりました。
一方で、内部クロックを使用するプログラムを書き込むと、正常に動作しました。 その場合でも、内部クロックが 4 分周されて CLKOUT 端子 (ピン 3) に出力されるはずの設定でもピンには DC レベルしか出ていませんでした。
基板上の水晶発振回路の部品を良く見ると、C3/C4 の容量は 20 pF 程度のはずですが、もっと容量の大きいコンデンサが付いているように見えます。
C3/C4 を取り外して単体で容量を測定してみると、0.15 〜 0.19 μF 程度になっており、おそらく C3/C4 の実装ミスと思われます。
C3/C4 を取り外してストレー容量のみの状態で、水晶発振させるプログラムを書き込むと正常動作しました。
実は、USB-GPIO が入っていたチャック袋の中にチップ・コンデンサ 5 個が同封されていたので、不思議に思っていたのですが、容量を測ってみるとストレー容量込みで約 27 pF という値で、おそらく C3/C4 をこれで換装しろということなのでしょう。
もしかしたら、aitendo の店頭のどこかにその旨のことが表示されていたのを見落としたのかも知れません。
ともかく、C3/C4 を換装して HID ブートローダを書き込んで正常に動作しました。
HID ブートローダ経由で書き込むアプリケーション・プログラムとして、MLA 内の Low Pin Count 用のデモ・プログラムも、Robot Electronics USB-GPIO12 のサンプル・プログラムもうまく動作しました。
「シッポ」が生えたまま使うのは不便なので、このボードは HID ブートローダを利用して使うのが正解だと思います。