バンクとデータメモリ

バンクとデータメモリ  データメモリはPICの振る舞いを制御するSFRと任意の変数を格納できるGPRから成る8bit幅のメモリです。そしてPICのデータメモリに自由にアクセスする為に避けて通れないのがバンクとページという概念です。

バンク
 バンクはデータメモリ空間にアクセスする時の概念です。下の図はおなじみPIC16F84Aと比較的新しいPIC16F648Aのデータメモリを示したものです。これらは同じ18ピンパッケージのPICですが、16F84AはGPRが68byteしかないのに対して、16F648Aは256byteのGPRが実装されています。(さらに新しいPIC16F88では336byteのGPRを実装しています。)

 ミッドレンジのPICでEEPROMを除くデータメモリはひとつのバンクで128byteあり、最大4つのバンクで512byteのメモリを持っています。 PIC ワード ところでミッドレンジのPICは1つの命令に14bitを使いますが、その下位の7bitはデータメモリのアドレスを指定するために使われます。7bitの2進数で表現できる値は0から127の値で、これでは128byteのメモリ空間しか指定できません。 PIC STATUS ここでバンクの概念が用いられます。SFRレジスタの中にSTATUSというレジスタがあります。このSTATUSレジスタの6ビット目と7ビット目の2bitを使いバンクを指定します。これはブロックダイアグラムなどで、STATUS<6:5>と表現されます。STATUSレジスタはバンクを指定するので、どのバンクにあってもアクセス出来なければなりません。そのためSTATUSレジスタはどのバンクにも共通に存在します。こういったSFRがいくつかありますので、データーシートで確認してみて下さい。
 メモリの図中で"access"と表記された部分がありますが、これはとなりのバンク(バンク0)にマップされていて、そのアドレスにアクセスすると、バンク0を参照します。逆に言うとマップされている部分はバンクを意識することなくデータメモリにアクセス可能ですので、どのルーチンからも良く使われる変数をここに置いておくと、プログラムが作りやすくなる場面があるかも知れません。

PICマイコンと電子工作 HOME



inserted by FC2 system