超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第244回]
●PIC16F88(2)CHIP ERASE
PIC16F88は今年の1月にWRITERプログラムを作成してテストもしていました。
そのときにテストに使ったPIC16F88がそのまま残っていましたのでまずはそれをPIC16F84AWRITERプログラムで読み出してみました。
logfile piciolog\0328081552.txt open *** pic i/o *** picio-30 connected >/picrd 16f88test1c250328.hex 400C[68][07][F8][3F] type=04,uadrs=00 [08] 0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][83][16][12][28][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][6C][30][1A][28][FF][3F][FF][3F][FF][3F][FF][3F] 0030[10][FF][3F][FF][3F][8F][00][00][30][86][00][85][00][9B][00][03][10] 0040[10][86][01][06][08][01][3A][86][00][21][28][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[F8][3F] [10] > |
/PICRDはうまく機能したようです。
次に/ERASEをテストしてみました。
>/erase 400C[68][07][F8][3F] >/picrd 400C[68][07][FF][3F] type=04,uadrs=00 [08] 0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][83][16][12][28][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][6C][30][1A][28][FF][3F][FF][3F][FF][3F][FF][3F] 0030[10][FF][3F][FF][3F][8F][00][00][30][86][00][85][00][9B][00][03][10] 0040[10][86][01][06][08][01][3A][86][00][21][28][FF][3F][FF][3F][FF][3F] |
これは駄目でした。
/ERASEのあと/PICRDを実行して読み出してみましたが全く消えていません。
これまで試したPIC16F84やPIC16F627とは消去プログラムがかなり違っています。
PIC16F88の場合にもERASEコマンドはありますが、コピープロテクトも含めて消去するにはCHIP ERASEコマンドを使うことになります。
今まで作って試してきたPIC WRITERプログラムの消去プログラムはかなり面倒なプログラムでしたがPIC16F88の場合はCHIP ERASEコマンドを使うだけのシンプルなもののようです。
そこでPIC16F84AWRITERプログラムのうち/ERASEのところだけをCHIP ERASEコマンドに置き換えてそれをPIC16F88用のWRITERプログラムとしました。
そのプログラムをPIC18F13K50に書いてもう一度さきほどのPIC16F88に対して消去テストを行ないました。
logfile piciolog\0328173638.txt open *** pic i/o *** picio-30 connected >/erase 400C[68][07][FF][3F] >/picrd 400C[68][07][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] [10] > |
今度はうまく消去できました。
/PICRDと/ERASEのテストができましたので次は/PICWRのテストです。
下はPIC16F88のテストプログラムです。
;;;PIC 16F88 testprogram ;09/12/31 ;25/1/17 ;clock=4MHz #include <p16f88.inc> ; ;Program Configuration Register 1 __CONFIG _CONFIG1,_WDT_OFF & _INTRC_IO ; org 00 goto start ; org 05 start bsf STATUS,5 ;bank 1 goto jp1 ; org 12 jp1 movlw 6c;=4MHz goto jp2 ; org 1a jp2 movwf OSCCON movlw 0;port=out movwf TRISB movwf TRISA movwf ANSEL;porta=digital bcf STATUS,0;bank 0 clrf PORTB loop movf PORTB,w xorlw 01 movwf PORTB goto loop ; end ; |
[2025.3.30注記]このプログラムにバグがみつかりました([第246回]参照)
これはPICアセンブラのソースプログラムです。
これをMPLABでアセンブルしてHEXファイル16F88TEST1C.ASMを作成しました。
それを/HLOADコマンドで読み込んで/PICWRを実行しました。
実行後に/VERIFYを実行したのですが…。
>/hload 16f88test1c.hex loading 16f88test1c.hex ... i=172,binbfend=68 >/picwr 400C[68][07][FF][3F] *******picwrend >/verify inbfend=0 400C[68][07][FF][3F] (01)(68)(07)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) (02)(05)(28)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) (04)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) error! (04)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) error! (0C)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) error! (0A)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) error! (10)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F) error! vfend error=31 > |
全く書き込みできませんでした。
/PICWRもプログラムを直さなければならないようです。
超ローコストPICWRITERの製作[第244回]
2025.3.28 upload
前へ
次へ
ホームページトップへ戻る