より新しいプロジェクト

内容

まえがき

PICを使って自作した機器のうち,日常的によく使っているのは(古い記事へのリンク),

です.これらは,どれも,2000年前後の作で,PIC16F84(“A”はつかない)を使用していて,開発環境は,古いバージョンのMicrochip社のMPLAB+アセンブラーです.

アセンブリ言語は,書いたものがそのまま機械語になるため,プログラムサイズは小さくなり,ループの遅延時間,割り込みの処理なども,把握しやすいですが,ソースそのものが人間にとってわかりにくいです.少し時間が経つと,自分で書いたプログラムさえ,あらためて理解し直さないといけないです.

Cはコンパイラーのできいかんで,機械語の大きさ,速度がそうとう悪くなりますが,何と言っても条件分岐や,ループが作りやすいです.

試しにシリアル通信のプログラムをCにしてみたところ,何とも楽です.ソースも,少なくとも自分で書けば,少し時間が経っても,アセンブリ言語よりは理解しやすいです.

ただ,Cにも欠点はあります.それは,アセンブリ言語ほどの柔軟性がないということです.

たとえば,入り口が2つあるサブルーチンはアセンブリ言語ではあっさり作れます.主な処理は同じだけど,前処理が少し違う2つのサブルーチンを主な 処理を共通化して,入り口を2つ作ってそれぞれ別のサブルーチンとして呼び出せます.使用するスタックもプログラム容量もデータ領域も最小(最適)です.

自分のこれまでのプログラムでは,この手法をよく使っています.

Cでこれをやるには,いくつか方法がありますが,わたし的には,2つサブルーチンを書いてしまいます.プログラムとデータ領域は倍になりますが,処理速度と使用スタックの最適化です.

共通処理のルーチンを別のサブルーチン化して,2つのサブルーチンにそれぞれの前処理を書いて,共通処理ルーチンを呼ぶというのが,理学部系の解法でしょうが,スタックや処理時間に制約のあるPICでは,避けたいです.

能書きが延々長くなりそうなので,この辺でやめときます.

C化プロジェクトのその他のねらい †

オープンソース化 †

MPLABを使う限り,完全なオープンソース化はできない相談ですが,無料のHI-Tech社のPICC-Liteから,さらにSDCCへの移行を目指します.

12F509, 12F683, 16F88化 †

8ピンで済んで,割り込み処理がないものは,PIC12F509に移行します.これはPICC-Liteでできます.

さらに,SDCCに移行できれば,PIC12F683, PIC16F88化も容易です.割り込みのない12F509よさようなら.内部クロックも,A/Dコンバータもない16F84(A)よさようなら.

C化プロジェクトの個別課題 †

  1. PIC/Proj21 FT-1000MP・DVS-2の切り換え(シリアル通信スイッチ)
  2. PIC/Proj22 エレキー
  3. PIC/Proj23 アンテナ切り換えスイッチ
Notes:
1. 他に,Foxハンティング用Foxがあります.
2. Bugの混入さえあります^^;
他に,Foxハンティング用Foxがあります.
Bugの混入さえあります^^;