このブログでは、PICを動かすプログラムを作成するに必要最小限の説明を行いたいと考えています。 その立場でPIC18Fのメモリーを説明します。 これまでの記事にもデータ・メモリー、プログラム・メモリーと言った言葉を使ってきましたが、少しまとめてみます。 太い線で囲まれたメモリーはPICに何らかの動作をさせようとすると必ず扱うメモリーです。 EEPROMメモリーは必要に応じて使います。 灰色の文字で示したメモリーはプログラムの動作に必須ですが、極々特殊な例を除けばプログラムで書き換えることはありあません。(言葉だけ覚えておけば良いと思います。)

memory

<<< プログラム・メモリー >>>
プログラム・メモリーはMPLAB(等)で作成したプログラムを書いて使います。 PICは電源リセット直後に0番地から命令を読み出して実行します。 プログラム・メモリーに書かれた情報は、PICの電源が切れても保存され、次に電源が入るとPICは再び0番地から命令を読み出して実行します。

PICはプログラム・メモリーに書かれた命令を次々と実行するだけでなく、ここに書かれたデータテーブルを読み出して活用したり、新たに情報を書き換えることが出来ます。 プログラム・メモリーは10万回の書き換えに耐えるようです。(有限だけど、ほぼ無限です!)

<<< データ・メモリー >>>
PICに何らかの処理をさせようとすれば必須のメモリーです。 正式には File Registers と呼ぶようですが、このブログではデータ・メモリーと書きます。 PICの電源が切れるとデータ・メモリー内の情報は失われます。 プログラムが自由に使うメモリーで、プログラムの目的を達成する為に、その多くの部分がデータ・メモリーにアクセスする命令に成るのが普通です。

データ・メモリーは幾つかのバンクで仕切られていますが、最も良く使うのがアクセスバンクです。 このブログでは 「データ・メモリー≒アクセスバンク」 と言う扱いです。 プログラムで扱う情報が多いケースでは他のバンクを使うことも考えます。

アクセスバンクの中に、SFR ( Special Function Register ) と言う特殊な役割を持ったメモリー群があります。 SFRはPICの各端子を電気的に入出力動作させる為のソフトウェアとハードウェアのインタフェースと言った役割のものが多く、用途毎に指定されたSFRにアクセスします。 PICではテーブル参照(間接アドレッシング)や掛け算もSFRを使って実現します。

<<< EEPROMメモリー >>>
PICの電源が切れても情報を保存するデータ用のメモリーです。 累積動作回数を記録すると言った用途で、必要に応じて使います。

<<< スタックメモリー >>>
サブルーチンコールや割り込み時に戻り番地を記録する為に使われるメモリーで、特殊な使い方を除きプログラムで値を読み書きすることはありません。 注意したいのはその容量ですが、31段の戻り番地を記録出来るので普通は心配いりません。 名前だけ知っていれば困らないと思います。

<<< プログラムカウンター >>>
プログラム・メモリーの中で、現在どのアドレスを実行しているかを記録しているメモリーです。 名前だけ知っていれば良いと思います。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。