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


超ローコストPICWRITERの製作

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

[第267回]



●PIC16F887

PIC16F887は40pinのPICです。
PIC16F883と同じ仲間のPICです。
PIN数が多いので当然I/Oポートも多いのですが、そのこととメモリサイズが大きいことを別にすればソフト的にはPIC16F883と同じです。

[出典]Microchip Technology Inc. PIC16F882/883/884/886/887 Data Sheet


[出典]Microchip Technology Inc. PIC16F882/883/884/886/887 Data Sheet

たまたま手元にPIC16F887がありましたので今回はPIC16F887のテストを行ないました。
下はPIC16F887のテストを行なったときのログです。
最初に/PICIDCKでDEVICE IDを読み出しました。
logfile piciolog\0422170832.txt open
*** pic i/o ***
picio-30 connected
>/picidck
400C[82][20]
>

DEVICE IDとして2082が読み出されました。
PIC16F887のDEVICE IDは208X/9Xです。


[出典]Microchip Technology Inc. PIC16F88X Memory Programming Specification

PIC16F887はPIC16F883と同じ扱いのPICなのでPIC16F883と同じように/PICTYPEコマンドでTYPE=3を指定しました。
>/pictype=3
pictype=33
[03][41][00][01]
>

続いて/PICRDFを実行しました。
>/picrdf
400E[03][41][00][01]
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][00][2B][60][30][83][00][88][01]
0010[10][89][01][03][13][64][30][8F][00][85][01][86][01][87][01][88][01]
0020[10][89][01][83][12][89][01][04][30][8A][00][83][16][0C][14][83][12]
0030[10][8F][01][8E][01][01][30][90][00][C0][30][8B][00][A0][01][A6][01]
0040[10][0A][30][A3][00][09][15][20][08][00][24][A4][00][20][08][0B][24]
0050[10][A5][00][3E][20][09][11][3E][20][26][18][34][28][A0][0A][A3][0B]
0060[10][22][28][A6][0A][A0][03][20][28][A0][03][A3][0B][22][28][1E][28]
0070[10][FA][30][A1][00][64][00][A1][0B][3A][28][08][00][19][30][A2][00]
0080[10][38][20][A2][0B][40][28][08][00][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[ED][2F][FF][38]
[10]
>

/PICRDFでは以前に書き込まれていたプログラムが読み出されました。

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


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]
>

/ERASE、/PICRDともにOKです。

/HLOADを実行してテスト用のHEXファイルをロードしました。
ロードしたファイルは前回PIC16F883に書き込んでテストしたのと同じpic16f883test3b.hexです。
そのあと/PICWRを実行し続いて/VERIFYを実行しました。
>/hload pic16f883test3b.hex
loading pic16f883test3b.hex ...
i=229,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)(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=84,b=2,[00]400e
[05][00][02][40][0E][F7][2F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(03)(00)(02)(40)(0E)(00)(00)(00)(3C)(03)(FF)(3F)(FF)(3F)(FF)(3F)
i=90,b=2,[00]4010
[05][00][02][40][10][FF][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(03)(00)(02)(40)(10)(00)(00)(00)(3C)(03)(FF)(3F)(FF)(3F)(FF)(3F)
picwrend

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

i=84,b=2,[00]400e
[06][00][02][40][0E][F7][2F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(F7)(2F)(FF)(3F)(B8)(22)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
i=90,b=2,[00]4010
[06][00][02][40][10][FF][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(FF)(3F)(B8)(22)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
vfend
error=0
>

ベリファイもOKです。
error=0と表示されました。

念のため/PICRDFを実行しました。
>/picrdf 16f883test3b250422.hex
400E[FF][3F][B8][22]
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][60][30][83][00][88][01]
0010[10][89][01][03][13][65][30][8F][00][86][01][87][01][83][12][21][08]
0020[10][86][00][18][20][A1][0F][0F][28][A2][0A][22][08][87][00][0F][28]
0030[10][FA][30][A0][00][00][00][A0][0B][1A][28][08][00][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[F7][2F][FF][3F]
[10]
>/exit


超ローコストPICWRITERの製作[第267回]
2025.4.22 upload

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