編集履歴一覧に戻る
akira.keiのアイコン画像

akira.kei が 2026年01月17日23時54分01秒 に編集

コメント無し

本文の変更

[<前の記事](https://elchika.com/article/ef262402-9ac2-4f6d-9579-b86b2f47c122/) : 次の記事> ## 今回はさらにニッチなPIC16F1454 PIC16F1455と1454の違いはアナログ機能の有無だが、USBデバイス機能を使うだけならアナログの無い1454を使うのが正しい。現在の価格はなんだか前より高くなって1455が320円で1454が290円だ(2026/01現在)。まぁ「ANSELは無いんやでw」と言われる程度なので特にどっちでも問題ない。ただ、今回はUSBシリアル変換器3.3V版として組み込んじゃうので、わざわざ1454を買い直した。 ## USBシリアル変換器(3.3V版) 手持ちの市販のよくあるUSBシリアル変換器は5Vで動作する。最近は3.3V系のマイコンが増えてきたこともあり、このUSBシリアル変換器の3.3V版が必要になったのでちょっと探してみたが、なぜか妙に価格が高い。「よし作るか!」と背中を押された感じで作ってみた。 PIC16F1459を使った具体例が「[Microchip Libraries for Application(MLA)](https://www.microchip.com/en-us/tools-resources/develop/libraries/microchip-libraries-for-applications)」にあるのだが、ここは廃盤(?)で「これからはMCCを使え」と書いてある。ただMCCは別に使い方を教えてはくれないので、MLAの代わりにはならないのではないか。 なんでかなぁ、本気で使ってもらう気あんのかな、という感じがするし「もう素人は切り捨てる」ということか。電子工作界隈が盛り上がらないとすぐにRISC-Vにとって代わられるぞな。 ## MLAをイマドキ使うにはハードルが高い MLAにはmac用もあるのだが、長々とダウンロードしてもインストーラーが起動しない。セキュリティに引っ掛かるのかどうやって展開するのかわからないので、Windowsからファイルだけ持ってきた。以前にプロジェクトを読み込んで間違って編集したら二度と起動できなくなったことがあるので、全てのファイルをRead-Onlyに設定してある。 MLA内のサンプルプロジェクトは4つのフォルダからそれぞれ読み込むようになっていて内容が把握しにくい。したがってMCCのようにプロジェクトフォルダの中に全てのファイルを置くようにした。ファイルをちまちまとコピーし、プロジェクトに追加し、PIC 16F1459から1454に変更してコンパイルすると、「ファイルが読めねぇよ」「そんなレジスタはねぇよ」と文句を言われるので、それらを修正していく。 なお、プロジェクトの設定で「C90」を指定し、xc8コンパイラはver2.50でないと動かない。ver2.49では動かない(コンパイルできるが走らない)し、ver3.00でも動かない(C90に設定できない)。これが地雷原か。 ## 具体的な例を挙げると まずは「usart.h」でピンアサインを1454向けに変更する必要がある。TXはRC4、RXはRC5、CTRはRA5、RTSはRA4、DTSはRA3(リセットは使わない)そしてDTRがRC3である。他のLEDやBUTTONの定義はシステムやCソースファイル側にあるが、なぜかUSARTだけはこのヘッダファイルで定義されていて面倒くさい。

-

次に「system.h」だが、ローカルなインクルードファイルが、例えば「#include <leds.h>」と<>で囲んであるので、これを””で囲む。内部オシレータを使うのでコメントアウトされている「USE_INTERNAL_OSC」を有効にしておく。48MHz駆動ではパスコンを1μFから8μFにする必要がある、と書いてある(ここ重要)。

+

次に「system.h」だが、ローカルなインクルードファイルが、例えば「#include <leds.h>」と<>で囲んであるので、これを””で囲む。内部オシレータを使うのでコメントアウトされている「USE_INTERNAL_OSC」を有効にしておく。なお、48MHz駆動ではパスコンを1μFから8μFにする必要がある、と書いてある(ここ重要)。

「buttons.c」はインクルード修正(<> → "")だけだ。スイッチは接続するつもりが皆無だが、リセットボタンを普通のボタンで使うようになっているので、ここはそのままでいい。

-

「leds.c」内はLED1から4を全て念の為RC2に接続されていることにした。必要であればRC2にLEDを繋いでもいいが、眩しいし必要な基板が大きくなるので実装はしない。

+

「leds.c」内はLED1からLED4を全て念の為RC2に接続されていることにした。必要であればRC2にLEDを繋いでもいいが、眩しいし必要な基板が大きくなるので実装はしない。

「usart.c」はインクルードの修正(<> → "")のみ、残りは無修正で良い。 ## コンパクト実装 ICのサイズがDIP14なのでそれほど小さくならないが、ユニバーサル基板を割り、3.3VレギュレータをUSBコネクタ脇に押しやって、5V電源コネクタも実装した結果が以下である。6ピンソケットはFTDI標準に従った。 ![実装例](https://camo.elchika.com/293afb68d5994a52f53f33b0b912b435f86274a8/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f61656165346139362d333036642d343733642d613935652d396339313936333337306333/) ループバックしても対向させて通信速度を変更しても通信可能なので、きっと問題なくできていると思われる。 あとで3Dプリンタで筐体を作れば出来上がりだ。