現在、PIC16F648Aを使って、内蔵EEPROMを使ったプログラムを書いている。で、Errata (80151L.pdf) を確認したら、EEPROM書き込みに問題があって、以下のような対処が必要であるそうだ。
以下、訳(内容の保証はいたしません)(PDFにプロテクトかけるのヤメテ→Microchip)
◆問題点:データEEPROM書き込みサイクル中に、予期しない命令が実行される可能性があります。
■これを回避するため、EECON1レジスタのWRビットをセットした(書き込みサイクルに入れた)直後にSLEEP命令を実行し、EEIF割り込み(EEPROM書き込み完了割り込み)によってSleepから復帰するようにしてください。
■その際、EEIF割り込み以外のすべての割り込みはDisableにしなければなりません。
※ほとんどすべての周辺機能は、Sleep中はサスペンドしてしまうので注意が必要です。
(要するに、変な命令が実行されないように、書き込み中は寝てろ、ということか。この対処方法も、なんつうか、力業ですなあ…。Sleep中にもEEPROM書き込み回路が動作する構成でよかったネ!)
この問題は、16F648Aでは Rev.A5以降で修正されているそうだ。しかし、私が2005/08に秋月で買った16F648Aは、04年19週のものだった。04年20週以降がRev.A3ということなので、私が買ったのは、Rev.A2以前のチップなのだろう。
(04193BJというマーキングの頭の2桁が製造年・続く2桁が製造週)
ということで、問題のあるリビジョンのチップはまだ市場に出回っているようなので、注意が必要である。
私の今回のプログラムには関係ないのでここには書かないが、エラータには、このほかにもいくつかバグがある旨の記載がある。
コメント