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


PICBASICコンパイラ

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

[第162回]



●VERIFY

前回までPIC WRITERのプログラムを作ってきました。
実際にPIC18F14K50に対して書き込みテストを行なったあと、その書き込みを行なったPIC18F14K50を秋月のPICプログラマにセットして書き込まれたPICプログラムを読み出してHEXファイルを作成し、それと元のHEXファイルとを比較して正しく書き込まれていることを確認しました。
プログラムを作る過程でのテストとしてはそれでよいのですけれど実際の書き込みプログラムとしてはそれでは使い物になりません。
やっぱり書き込みを行なったならばその後ベリファイプログラムによって元のデータと比較して正しく書き込まれているかどうかを確認すべきです。
ということで今回はVERIFYプログラムを作成して実際にそれが正しく機能するかどうかを確認してみました。
下がその画面です。

VERIFYプログラムは書き込み時に読み込んだ元のHEXファイルと同じ情報をもとにして書き込み後に1バイトずつ読み出してもとのデータ(プログラム)と比較します。
PICはユーザー用データバッファ(データRAM)の容量が小さいので大きなデータ(プログラム)を溜め込むことができません。
なので書き込み時にはHEXファイルの1行のデータ(通常16バイト)をUSB経由で読み込んでそれを書き込みます。
ちなみに書き込み用のテーブルバッファは非常に小さくPIC18F13K50では8バイト、PIC18F14K50で16バイトしかありません。
ということから全部のデータを書き込んだあとでそれをベリファイするときには書き込んだときと同じようにもとのHEXファイルをもう一度読み込みながら比較をする必要があります。
今回は前回までの作業ですでに書き込み済みのPIC18F14K50のベリファイを行なうわけですがそれに先立ってもとになるHEXファイルをWindows側のプログラムに読み込んでおく必要があります。
最初に/HLOADコマンドでPICIOBS2X.HEXファイルを読み込んでいるのはそういう理由からです。
/VERIFYがベリファイのためのコマンドです。
本来は書き込みコマンド(/PICWR)の中で全消去コマンド(/ERASE)も今回のベリファイコマンド(/VERIFY)も実行するべきなのですが、今は個々の機能のテストをしている段階なのでそれぞれを独立したコマンドとして扱っています。
/PICWRの時もデバッグのためにHEXファイルの1行を読み込んでそれをPICに送る都度データの一部を表示させました。
今回はそこにさらにベリファイのために読み出した書き込み後のデータともとのデータをPICからUSB経由で読んでそれの表示も行なっています。
あくまでVERIFYプログラムを作る過程でのデバッグ情報ですので詳細についての説明は省きます。
[04]はハイアドレス(20ビツトのアドレスの上位4ビット)を示す行であることを示しています。
[00]は通常の行であることを示しています。
[01]はPICに送信したHEXファイルの1行分のデータを比較した結果一致したときにPIC側から送信されるOKを示すコードです。
その場合にはそれに続く00−00は意味を持ちません。
表示データが多いため画面がスクロールして最初の画面が消えてしまいました。
上の画面はZB3BASICのページ表示機能を使って最初のところの表示を復活させて表示した画面です。
下は最後まで表示が進んだあとの画面です。

データ表示行の最後の一行上でverify error!の表示があります。
エラーなしの時は[01]が返ってきますがエラーのときはそこが[0F]になります。
このときあとに続くデータは比較元のデータと読み出したデータを表示しています。
1F−3Fになっています。
そのあとの行でも[01]に続いて同じ1F−3Fが表示されていますがこれについては上のほうで説明しています通り[01]の後ろの表示は意味をもちません。
この1F−3Fの相違は[第70回]で説明していますように書き込みエラーではありません。
ということでVERIFYプログラムもOKになりました。

PICBASICコンパイラ[第162回]
2024.11.21 upload

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