超ローコスト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
前へ
次へ
ホームページトップへ戻る