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


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第221回]



●PIC16F627(16)念のため動作テスト

PIC16F627のBULK ERASEができなかったことで何日も悩んでいたのですけれど。
どうやらプログラムのバグのせいらしいというなんともお恥ずかしい結末になりました。
多分それで問題は解決ということになりそうですがそこはやっぱりテストをして確認をしてみなければなりません。
前回書きましたようにPIC16F627WRITERプログラムを修正しました。
今回はそのテストの記録です。

まずはPIC16F627に対して/PICRDFを実行して消去済みを確認しました。
logfile piciolog\0204121810.txt open
*** pic i/o ***
picio-30 connected
>/picrdf
startcode=01
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]

07C0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07D0[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]
0800[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
>

全部3FFFです。
消去済みであることが確認できました。
冗長になるので途中は省略してあります。

テストプログラムを書きます。
/HLOADでテストプログラム16F627.HEXをロードして/PICWRを実行しました。
>/hload 16f627test.hex
loading 16f627test.hex ...
i=175,binbfend=72
>/picwr
startcode=01
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]
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]
[01]
i=22,b=6,[00]000a
[05][00][06][00][0A][07][30][9F][00][83][16][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[01]
i=42,b=16,[00]0010
[05][00][10][00][10][85][01][86][01][83][12][21][08][85][00][12][20][A2][0B][0D][28]
[01]
i=62,b=16,[00]0020
[05][00][10][00][20][A1][03][0B][28][FA][30][A0][00][86][06][A0][0B][14][28][08][00]
[01]
i=68,b=2,[00]400e
[05][00][02][40][0E][F9][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[03]
picwrend
>


念のため/VERIFYを実行しました。
>/verify
inbfend=0
startcode=01
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)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
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)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
i=22,b=6,[00]000a
[06][00][06][00][0A][07][30][9F][00][83][16][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(06)(07)(30)(9F)(00)(83)(16)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o][o][o][o][o]
i=42,b=16,[00]0010
[06][00][10][00][10][85][01][86][01][83][12][21][08][85][00][12][20][A2][0B][0D][28]
(10)(85)(01)(86)(01)(83)(12)(21)(08)(85)(00)(12)(20)(A2)(0B)(0D)(28)
[o][o][o][o][o][o][o][o][o][o][o][o][o][o][o][o]
i=62,b=16,[00]0020
[06][00][10][00][20][A1][03][0B][28][FA][30][A0][00][86][06][A0][0B][14][28][08][00]
(10)(A1)(03)(0B)(28)(FA)(30)(A0)(00)(86)(06)(A0)(0B)(14)(28)(08)(00)
[o][o][o][o][o][o][o][o][o][o][o][o][o][o][o][o]
i=68,b=2,[00]400e
[06][00][02][40][0E][F9][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(F9)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
vfend
error=0
>

正しく書き込みできました。

さらに念のために/PICRDFで読み込んでちゃんと書けていることを確認し、同時に16F627TEST250204.HEXファイルを作成しました。
>/picrdf 16f627test250204.hex
startcode=01
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][07][30][9F][00][83][16]
0010[10][85][01][86][01][83][12][21][08][85][00][12][20][A2][0B][0D][28]
0020[10][A1][03][0B][28][FA][30][A0][00][86][06][A0][0B][14][28][08][00]
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]

07C0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07D0[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]
0800[10][F9][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
>

ここまではOKです。
次はいよいよBULK ERASEのテストです。

/ERASEを実行しました。
そのあと/PICRDFで読み込んで消去されていることを確認し、同時に16F627ER250204.HEXファイルを作成しました。
>/erase
endcode=01
>/picrdf 16f627er250204.hex
startcode=01
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]

07C0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07D0[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]
0800[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
>

全部消去できたようです。

もっともここまでは今までの「但し書き付き」のプログラムでもできていました。
問題はコピープロテクトをかけたPIC16F627を消去できるかどうかです。
それをテストするためにコピープロテクトをかけたPICプログラム16F627TEST2.ASMを用意しました。
下はソースプログラムです。
;;;pic p16f627 test2(cp)
;25/1/7 1/8 1/27
;
        #include <p16f627.inc>
        __CONFIG _CP_ALL & _WDT_OFF & _INTRC_OSC_CLKOUT
;
;int CLOCK 4MHz
;
w=0
f=1
c=0
z=2
;
cntr0=20
testcntr=21
testcntr2=22
;
        org 0
        goto start
;
        org 5
start
        movlw 7;a0-a3 is digital
        movwf CMCON
    bsf STATUS,5 ;bank 1
    clrf TRISA
    clrf TRISB
    bcf STATUS,5 ;bank0
;
testloop
        movf testcntr,w
        movwf PORTA
testloop2
        call t1ms
        decfsz testcntr2
        goto testloop2
        decf testcntr
        goto testloop   
;
;1msec timer
t1ms
        movlw 0fa;=250  
        movwf cntr0
t1ms2;4micros
        xorwf PORTB;1
        decfsz cntr0;1
        goto t1ms2;2
        return
;
        end
;

__CONFIGのところに_CP_ALLを追加しました。

HEXファイル16F627TEST2.HEXをロードして/PICWRを実行しました。
>/hload 16f627test2.hex
loading 16f627test2.hex ...
i=175,binbfend=72
>/picwr
startcode=01
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]
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]
[01]
i=22,b=6,[00]000a
[05][00][06][00][0A][07][30][9F][00][83][16][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[01]
i=42,b=16,[00]0010
[05][00][10][00][10][85][01][86][01][83][12][21][08][85][00][12][20][A2][0B][0D][28]
[01]
i=62,b=16,[00]0020
[05][00][10][00][20][A1][03][0B][28][FA][30][A0][00][86][06][A0][0B][14][28][08][00]
[01]
i=68,b=2,[00]400e
[05][00][02][40][0E][F9][03][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[03]
picwrend
>


コピープロテクトをかけたので書き込みをおこなった後は読み出してベリファイをすることはできません。
念のために/PICRDFを実行して読み出し確認をすると同時に、16F627TEST2_250204.HEXファイルを作成しました。
>/picrdf 16f627test2_250204.hex
startcode=01
type=04,uadrs=00
[08]
0000[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
0010[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
0020[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
0030[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
0040[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
0050[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]

07C0[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
07D0[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
07E0[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
07F0[10][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
[01]
type=04,uadrs=01
[08]
0800[10][F9][03][00][00][00][00][00][00][00][00][00][00][00][00][00][00]
[01]
>

コピープロテクトがかかっているので中身は読み出せません。
読み出したデータはすべて00です。
CONFIGは読み出せていますね。
ま。
CONFIGぐらいはよいでしょう。

念のため。
読み出して作成した16F627TEST2_250204.HEXの中身です。
>:020000040000FA
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000000000000000000000000000B0
:1000500000000000000000000000000000000000A0

:1007C0000000000000000000000000000000000029
:1007D0000000000000000000000000000000000019
:1007E0000000000000000000000000000000000009
:1007F00000000000000000000000000000000000F9
:02400E00F903B4
:00000001FF


やっぱりプログラムは全く読み出せていません。
そこまで確認したのでこれをもう一度消去してみます。
コピープロテクトが解除されて同時に全消去できればBULK ERASEできたことが確認できます。

/ERASEを実行しました。
そのあと/PICRDFで読み込んで消去されていることを確認し、同時に16F627ER2_250204.HEXファイルを作成しました。
>/erase
endcode=01
>/picrdf 16f627er2_250204.hex
startcode=01
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]

07C0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07D0[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]
0800[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
>/exit

リモート接続を終了しました
logfile closed at Tue Feb 04 12:25:53 2025

さきほどはコピープロテクトがかかっていたので読み出しても中身は全部00だったのですが、コピープロテクトが解除されて同時に中身が全消去されたので3FFFが読み出されました。
正しくBULK ERASEできたことが確認できました。

実はログの日付にありますように今回ここに書きましたのは2週間前の作業です。
もう少し早く書ければよかったのですが、ほかにいろいろやらねばならぬことがいっぱいあったのでこういうことになってしまいました。
ちょいとお恥ずかしい備忘録でありました。

PICBASICコンパイラ[第221回]
2025.2.19 upload

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