【RAMアクセスによる消費電流削減】
データやSFRアクセスのためにPIC内蔵のRAMを読み出し、書き込みを
行うと、そこで当然電力を消費します。
プログラムそのものがデータをアクセスしなければ動作しませんから
通常は余り気にしないのですが、それでも次のような例の場合には、
RAMのアクセス頻度を減らすことができます。
これにより、例のようにかなりの消費電流を削減することができます。
下記の例は、タイマ1がタイムアップするのを待つループですが、
赤い枠が通常の記述で、毎回レジスタをアクセスしてT1IFビットがセット
されるのを待っています。
PICのRUNモードでフルスピードで実行すると19.1mA消費します。
これに対して緑枠内は、同じようにT1IFビットがセットされるのを待つ
ループですが、レジスタアクセスをしたら、NOP命令を5個挿入し、その後
レジスタをアクセスするようにしています。これで、レジスタのアクセス頻度
は1/5以下になります。
こうすると消費電流は同じ条件でも16.4mAとなり、約15%の削減ができる
ことになります。これはタイマのタイムアップする間で減りますから、全体の
消費電流にもかなりの影響を及ぼします。
《RAMアクセス頻度を削減した例》