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


超ローコストPICWRITERの製作

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

[第304回]



●PIC16F1825(3)テストプログラム/動作テスト

前回はPICWRITERプログラムのテストの最後のところで作成したHEXファイルに一部落ちがみつかりました。
前は正しくできていたのですがプログラム変更などを重ねる過程でうっかり落としてしまったようです。
原因はわかりましたのでCppプログラムを修正しました。
確認のために前回と同じテストをしてもよかったのですが。
前回テストに使ったHEXプログラムはPIC16F1827用に作成したものでpin数が少ないPIC16F1825ではまともに実行できないプログラムでした。
どうせまたPICWRITERプログラムのテストをするのならこの機会にPIC16F1825用のテストプログラムを作ってしまえばその動作テストもできます。
そのように考えてPIC16F1825用のテストプログラムを作成しました。
同じ14pinのPIC16F1455用のテストプログラムをもとにして作成しました。
;;;PIC 16F1825  testprogram from 1455testb
;25.6.13 6.16
;
        __CONFIG _CONFIG1, _WDTE_OFF & _FOSC_INTOSC & _BOREN_OFF & _IESO_OFF & _FCMEN_OFF
        __CONFIG _CONFIG2, _PLLEN_OFF
;
        #include<p16f1825.inc>
;
cntr0=20
cntr1=21
;
     org 00
     goto start
;
     org 05
start
    banksel OSCCON;bank 1
        movlw 6f;=4MHz
        movwf OSCCON
    clrf TRISC
        banksel ANSELC;bank3
        clrf ANSELC
        banksel PORTC;bank0
;
t16ms:
        call t4ms
        call t4ms
        call t4ms
        call t4ms
        movf cntr1,w
        movwf PORTC
        incf cntr1
        goto t16ms
;
t4ms
        call t1ms
        call t1ms
        call t1ms
        call t1ms
        return
;
t1ms
        nop;1
        decfsz cntr0;1
        goto t1ms;2
        return   
;
    end
;

下はWRITERテストのログです。
毎回同じことを書いていますので始めから終わりまでを途中を省略した形でお見せします。
最初に/ERASEをしてそれから上で作ったHEXファイルをロード、それを/PICWRで書き込んだ後/VERIFYを実行し最後に/PICRDFでHEXファイルを作成しました。
logfile piciolog\0616110709.txt open
*** pic i/o ***
picio-30 connected
>/pictype=3
pictype=33
[03][61][08][81]
>/erase
400E[03][61][08][81]
>/hload 16f1825test.hex
loading 16f1825test.hex ...
i=242,binbfend=98
>/picwr
400E[03][61][08][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)(61)(08)(81)(26)(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=22,b=6,[00]000a
[05][00][06][00][0A][21][00][6F][30][99][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(01)(00)(06)(00)(0A)(00)(00)(00)(10)(03)(60)(10)(84)(00)(08)(E4)

i=88,b=2,[00]000e
[05][00][02][00][0E][E4][09][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)
i=94,b=2,[00]0010
[05][00][02][00][10][FF][3E][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(03)(00)(02)(00)(10)(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)(10)(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)(10)(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][09][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(E4)(09)(FF)(3E)(C0)(18)(67)(16)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
i=94,b=2,[00]0010
[06][00][02][00][10][FF][3E][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(FF)(3E)(C0)(18)(67)(16)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
vfend
error=0
>/picrdf 16f1825test250616.hex
400E[FF][3E][C0][18]
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][21][00][6F][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][09][FF][3E]
[10]
>/exit

上で/PICWR実行後に/PICRDFで読み出して作成したHEXファイルを下に示します。
:020000040000FA
:100000000528FF3FFF3FFF3FFF3F21006F30990072
:100010008E0123008E0120001420142014201420AF
:1000200021088E00A10A0C28192019201920192056
:1000300008000000A00B19280800FF3FFF3FFF3F0A
:10004000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC0
:10005000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB0

:1007E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F19
:1007F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F09
:020000040001F9
:04400E00E409FF3E86
:00000001FF

前回落ちていた
020000040001
も今回は作成されています。
その次のCONFIGのアドレスがMPLABで作成されたHEXファイルとは異なっていますがこれはPICWRITERプログラムの都合によるものです。
正規のPICWRITERに再読み込みするなどの場合にはここは補正が必要かもしれません。
ともかく。
PIC16F1825についてはこれで終わりです。

ではありませんでした。
PIC16F1455のときと同じように実際に動作テストをして写真を撮ったのでした。
単三乾電池2本、+3Vでの動作テストです。


PIC16F1825のところを拡大しました。


RC0の出力波形です。

約16msごとにH、Lを繰り返し出力しています。

これにて一件落着です。

超ローコストPICWRITERの製作[第304回]
2025.6.16 upload

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