2024年2月1日木曜日

出入り検知器をPCB化する(その2)

 その1で説明したPCBであるが、必要な部品を搭載して次の様になった。

次はソフトウェアの番である。

1号機の場合、PICに16F15325を使い、メモリー容量やピン数の関係でモニターを搭載することが出来なかったが、今回の18F27Q43ではモニターを作って、動作を監視しながらプログラムを組み上げていくことができる。18F27Q43のブロック図を次に示す。使用したモジュールは赤で示した。18F27Q43はDMAを内蔵しているが、これを使いこなすところまでは行っていない。

18F27Q43ブロック図
 

 ソフトウェアといっても2023年末の段階でソースファイルが44個に分かれており(うち約半分はヘッダーファイル)簡単に説明できる内容ではないので、開発の概略を述べる。 なおソフトウェアの開発に伴ってハードウェアを修正した部分もあるので、その都度言及する。

プログラム開発の最初の段階では割り込みを使わないで、使う予定の個々のモジュールの設定と動作を確認した。18Fシリーズは機能が豊富で、16Fシリーズと同じモジュールよりも作りは複雑である。例えばPIC16F15325のSPI1とPIC18F27Q43のSPI1の制御レジスタは次の様に違っている。

PIC16F15325のSPI/I2C制御レジスタ構成

 PIC18F27Q43のSPI1制御レジスタ構成

16FシリーズではSPIモジュールはI2Cモジュールと共用になっていて、そのためのレジスタを含んでいる。16Fシリーズが1バイト毎に処理する必要があるが、18Fにはカウンタがあり、纏まった単位で転送できるようになっているようだ。ただし、この場合はDMAと併せて使う必要があろう。何が言いたいのかというと16Fシリーズのプログラムが18Fシリーズでは使えず、18Fシリーズの機能を調べて作り直す必要があるという事である。

信号に関わるプログラムを書くとき、その変更によって結果がどう変わるかを知りたい場合があるが、PIC内部にプローブを突っ込んで直接観測する手段はなく、PPSを使っていずれかのピンに取り出す必要がある。多くのデジタル信号はPPSでいずれかのピンに取り出すことが出来るが、PPSでのピンへのマッピングに制約がある。そこで全ての信号を扱うことが出来るCLCモジュールを使う事で任意の信号を1つのピンに選択的に取り出すことが出来るので、それをオシロスコープ等を使って観測する事ができ、このほ方法は初期のデバッグに役に立った。

 ・・・そうこうしているうちに、ソフトの開発に伴っていくつか変更点が生じたので次のバージョンの基板を発注した。この基板を最低要件の5枚発注して送料込みで3ドル以下である(基板は50%ディスカウント)。これなら毎週新バージョンを発注してもよいくらいである。

1週間ほど経って基板が届いたので早速部品を実装し動作を確認した。特に問題も無く、上手く出来たようである。


ソフトの話は次回以降に回す。

(続く)