昨日、部品が届くまで保留としたPIC12F1501を使った工作ですが、昨夜何気なくデータシートを眺めていたら、なんとEEPROMが載っていませんでした。
次の工作は電源を切っても記憶しておきたいデータがあります。安いPICだったからかと思って調べたら、EEPROMの代わりに通常はプログラムを書き込むFLASHメモリをプログラムから読み書きできるようです。それも通常のFLASHよりも繰り返し書き込み耐性の強い10万回の書き換えを保障しているHEF(High Endurance Flash)というのが、FLASHの最後に128バイト付いてました。
EEPROMより読み書きが早いようですが、書き込む手順が面倒です。書き込む前にまずEraseして全てのビットを1にします。それがバイト単位にはできなくて、32ワード単位(ブロック)のようです(MPLABでシミュレーションしたらそうなりました)。一旦Eraseしたら、書き込みはワード単位でできるようです。なお、読み出しもワード単位(バイト単位でも可)でできます。
ただ、データを更新するには一旦ブロックでEraseしないといけないので、保存しておいたデータはブロック単位で読み出して、RAMに記憶していかないとダメです。PIC12F1501はRAMが64バイトしかなく、1ブロック32ワードを全て記憶しようとするとそれだけでRAMを使い切ってしまいます。また、Eraseした直後に電源が切れたらデータも消えてしまいます。
今回は2ワードしか使用しない予定なので問題ないですが、使い方を考えてPICを選択しないとダメですね。安さに釣られてはいけません。
本日午前中かけて、FLASHの仕組みを理解し、データシートに載っていたサンプルコードを動かせるところまできてひと安心。これで部品が届くまで作業を保留にできます。
0 件のコメント:
コメントを投稿