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


超ローコストPICWRITERの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第256回]



●PIC16F1503のテスト

今回はPIC16F1503のテストです。
PIC16F1503は[第237回][第242回]で説明をしました。
そこではPIC16F1503用のWRITERプログラムを作ってテストをしたのですが今回は前回までの合体版のWRITERプログラムにPIC16F1503用のWRITERプログラムも合体させましたのでそのテストです。

下はPIC16F1503のテストを行なったときのログです。
最初に/PICIDCKでDEVICE IDを読み出しました。
DEVICE IDについては[第250回]で説明をしました。
続いて/PICRDFを実行しました。
logfile piciolog\0410105729.txt open
*** pic i/o ***
picio-30 connected
>/picidck
400C[E2][2C]
>/picrdf
400E[E2][2C][E4][3F]
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][21][00][68][30][99][00]
0010[10][8E][01][23][00][8E][01][20][00][14][20][14][20][14][20][14][20]
0020[10][21][08][8E][00][A1][0A][0C][28][19][20][19][20][19][20][19][20]
0030[10][08][00][00][00][A0][0B][19][28][08][00][FF][3F][FF][3F][FF][3F]
0040[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]
400E[E4][3F][FF][3F]
[10]
>

以前に行なったテストのときに書き込んだプログラムが読み出されました。
/PICRDはOKです。

続いて/ERASEを実行したあともう一度/PICRDFコマンドを入力しました。
>/erase
400E[E4][3F][FF][3F]
>/picrdf
400E[E4][3F][FF][3F]
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]


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]
400E[FF][3F][FF][3F]
[10]
>

全て消去されたことが確認できました。

/HLOADを実行してテスト用のHEXファイルをロードしたあと/PICWRを実行し続いて/VERIFYを実行しました。
>/hload 16f1503test.hex
loading 16f1503test.hex ...
i=225,binbfend=92
>/picwr
400E[FF][3F][FF][3F]
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)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
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]
(10)(01)(00)(02)(00)(00)(00)(00)(00)(02)(03)(FF)(3F)(FF)(3F)(FF)(3F)


i=88,b=2,[00]000e
[05][00][02][00][0E][E4][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(03)(00)(02)(00)(0E)(01)(01)(00)(3A)(03)(FF)(3F)(FF)(3F)(FF)(3F)
picwrend

>/verify
inbfend=0
400E[03][00][02][00]
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)(03)(00)(02)(00)(0E)(01)(01)(00)(3A)(03)(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)(02)(00)(0E)(01)(01)(00)(3A)(03)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]


i=88,b=2,[00]000e
[06][00][02][00][0E][E4][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(E4)(3F)(FF)(3F)(43)(33)(9D)(19)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
vfend
error=0
>

ベリファイでerror=0になりました。

念のため/PICRDFを実行しました。
>/picrdf 16f1503test250410.hex
400E[E4][3F][FF][3F]
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][21][00][68][30][99][00]
0010[10][8E][01][23][00][8E][01][20][00][14][20][14][20][14][20][14][20]
0020[10][21][08][8E][00][A1][0A][0C][28][19][20][19][20][19][20][19][20]
0030[10][08][00][00][00][A0][0B][19][28][08][00][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]


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]
400E[E4][3F][FF][3F]
[10]
>


実は今回のPIC16F1503を追加するプログラム作業の過程で/PICWRと/PICRDの結果を確認する必要があって、秋月のPICプログラマを使ってPIC16F1503にテストプログラムを書き込んだあとそれを読み出して作成したHEXファイルと上で作成したHEXファイルをWinMergeで比較しました。
下がその画像です。

左側が今回のテストで作成したHEXファイルで右側が秋月のPICプログラマで作成したHEXファイルです。
メモリの未実装エリアを表示する範囲が異なっているためにその部分が左右で不一致となっていますが本来のデータ不一致ではありません。
左側のCONFIGデータ04400E…は右側では下から4行目の04000E…に対応しています。
アドレスの表記が左側では400Eになっていますがそこは右側では000Eになっています。
これも表記上の違いで不一致ではありません(HEXファイルとしてはここは右側に合わせるべきかもしれません。そのうち検討します)。
CONFIGの値はその後ろの00の次からのE43FFF3Fでここは左右が一致しています。

以上でPIC16F1503のテストは完了です。

超ローコストPICWRITERの製作[第256回]
2025.4.10 upload

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