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


PICBASICコンパイラ

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

[第202回]



●PIC16F627(3)CONFIGについて

前回からの続きです。
HPの記事にはタイムラグがあります。
ずっと時間に追われる毎日を送っています。
その日におきた問題点とか気がついたことや解決できたことなどはできるだけ早い時点でノートにメモするようにしています。
問題が解決できなかったりして悩んでいる時やご注文の納期が迫って目がつりあがっていたりするととてもHPの更新どころではなくなってしまいます。
結果としてHPには後日落ち着いてから過去の内容を整理しながらあらためて検証しつつ書くことになります。
前回はPIC16F627の書き込みプログラムに問題があってCONFIGが正しく書き込めていませんと書きました。
それは過去の話です。
今はその点についてはほぼクリアしています。
前回も書きましたがPICのCONFIGアドレスには思い違いがありました。
そのことについては[第197回]に書いています。
下はPIC16F627/628のPROGRAM MEMORY MAPです。


[出典]Microchip Technology Inc.PIC16F62X Flash Memory Programming Specification

CONFIGアドレスは2007になっています。
このメモリマップはWORD単位の表記ですからBYTE単位のアドレスに直すと400Eになります。
PIC16F627のWRITERプログラムにはそのほかにも問題があって、このCONFIGの問題をクリアしたのは別のPICに対するWRITERプログラムを作成したときでした。
そのあたりのこともいずれ書くつもりです。
CONFIGのアドレスを正しく直してから書き込みプログラムを実行しました。
昨日はここまで書いたところで続きを書くのを中止しました。

PIC16F627の書き込みテストについては何日も前に作業していたのでそのときのログを使うつもりだったのですが、よくよく見たところプログラムにバグがあることに気が付きました。
これはいかんということで急遽バグ取りをすることに…。
昨日UPできなかったのはそういう事情からでした。
本日バグ取り後にあらためて実行しました。
今度は大丈夫です。
まず最初に/PICRDFを実行しました。
logfile piciolog\0123082223.txt open
*** pic i/o ***
picio-30 connected
>/picrdf
startcode=01
type=04,uadrs=00
[08]
0000[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0010[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0020[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0030[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0040[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0050[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]


07A0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07B0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07C0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07D0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07E0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07F0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
type=04,uadrs=01
[08]
0800[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
読み出した全フラッシュプログラムエリアが3FFFです。
消去済みであることが確認できました。
最後の1行はCONFIGエリアです。
/PICRDFを実行すると画面に表示するとともにHEXFILE.HEXが作成されます。
ここでファイル名を指定するとその名前のヘキサファイルが作成されます。
同名のファイルが既に存在すると上書きするかどうかを訪ねられます。
名前を指定しないで/PICRDFだけの場合はHEXFILE.HEXは上書きされます。
’F’をつけない/PICRDの場合にはヘキサファイルは作成されません。

/HLOADコマンドでもとになるヘキサファイルをロードしてから/PICWRコマンドでPIC16F627に書き込みを行いました。
>/hload 16f627test.hex
loading 16f627test.hex ...
i=175,binbfend=72
>/picwr
startcode=01
i=6,b=2,[04]0000
[05][04][02][00][00][00][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[01]
i=12,b=2,[00]0000
[05][00][02][00][00][05][28][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[01]
i=22,b=6,[00]000a
[05][00][06][00][0A][07][30][9F][00][83][16][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[01]
i=42,b=16,[00]0010
[05][00][10][00][10][85][01][86][01][83][12][21][08][85][00][12][20][A2][0B][0D][28]
[01]
i=62,b=16,[00]0020
[05][00][10][00][20][A1][03][0B][28][FA][30][A0][00][86][06][A0][0B][14][28][08][00]
[01]
i=68,b=2,[00]400e
[05][00][02][40][0E][F9][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[03]
picwrend

デバッグのためにヘキサファイルの1行をPIC WRITER回路に送出する毎に送信データを表示しています。

書き終わったあとは/VERIFYコマンドで読み出してベリファイを行います。
>/verify
inbfend=0
startcode=01
i=6,b=2,[04]0000
[06][04][02][00][00][00][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(01)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
i=12,b=2,[00]0000
[06][00][02][00][00][05][28][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(02)(05)(28)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
i=22,b=6,[00]000a
[06][00][06][00][0A][07][30][9F][00][83][16][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(06)(07)(30)(9F)(00)(83)(16)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o][o][o][o][o]
i=42,b=16,[00]0010
[06][00][10][00][10][85][01][86][01][83][12][21][08][85][00][12][20][A2][0B][0D][28]
(10)(85)(01)(86)(01)(83)(12)(21)(08)(85)(00)(12)(20)(A2)(0B)(0D)(28)
[o][o][o][o][o][o][o][o][o][o][o][o][o][o][o][o]
i=62,b=16,[00]0020
[06][00][10][00][20][A1][03][0B][28][FA][30][A0][00][86][06][A0][0B][14][28][08][00]
(10)(A1)(03)(0B)(28)(FA)(30)(A0)(00)(86)(06)(A0)(0B)(14)(28)(08)(00)
[o][o][o][o][o][o][o][o][o][o][o][o][o][o][o][o]
i=68,b=2,[00]400e
[06][00][02][40][0E][F9][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(F9)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
vfend
error=0

ここでもプログラムのデバッグのためにチェックデータを表示させています。
[XX]は書き込んだデータで(XX)はそれを読み出したデータです。
[o]は両者が一致していることを示しています。
不一致のときは[x]が表示されます。
最後のerror=0は全データが一致したことを示しています。

念のため後でもとのファイルと比較するためもう一度プログラムエリアを読み出してヘキサファイルを作成しました。
今度はファイル名を指定して/PICRDFを実行しました。
>/picrdf 16f627test250123.hex
startcode=01
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][07][30][9F][00][83][16]
0010[10][85][01][86][01][83][12][21][08][85][00][12][20][A2][0B][0D][28]
0020[10][A1][03][0B][28][FA][30][A0][00][86][06][A0][0B][14][28][08][00]
0030[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0040[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0050[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]


07A0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07B0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07C0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07D0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07E0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07F0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
type=04,uadrs=01
[08]
0800[10][F9][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
>/exit

リモート接続を終了しました
logfile closed at Thu Jan 23 08:26:51 2025


WinMergeでもとのヘキサファイルと今回作成したファイルを比較しました。



データがあるところはCONFIGを含めて全て一致しています。

WinMergeについては[第193回]で書いています。

PICBASICコンパイラ[第202回]
2025.1.23 upload

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