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


超ローコストPICWRITERの製作

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

[第245回]



●PIC16F88(3)/PICWR

前回はPIC16F84AWRITERプログラムをベースにして/ERASEのところをCHIP ERASEコマンドに変更して作成したWRITERプログラムでテストしたところ/ERASEはうまくいったのですが続いて/PICWRを実行したところ全く書込みができませんでした。
ノートの記録では今年の初めに作成したPIC16F88用のWRITERプログラムでは/PICWRはうまくいったと書いています。
それでそのときのプログラムと今回作成したプログラムを比較してみたのですがWRITER部分は基本的に同じプログラムで特別違うところはありませんでした。
全体を通して比べてみても大きな違いはありません。
ただ最初のVppをONにするところのプログラムだけは大きく変わっています。
ここは[第225回]で秋月のPICプログラマを解析したところ最初にLoad Configを実行していることがわかったのでそれと同じようにプログラムを直して追加したところです。
この部分は納得して追加したのではなくてよくわからないけれどとりあえずはそのようにしておこうと考えて追加したものです。
この部分しかほかに気になるところはないようでしたのでとりあえずはこの部分を外したプログラムにして/PICWRのテストをしてみました。
そうしましたら。
logfile piciolog\0328183217.txt open
*** pic i/o ***
picio-30 connected
>/hload 16f88test1c.hex
loading 16f88test1c.hex ...
i=172,binbfend=68
>/picwr
400C[A9][50][36][91]
*******picwrend

>/verify
inbfend=0
400C[A9][50][36][91]
(01)(A9)(50)(36)(91)(46)(40)(E5)(0A)(56)(79)(91)(21)(16)(9D)(51)(80)
(02)(05)(28)(36)(91)(46)(40)(E5)(0A)(56)(79)(91)(21)(16)(9D)(51)(80)
(04)(83)(16)(12)(28)(46)(40)(E5)(0A)(56)(79)(91)(21)(16)(9D)(51)(80)
(04)(6C)(30)(1A)(28)(46)(40)(E5)(0A)(56)(79)(91)(21)(16)(9D)(51)(80)
(0C)(8F)(00)(00)(30)(86)(00)(85)(00)(9B)(00)(03)(10)(16)(9D)(51)(80)
(0A)(86)(01)(06)(08)(01)(3A)(86)(00)(21)(28)(03)(10)(16)(9D)(51)(80)
(10)(F8)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
vfend
error=0
>/picrdf 16f88test1c250328c.hex
400C[F8][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][86][00][85][00][9B][00][03][10]
0040[10][86][01][06][08][01][3A][86][00][21][28][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[F8][3F]
[10]
>/exit

/Vereifyでerror=0になりました。
それならということで/PICRDを実行してみたところ見た目ではうまく書き込みができたように思えます。
念のために秋月のPICプログラマで同じように書き込みを行なったあとその中身を読み出してHEXファイルにしたものと今回/PICRDで作成したHEXファイルを比較してみました。

作成したPIC WRITERも秋月のPICプログラマもプログラムメモリの実装エリアを越えて読み出しているのですが両者でその範囲が異なっているところがあるため比較できないところがずれて表示されているのですがそこを補正して比べてみるとCONFIGも含めて両者が一致していることがわかります。
これで/PICWRもOKになりました。

超ローコストPICWRITERの製作[第245回]
2025.3.29 upload

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