2025.6.18
前へ

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


超ローコストPICWRITERの製作

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

[第306回]



●PIC16F1509

PIC16F1509は20pinのPICです。


[出典]Microchip Technology Inc. PIC16F1509 Data Sheet

前回のPIC16F1705と同様に盛り沢山の機能です。
pin数が20pinもありますからI/Oポート数も通常の用途としては十分でしょう。


[出典]Microchip Technology Inc. PIC16F1509 Data Sheet

同じファミリーのPICとしてPIC12F1501、16F1503、16F1507、16F1508があります。


[出典]Microchip Technology Inc. PIC16F1509 Data Sheet

おや。
PIC16F1503が同じファミリーですね。
PIC16F1503は[第237回]で扱いました。
PIC16F1503はTYPE=3です。
ひょっとするとPIC16F1503用のテストプログラムを書き込んでそれで動作テストをしたらうまく動作してくれるかもしれません。
それなら手間が省けて助かります。
まずはPIC16F1509のDEVICE IDを確認しておきます。


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

PIC16F1509のDevice IDは2D4X/2D5Xです。
それではテスト開始です。
最初に/PICIDCKを実行しました。
DEVICE IDは2D42です。
続いて/HLOADコマンドで16F1503TEST.HEXをロードして/PICWRを実行した後/VERIFYを実行しました。
logfile piciolog\0617214303.txt open
*** pic i/o ***
picio-30 connected
>/picidck
400C[42][2D]
>/pictype=3
pictype=33
[03][41][00][81]
>/hload 16f1503testb.hex
16f1503testb.hex cannot open
>/hload 16f1503testb.hex
loading 16f1503testb.hex ...
i=225,binbfend=92
>/picwr
400E[03][41][00][81]
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)(03)(41)(00)(81)(66)(D7)(2C)(84)(FF)(03)(60)(10)(84)(00)(08)(E4)
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)(60)(10)(84)(00)(08)(E4)

i=82,b=2,[04]0000
[05][04][02][00][00][00][01][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(03)(01)(00)(0A)(00)(30)(00)(00)(00)(3A)(03)(60)(10)(84)(00)(08)(E4)
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)(60)(10)(84)(00)(08)(E4)
picwr end

>/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)(60)(10)(84)(00)(08)(E4)
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)(60)(10)(84)(00)(08)(E4)
[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)(32)(33)(5E)(1A)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
vfend
error=0
>/picrdf 16f1509t250617.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]

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

ベリファイの結果error=0が表示されました。
書き込みOKです。
最後に/PICRDFで読み出したデータ(プログラム)をHEXファイルで保存しました。

今度は動作テストです。
今回はPIC16F1509にPIC16F1503用のプログラムをWRITEしました。
PIC16F1503とPIC16F1509は同じファミリーPICなので多分同じプログラムでも動いてくれるとは思いますが。
単三乾電池2本、+3Vでの動作テストです。

LED表示がちょっと薄いのはLEDボードの抵抗値が大きい(10KΩ)こととVdd電圧が+3Vと低いからで写真でははっきり見えませんがちゃんとカウント表示されています。

PIC16F1509のところを大きく写しました。

PIC16F1509と読めます。

下はRC0の出力波形です。

今までのテストと同様約16msごとにH、Lを繰り返し出力しています。

最後に/ERASEのテストを行ないました。
最初に/PICIDCKでIDを確認してから/PICRDFでプログラムが書き込み済みであることを確認しました。
logfile piciolog\0618181745.txt open
*** pic i/o ***
picio-30 connected
>/picidck
400C[42][2D]
>/pictype=3
pictype=33
[03][41][00][01]
>/picrdf
400E[03][41][00][01]
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]

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]
>/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]
0050[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]
>/exit

その後/ERASEを実行してから確認のため/PICRDFを実行しました。
全部消去されたことが確認できました。

今回もこの回だけですけれど。
これにて一件落着です。

超ローコストPICWRITERの製作[第306回]
2025.6.18 upload

前へ

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