その中の記事で
PIC HI-TECH CでEEPROMアクセスという記事があり、EEPROMの読み書きに専用のソースコードが書かれていたので、私はいつも使うEEPROM_READ,EEPROM_WRITEの事をコメントしてみた。そうすると、驚くべき事実が分かったのである。
1.EEIF (EEPROM write complete bit)をチェックしていない
但し、「EEIFビット」(書き込み完了判断)をチェックはしていないが、書き込み前に「WRビット」(書き込み中判断)をチェックしているので、書いた直後にすかさず読みに行くケースでもなければ特に問題にならないであろう。(コメントを頂きました。ありがとう御座います)
2.マクロ定義ということで、コードサイズが大きくなる
用意されていた定義文を疑問に持たずに使っていたのだが、マクロ定義なら、使えば使うほどプログラムが肥大する。そこで、ちょっと実験を行ってみた。
早速検証開始
私が公開している
LCD VUメータのソースコードを使用することにした。これはEEPROM_READ 27箇所、EEPROM_WRITE 3箇所がmainで使われているので、その効果がよくわかる筈だ。
Memory Summary:
Program space used F88h ( 3976) of 1000h words ( 97.1%)
殆どギリギリ状態
これを元に、ソースコードを改造してみる。
EEPROM_READとEEPROM_WRITEをeeprom.cにてまとめた場合
unsigned char E2promRead( unsigned char adr ){
return(EEPROM_READ( adr ));
}
void E2promWrite( unsigned char adr, unsigned char data ){
EEPROM_WRITE( adr,data);
}
【結果】
Memory Summary:
Program space used E5Bh ( 3675) of 1000h words ( 89.7%)
何と、301ワードも節約した。
セコメントをする