2023.8.29
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第70回]



●HEXファイル比較データの検証(3)

前々回と前回はもとになるHEXファイルと書き込み後のPICから読み出して作成したHEXファイルとの比較を行ないました。
前回までで説明した相違点については理由があって特に問題はないということがわかりました。
しかし相違点はまだあと二箇所残っています。
それは最後のところにあります。

:020000040030CA
というレコードは上位アドレスが30であることを示しています。
300000はCONFIGのアドレスです。
左側のファイルはそのあとに3レコードがあります。
最初のレコードはアドレス0000〜0003の4バイトでその値は00321F07です。
その次のレコードはアドレス0005〜0006の2バイトで値は8801です。
アドレス0004はありません。
その次のレコードはアドレス0008〜000Dの6バイトで値は03C003E00340です。
アドレス0007はありません。
そこまでのところが右側では1レコードになっています。
アドレス0000〜000Dの14バイトです。
値は00323F070088010003C003E00340です。
左側と右側で相違しているところを取り出してみると次のようになります。
アドレス  左    右
300002 1F − 3F
300004 −    00
300007 −    00

前回確認しましたように秋月のPIC WITERで同じHEXファイルをもとに書いたPICから読み出したHEXファイルと試作したPIC WRITERで書いたPICから読み出したHEXファイルは完全に一致しました。
そのことからするとこれも前に書きましたように元のHEXファイルとPICから読み出したHEXファイルの相違にはそれなりのわけがあるはず、ということになります。
下はPIC18F13K/14K50のCONFIGURATIONの一覧です。

[出典]Microchip Technology Inc. PIC18F13K50/14K50Flash Memory Programming Specification
これを見るとPIC18F13K14K50ではアドレス300004(CONFIG3L)は無いようです。
同様にアドレス300007(CONFIG4H)もありません。
この表の注記を読むとアミがかかった’−’のビットはunimplemented(未実装)でread as ’0’(0が読み出される)と書いてあります。
右側のアドレス0004と0007の値が00であることはこれで納得できます。
アドレス0002はどうでしょうか。
上の表で見るとCONFIG2Lです。
左側のファイル(もとのHEXファイル)では1Fですが右側のファイル(PICから読み出したファイル)では3Fになっています。
ビット5が違っています。
CONFIG2Lのビット5はVREGと表記されています。
よく見ると右肩に(3)と書かれています。
下のNOTEの3:を見るとVREG is read−onlyと書いてあります。
さらに続けてVREG=1 for PIC18F1XK50 devicesとありますからPIC18F13K50の場合(PIC14K50も同じ)このビットは1が読み出されることがわかります。
これでここも納得です。

もうひとつ異なっているところがあります。

右側には
020000040020DA
08000000FFFFFFFFFFFFFFFF00
という2レコードがありますが左側にはありません。
アドレス200000はIDのエリアです(前回参照)。
もとのファイルでは(ソースプログラムでは)IDは設定していませんから左側にはレコードがありません。
しかしPICから読み出すときにはIDが設定されてなくて全部FFでもそれをデータとして読み出すようになってるようです。
ということでここの相違についてもクリアできました。

やっとこれで検証が済みました。
PIC WRITER試作2号機でとりあえずPIC18F13K50については無事書き込みに成功したことが確認できました。

PICBASICコンパイラ[第70回]
2023.8.29upload

前へ
次へ
ホームページトップへ戻る