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


PICBASICコンパイラ

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

[第179回]



●PIC18F13K50を再テスト

前回までのテスト作業をしながら気になっていたことがあります。
よくあることなのですがテストを繰り返しながらプログラムを修正しつつ機能そのものにも手を加えて部分的にプログラムを変更することがあります。
そうすると先にテストを済ませたところが後からプログラムを変更したことによってあらためてテストをしてみるとそこが通らなくなってしまうことがあります。
ずっと気になっていたのはPIC18F14K50などの書き込み用バッファが16バイトなのにPIC18F13K50のバッファは8バイトだという点です。
昨年ND80Z3.5を使ってテストを行なっていたときのPIC WRITERプログラムはその点を意識して書き込みをするときのデータ送出も8バイト単位で行なっていました。
今年になってからそのPIC WRITERプログラムをPICに移植する段階でターゲットのPICに送出する書き込み用データを16バイト単位に変更しました。
PIC18F13K50にはバッファが8バイトしかありませんからそこに16バイトのデータを送ったら後半の8バイトは書き込まれずに失われてしまうのではないかと思ったのですが、実際に実行してみるとPICWRもVERIFYも問題なくできてしまいました([第163回])。
その結果から見てPIC18F13K50のDataSheetではバッファのサイズは8バイトなのですが実際にはPIC18F14K50と同じ16バイトであるに違いないという結論に至りました([第164回])。
とは言えそれはあくまでそのように推論しているだけで本当のところはどうなのかまだなんとなくもやもやしたものが残っています。
PIC WRITERプログラムに新しく追加した/PICRD、/PICRDFはまだPIC18F13K50では試していません。
そこでその確認を兼ねてもう一度PIC18F13K50をテストしてみることにしました。
下はそのログファイルです。
logfile piciolog\1214174952.txt open
*** pic i/o ***
picio-30 connected
>/erase
endcode=01
>/picrd
startcode=01
type=04,uadrs=00
[01]
**********************************************************************************************************
**********************************************************************************************************
**********************************************************************************************************
**********************************************************************************************************
****************************************************************************************..................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..........................................................................................................
..................................[01]
type=04,uadrs=30
[01]
0000[10][00][27][3F][1F][00][88][85][00][03][C0][03][E0][03][40][00][00]
...............[01]
>/hload piciobs2x.hex
loading piciobs2x.hex ...
i=4109,binbfend=1814
>/picwr
startcode=01
i=6,b=2,[04]0000*i=14,b=4,[00]0000*i=22,b=4,[00]0008*i=42,b=16,[00]0020*i=62,b=16,[00]0030*i=82,b=16,[00]
0040*i=102,b=16,[00]0050*i=122,b=16,[00]0060*i=142,b=16,[00]0070*i=162,b=16,[00]0080*i=182,b=16,[00]
0090*i=202,b=16,[00]00a0*i=222,b=16,[00]00b0*i=242,b=16,[00]00c0*i=262,b=16,[00]00d0*i=282,b=16,[00]
00e0*i=302,b=16,[00]00f0*i=322,b=16,[00]0100*i=342,b=16,[00]0110*i=362,b=16,[00]0120*i=382,b=16,[00]
0130*i=402,b=16,[00]0140*i=422,b=16,[00]0150*i=442,b=16,[00]0160*i=462,b=16,[00]0170*i=482,b=16,[00]
0180*i=502,b=16,[00]0190*i=522,b=16,[00]01a0*i=542,b=16,[00]01b0*i=562,b=16,[00]01c0*i=582,b=16,[00]
01d0*i=602,b=16,[00]01e0*i=622,b=16,[00]01f0*i=642,b=16,[00]0200*i=662,b=16,[00]0210*i=682,b=16,[00]
0220*i=702,b=16,[00]0230*i=722,b=16,[00]0240*i=742,b=16,[00]0250*i=762,b=16,[00]0260*i=782,b=16,[00]
0270*i=802,b=16,[00]0280*i=822,b=16,[00]0290*i=842,b=16,[00]02a0*i=862,b=16,[00]02b0*i=882,b=16,[00]
02c0*i=902,b=16,[00]02d0*i=922,b=16,[00]02e0*i=942,b=16,[00]02f0*i=962,b=16,[00]0300*i=982,b=16,[00]
0310*i=1002,b=16,[00]0320*i=1022,b=16,[00]0330*i=1042,b=16,[00]0340*i=1062,b=16,[00]0350*i=1082,b=16,[00]
0360*i=1102,b=16,[00]0370*i=1122,b=16,[00]0380*i=1142,b=16,[00]0390*i=1162,b=16,[00]03a0*i=1182,b=16,[00]
03b0*i=1202,b=16,[00]03c0*i=1222,b=16,[00]03d0*i=1242,b=16,[00]03e0*i=1262,b=16,[00]03f0*i=1282,b=16,[00]
0400*i=1302,b=16,[00]0410*i=1322,b=16,[00]0420*i=1342,b=16,[00]0430*i=1362,b=16,[00]0440*i=1382,b=16,[00]
0450*i=1402,b=16,[00]0460*i=1422,b=16,[00]0470*i=1442,b=16,[00]0480*i=1462,b=16,[00]0490*i=1482,b=16,[00]
04a0*i=1502,b=16,[00]04b0*i=1522,b=16,[00]04c0*i=1542,b=16,[00]04d0*i=1562,b=16,[00]04e0*i=1582,b=16,[00]
04f0*i=1602,b=16,[00]0500*i=1622,b=16,[00]0510*i=1642,b=16,[00]0520*i=1662,b=16,[00]0530*i=1682,b=16,[00]
0540*i=1702,b=16,[00]0550*i=1722,b=16,[00]0560*i=1742,b=16,[00]0570*i=1762,b=15,[00]0580*i=1774,b=8,[00]
0590*i=1780,b=2,[00]2000*i=1786,b=2,[04]0000*i=1794,b=4,[00]0000*i=1800,b=2,[00]0005*i=1810,b=6,[00]0008*vfend

>/verify
inbfend=0
startcode=01
i=6,b=2,[04]0000[01]*i=14,b=4,[00]0000[01]*i=22,b=4,[00]0008[01]*i=42,b=16,[00]0020[01]*i=62,b=16,[00]
0030[01]*i=82,b=16,[00]0040[01]*i=102,b=16,[00]0050[01]*i=122,b=16,[00]0060[01]*i=142,b=16,[00]
0070[01]*i=162,b=16,[00]0080[01]*i=182,b=16,[00]0090[01]*i=202,b=16,[00]00a0[01]*i=222,b=16,[00]
00b0[01]*i=242,b=16,[00]00c0[01]*i=262,b=16,[00]00d0[01]*i=282,b=16,[00]00e0[01]*i=302,b=16,[00]
00f0[01]*i=322,b=16,[00]0100[01]*i=342,b=16,[00]0110[01]*i=362,b=16,[00]0120[01]*i=382,b=16,[00]
0130[01]*i=402,b=16,[00]0140[01]*i=422,b=16,[00]0150[01]*i=442,b=16,[00]0160[01]*i=462,b=16,[00]
0170[01]*i=482,b=16,[00]0180[01]*i=502,b=16,[00]0190[01]*i=522,b=16,[00]01a0[01]*i=542,b=16,[00]
01b0[01]*i=562,b=16,[00]01c0[01]*i=582,b=16,[00]01d0[01]*i=602,b=16,[00]01e0[01]*i=622,b=16,[00]
01f0[01]*i=642,b=16,[00]0200[01]*i=662,b=16,[00]0210[01]*i=682,b=16,[00]0220[01]*i=702,b=16,[00]
0230[01]*i=722,b=16,[00]0240[01]*i=742,b=16,[00]0250[01]*i=762,b=16,[00]0260[01]*i=782,b=16,[00]
0270[01]*i=802,b=16,[00]0280[01]*i=822,b=16,[00]0290[01]*i=842,b=16,[00]02a0[01]*i=862,b=16,[00]
02b0[01]*i=882,b=16,[00]02c0[01]*i=902,b=16,[00]02d0[01]*i=922,b=16,[00]02e0[01]*i=942,b=16,[00]
02f0[01]*i=962,b=16,[00]0300[01]*i=982,b=16,[00]0310[01]*i=1002,b=16,[00]0320[01]*i=1022,b=16,[00]
0330[01]*i=1042,b=16,[00]0340[01]*i=1062,b=16,[00]0350[01]*i=1082,b=16,[00]0360[01]*i=1102,b=16,[00]
0370[01]*i=1122,b=16,[00]0380[01]*i=1142,b=16,[00]0390[01]*i=1162,b=16,[00]03a0[01]*i=1182,b=16,[00]
03b0[01]*i=1202,b=16,[00]03c0[01]*i=1222,b=16,[00]03d0[01]*i=1242,b=16,[00]03e0[01]*i=1262,b=16,[00]
03f0[01]*i=1282,b=16,[00]0400[01]*i=1302,b=16,[00]0410[01]*i=1322,b=16,[00]0420[01]*i=1342,b=16,[00]
0430[01]*i=1362,b=16,[00]0440[01]*i=1382,b=16,[00]0450[01]*i=1402,b=16,[00]0460[01]*i=1422,b=16,[00]
0470[01]*i=1442,b=16,[00]0480[01]*i=1462,b=16,[00]0490[01]*i=1482,b=16,[00]04a0[01]*i=1502,b=16,[00]
04b0[01]*i=1522,b=16,[00]04c0[01]*i=1542,b=16,[00]04d0[01]*i=1562,b=16,[00]04e0[01]*i=1582,b=16,[00]
04f0[01]*i=1602,b=16,[00]0500[01]*i=1622,b=16,[00]0510[01]*i=1642,b=16,[00]0520[01]*i=1662,b=16,[00]
0530[01]*i=1682,b=16,[00]0540[01]*i=1702,b=16,[00]0550[01]*i=1722,b=16,[00]0560[01]*i=1742,b=16,[00]
0570[01]*i=1762,b=15,[00]0580[01]*i=1774,b=8,[00]0590[01]*i=1780,b=2,[00]2000[0f]*verify error! 0,12-00
i=1786,b=2,[04]0000[01]*i=1794,b=4,[00]0000[0f]*verify error! 2,1f-3f
i=1800,b=2,[00]0005[01]*i=1810,b=6,[00]0008[01]*vfend
>

最初に/ERASEコマンドで全消去しました。
そのあとERASEチェックの意味で/PICRDを実行しました。
CONFIGを除いては[*]と[.]のみの表示なので正しく消去されていることが確認できました。
[*]は読み出した16バイトが全てFFであることを示しています。
PICのプログラム領域を消去するとCONFIG以外のエリアがFFになります。
[.]は読み出した16バイトが全て00であることを示しています。
PICではメモリが実装されていない領域をアクセスすると00が返ってきます。
続いてもとになるプログラムデータファイルとしてPICIOBS2X.HEXをロードしました。
HEXファイルロードコマンドは/HLOADです。
そのあと書き込みコマンド/PICWRを実行しました。
/PICWR実行後に/VERIFYを実行しました。
エラーは表示されずに終った、と思ったのですが。
下から三行目と二行目でエラーが表示されてしまいました。
下から二行目はCONFIGです。
ここは読み出すと0が返ってくるビットがありますから書き込みのエラーではありません。
問題は下から三行目です。
アドレス2000に12を書き込んだはずなのに00が返ってきています。
ちょいと解せないエラーです。
どうせHEXファイルの作成についても試してみるつもりでしたから/PICRDFを実行してHEXファイルを作成した後もとのファイルと比較してみることにしました。
下はそのログです。
冗長になりますから途中の部分を適当にカットしてあります。
>/picrdf
startcode=01
type=04,uadrs=00
[01]
0000[10][35][EF][01][F0][FF][FF][FF][FF][9A][EF][02][F0][FF][FF][FF][FF]
*0020[10][60][EF][01][F0][30][EF][00][F0][56][EF][00][F0][8B][EF][00][F0]
0030[10][9B][EF][00][F0][B1][EF][00][F0][86][EF][02][F0][A6][EF][00][F0]
0040[10][ED][EF][00][F0][22][EF][01][F0][2B][EF][01][F0][7A][EF][00][F0]
0050[10][8A][EF][00][F0][65][EF][02][F0][65][EF][02][F0][4B][EF][00][F0]
0060[10][1B][B0][30][EF][00][F0][16][6A][FF][CF][17][F0][FE][CF][18][F0]
0070[10][FD][CF][19][F0][FF][6A][FE][6A][20][0E][FD][6E][04][0E][85][EC]
0080[10][01][F0][19][50][85][EC][01][F0][18][50][85][EC][01][F0][17][50]
0090[10][85][EC][01][F0][12][00][FD][CF][19][F0][FE][CF][18][F0][1C][50]

0540[10][A5][EF][02][F0][15][6E][C8][EF][02][F0][E9][CF][0B][F0][EA][CF]
0550[10][0A][F0][0E][50][E9][6E][AE][50][EF][6E][0E][2A][0C][2A][16][A0]
0560[10][C4][EF][02][F0][02][0E][0C][62][C4][EF][02][F0][39][0E][EF][62]
0570[10][C4][EF][02][F0][FF][CF][17][F0][FE][CF][18][F0][FD][CF][19][F0]
0580[10][FF][6A][FE][6A][20][0E][FD][6E][0B][C0][E9][FF][0A][C0][EA][FF]
0590[10][08][50][09][C0][D8][FF][10][00][FF][FF][FF][FF][FF][FF][FF][FF]
************************************************************************
************************************************************************
************************************************************************
************************************************************************
************************************************************************
**************************************************************..........
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
........................................................................
..............[01]
type=04,uadrs=30
[01]
0000[10][00][32][3F][06][00][88][01][00][03][C0][03][E0][03][40][00][00]
...............[01]
>/exit

リモート接続を終了しました
logfile closed at Sat Dec 14 17:53:47 2024

あれ?
アドレス2000が表示されていません?
アドレス0590の行が最後であとは[*]と[.]が表示されたあと最後にCONFIGが表示されて終っています。
どうなっているのかもとのファイルと作成されたHEXファイルとを比較してみました。

冗長になりますから途中の部分を適当にカットしてあります。
プログラムの表示はアドレス1FF0の行で終っています。

あ。
やっと気が付きました。
そういうことだったのでした。
実はもとのプログラムファイルPICIOBS2X.HEXはPIC18F14K50用のプログラムです。
それをPIC18F13K50にそのまま書き込んだことがエラーの原因でした。
PICIOBS2X.HEXではアドレス2000〜にも少しだけですがプログラムがあります。
ところがPIC18F13K50のプログラムメモリはアドレス1FFFまでしか実装されていないのでアドレス2000を読み出すと00が返ってきたのでした。


[出典]Microchip Technology Inc.PIC18F13K50/14K50 DataSheet

納得です。
今夜も嶺で乾杯です。

PICBASICコンパイラ[第179回]
2024.12.14 upload

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