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


超ローコストPICWRITERの製作

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

[第251回]



●PIC16F88とPIC16F627のテスト

前回のDEVICE IDのREADテストはPIC16F88用のWRITERプログラムをもとにして作成したWRITERプログラムを使いました。
いままでに作成したWRITERプログラムはPIC16F88用WRITERプログラムのほかにPIC16F84A用WRITERプログラム(これはPIC16F627、PIC16F84用でもあります)、PIC16F628A用WRITERプログラム、PIC16F1503用WRITERプログラムがあります。
PIC16F88用のWRITERプログラムをもとにしてDEVICE IDをREADできるようにしましたからそこにほかのPIC用のWRITERプログラムを合体させるように考えました。
実際にその作業に着手してみると結構手間がかかることがわかりました。
ほかにもやらなければならないこともあってこれだけにかかっていたわけではありませんがとにかく2日間をかけてやっとPIC16F84A用WRITERを合体させることができました。
今回はやっとできたプログラムを使ってPIC16F88とPIC16F627のテストを行ないました。
まずはPIC16F88のテストです。
PIC16F88用のWRITERプログラムをもとに作成したプログラムですからPIC16F88に書き込み読み出しができて当たり前なのですがDEVICE IDを読み込んでPIC16F88だけではなくてそのほかのPICの場合の分岐も加えましたから、それでも正しく機能するかどうかは確認しておかなくてはなりません。
下はPIC16F88のテストを行なったときのログです。
PICに対するテストはもう何回もやっていますから途中の表示は省略してあります。
最初に/PICIDCKでDEVICE IDを読み出しました。
続いて/PICRDを実行しました。
logfile piciolog\0405090131.txt open
*** pic i/o ***
picio-30 connected
>/picidck
400C[68][07][71][3F][FC][3F]
>/picrd
400E[68][07][71][3F]
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][83][16][12][28][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][6C][30][1A][28][FF][3F][FF][3F][FF][3F][FF][3F]
0030[10][FF][3F][FF][3F][8F][00][00][30][9B][00][86][00][85][00][83][12]
0040[10][21][08][85][00][27][20][A2][0B][22][28][A1][03][20][28][FA][30]
0050[10][A0][00][86][06][A0][0B][29][28][08][00][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[71][3F][FC][3F]
[10]
>

前に書き込みテストを行なったときのプログラムが読み出されました。

続いて/ERASEを実行したあと/PICRDFを実行しました。
>/erase
400E[71][3F][FC][3F]
>/picrdf
400E[71][3F][FC][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 16f88test1g.hex
loading 16f88test1g.hex ...
i=234,binbfend=94
>/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]
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=90,b=2,[00]4010
[05][00][02][40][10][00][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[03]
picwrend

>/verify
inbfend=0
400E[FF][3F][FF][3F]
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=90,b=2,[00]4010
[06][00][02][40][10][00][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(FC)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[x][x]error!
vfend
error=2
>

ベリファイで最後のCONFIG2のところがエラーになることについては[第247回]で説明しました。

念のため/PICRDFを実行しました。
>/picrdf 16f88test1g250405.hex
400E[FC][3F][FF][3F]
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][83][16][12][28][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][6C][30][1A][28][FF][3F][FF][3F][FF][3F][FF][3F]
0030[10][FF][3F][FF][3F][8F][00][00][30][9B][00][86][00][85][00][83][12]
0040[10][21][08][85][00][27][20][A2][0B][22][28][A1][03][20][28][FA][30]
0050[10][A0][00][86][06][A0][0B][29][28][08][00][FF][3F][FF][3F][FF][3F]
0060[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[71][3F][FC][3F]
[10]
>

このあと続いてPIC16F627のテストを行なったのですがエラーになってしまいました。
エラーがなくなるところまでに上の方に書きましたように2日かかってしまいました。
最終的にエラーなく16F627に対してもテストすることができました。
そのことについても書くつもりだったのですが時間がなくなってしまいました。
続きは次回に書くことにします。

超ローコストPICWRITERの製作[第251回]
2025.4.5 upload

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