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


超ローコストPICWRITERの製作

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

[第302回]



●PIC16F1825

PIC16F1825は14pinのPICです。


[出典]Microchip Technology Inc. PIC16F1825/9 Data Sheet

前回まで作業してきたPIC1455も14pinです。
このところ14pinのPICを扱ってきました。
だからというわけでもないのですがサンプルとして入手したままでまださわっていないPICの中に14pinのものが残っています。
pin数が同じならば扱いにも似たところがあるだろうということで今回はPIC16F1825をさわってみることにしました。
私としてはなじみがないPICは大体において比較的新しいタイプのものになります。
ということはひょっとしてMPLABで扱えないとか秋月のPIC KITUプログラマでは認識しないというタイプであったりするのではないかと懸念されます。
だんだんと悩ましい状況になってくるようです。
それで。
いつものようにPIC16F1825のFLASH MEMORY PROGRAMMING SPECIFICATIONというのをダウンロードしようとしたのですがみつかりません。
実は後になってからみつかったのですがこの時点ではみつかりませんでした。
なかなかに悩ましいことです。
しかし今年の初めにさわったPIC16F1827が2番違いで品番がよく似ていますからそのころの記事を再読してみましたらなんだかかなり苦戦していたようです。
まあ最終的にはなんとかなったようですが。
あれ?
PIC16F1827は18pinですね。
同じ仲間でしょうか?
こんなドキュメントをみつけました。


[出典]Microchip Technology Inc. PIC16F1824/1828 Data Sheet

PIC16F1825と1827は同じグループのようです。
そういうことなら多分同じWRITERプログラムでいけるのでは。
駄目もとでやってみることにしました。
PIC16F1827と同じならPICTYPEは3です。
まずはデバイスIDを読んでみました。
logfile piciolog\0613145200.txt open
*** pic i/o ***
picio-30 connected
>/pictype=3
pictype=33
[03][41][08][81]
>/picidck
400C[64][27]
>

読み出したデバイスIDは2764です。


[出典]Microchip Technology Inc. PIC16F1825/9 Data Sheet

PIC16F1825のデバイスIDは276X/277Xです。
うん。
正しく読み出せましたね。
よい調子です。
本来ならばPIC16F1825用のテストプログラムを用意するところなのですが、今はちょっとそれだけの時間がありませんのでとりあえずは以前にPIC16F1827のために作ったHEXファイルをロードしてそれを書き込んでみます。
pin数が違いますし多分機能も違うと思いますからちょっと乱暴ですがまずはうまく書けるかどうかのテストです。
>/hload 16f1827test.hex
loading 16f1827test.hex ...
i=174,binbfend=74
>/picwr
400E[64][27][E4][09]
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)(64)(27)(E4)(09)(FF)(3F)(2C)(84)(FF)(03)(60)(10)(84)(02)(08)(E4)
i=12,b=2,[00]0000
[05][00][02][00][00][18][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)(60)(10)(84)(02)(08)(E4)
i=32,b=16,[00]0030
[05][00][10][00][30][3C][08][8D][00][1F][20][BD][0B][1A][28][BC][03][18][28][0A][30]
(10)(01)(00)(10)(00)(30)(00)(00)(00)(40)(03)(60)(10)(84)(02)(08)(E4)
i=52,b=16,[00]0040
[05][00][10][00][40][8D][00][25][20][8D][0B][21][28][08][00][F0][30][8C][00][00][00]
(10)(01)(00)(10)(00)(40)(00)(00)(00)(50)(03)(60)(10)(84)(02)(08)(E4)
i=70,b=14,[00]0050
[05][00][0E][00][50][00][00][8C][0B][27][28][08][00][24][30][8C][00][27][28][FF][FF]
(10)(01)(00)(0E)(00)(50)(00)(00)(00)(5E)(03)(60)(10)(84)(02)(08)(E4)
picwr end

>/verify
inbfend=0
400E[01][00][0E][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)(01)(00)(0E)(00)(50)(00)(00)(00)(5E)(03)(60)(10)(84)(02)(08)(E4)
i=12,b=2,[00]0000
[06][00][02][00][00][18][28][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(02)(00)(28)(0E)(00)(50)(00)(00)(00)(5E)(03)(60)(10)(84)(02)(08)(E4)
[x][o]error!
i=32,b=16,[00]0030
[06][00][10][00][30][3C][08][8D][00][1F][20][BD][0B][1A][28][BC][03][18][28][0A][30]
(10)(08)(00)(00)(00)(00)(00)(19)(08)(08)(00)(BC)(03)(18)(28)(0A)(30)
[x][x][x][o][x][x][x][x][x][x][o][o][o][o][o][o]error!
i=52,b=16,[00]0040
[06][00][10][00][40][8D][00][25][20][8D][0B][21][28][08][00][F0][30][8C][00][00][00]
(10)(8D)(00)(25)(20)(8D)(0B)(21)(28)(08)(00)(F0)(30)(8C)(00)(00)(00)
[o][o][o][o][o][o][o][o][o][o][o][o][o][o][o][o]
i=70,b=14,[00]0050
[06][00][0E][00][50][00][00][8C][0B][27][28][08][00][24][30][8C][00][27][28][FF][FF]
(0E)(00)(00)(8C)(0B)(27)(28)(08)(00)(24)(30)(8C)(00)(27)(28)(00)(00)
[o][o][o][o][o][o][o][o][o][o][o][o][o][o]
vfend
error=10
>

おや。
ベリファイでエラーが出てしまいました。
でも全く駄目ということでもなさそうです。
ひょっとするとI/O機能の違いとかレジスタアドレスの違いなどがあってそれがエラーに関係しているのかもしれません。
そのあたりは後で確かめてみることにして、とりあえずは書き込んだデータ(プログラム)を読み出してHEXファイルとしてセーブして今回は終ることにします。
>/picrdf 16f1825t.hex
400E[00][00][8C][0B]
type=04,uadrs=00
[08]
0000[10][00][28][FF][3F][FF][3F][FF][3F][FF][3F][21][00][34][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][00][00][19][08][08][00][BC][03][18][28][0A][30]
0040[10][8D][00][25][20][8D][0B][21][28][08][00][F0][30][8C][00][00][00]
0050[10][00][00][8C][0B][27][28][08][00][24][30][8C][00][27][28][FF][3F]
0060[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0070[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][09][FF][3F]
[10]
>/exit


超ローコストPICWRITERの製作[第302回]
2025.6.14 upload

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