PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第177回]
●PIC18F45K50(4)/PICRD
前回はPIC18F45K50に簡単なテストプログラムを書き込んで実際にそれが正しく動作することを確認しました。
しかしせっかくのPIC WRITERなのですからやっぱりHEXファイルを作成する機能がほしいと思います。
そういうことになるとやっぱりそれも作るしかありません。
HEXファイルにはフォーマットといいますかいくつかの約束事があります。
いきなりそこまでいくのはちょっとしんどいです。
ここは落ち着いてステップ バイ ステップでいきましょう。
書き込んだプログラムを読み出すことはベリファイプログラムで実際に行なっています。
ベリファイでは読み出したデータ(プログラム)をもとのHEXファイルのデータと比較して一致するかどうかを確認しています。
そこの部分を利用して、比較するのではなくて読み出したデータをUSB経由でWindows側のプログラムに送れば基本的なところは出来上がります。
今までに作ったPIC WRITERプログラムにその部分を追加して実行してみました。
左側はもとのHEXファイルで右側は実行時のログです。
とりあえずの試作的なプログラム作成ですから基本的な確認ができるだけの表示のみを行なっています。
右側のログの説明です。
追加したコマンドは/PICRDです。
PICのプログラムエリアの先頭から16バイト単位で読み出します。
最初にメモリアドレス2バイト4桁を表示し、それに続いて読み出した16バイト分の値を表示します。
まだ試作版のプログラムなのでチェックサムは計算していません。
左側のHEXファイルとメモリ内容は一致しています。
*は16バイトの値がすべてFFであったときに表示されます。
*1個が16個分のFFに相当します。
本当は*の表示は右側にずっとのびているのですがどうせ全部は表示できませんから途中でカットして示しました。
下のほうの1行はCONFIGです。
ここも問題ないようです。
.は16バイトの値が全て00であることを示します。
.1個が16個分の00に相当します。
PICではメモリが実装されていない領域を読み出すと00が返ってきます。
ここまで書いてきて気が付きました。
前回ERASEチェックができるといいのだが、と書きました。
/PICRDの機能のままでERASEチェックになることに気が付きました。
下がその確認です。
前回のプログラム(今回のはじめのところで/PICRDで読み出しているプログラム)を書き込んだPIC45K50をまず/ERASEで全消去しました。
その後/PICRDを実行しました。
さきほど/PICRDを実行したときに読み出されていたプログラムデータが全部*になっています。
これを見れば全部消去されたことが確認できます。
なおCONFIGはFFにはなりません。
PICBASICコンパイラ[第177回]
2024.12.12 upload
前へ
次へ
ホームページトップへ戻る