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


超ローコストPICWRITERの製作

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

[第236回]



●PIC16F628A(4)コピープロテクト消去

PIC16F628A用WRITERの最後のテストです。
コピープロテクトをかけたプログラムをPIC16F628Aに書いてそれが正しく消去できるかどうかをテストします。
ここでコピープロテクト「解除」ではなくて「消去」と書いたのには理由があります。
「解除」というとカギを開けて中のプログラムやデータが読めるようになるという誤解が生じてしまいます。
PICの場合コピープロテクトがかかったPICの中身を見る方法はありません。
コピープロテクトを外して普通の状態に戻すためにはバルクイレーズ(Bulk Erase、全消去)をするしかありません。
当然プログラムもデータも全部消えてしまいます。
だから安全なのです。
もっとも普通の個人ユーザーがコピープロテフクトをかけたりはしないでしょうけれど。

もしもコピープロテクトをかけていた場合バルクイレーズができないとなると、そのPICは再使用できません。
ということで。
/ERASEはコピープロテクトがかかったPICを消去できることが必須になります。
ということでコピープロテクトをかけたテストプログラムをロードしてそれを/PICWRでPIC16F628Aに書き込むことから最後のテストを開始しました。
コピープロテクトをかけたプログラムファイルは16F628ATEST2.HEXです。
ソースプログラムは[第234回]にあります。
/HLOADコマンドを実行してから/PICWRコマンドを実行しました。
そのあと/VERIFYを実行して、念のために/PICRDを実行しました。
冗長ですから一部を省略しています。
>/hload 16f628atest2.hex
loading 16f628atest2.hex ...
i=175,binbfend=72
>/picwr
400C[68][10][FF][3F]
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]

>/verify
inbfend=0
400C[68][10][F9][1F]
i=6,b=2,[04]0000

vfend
error=36
>/picrd
400C[68][10][F9][1F]
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]


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]
400E[F9][1F]
[10]
>

コピープロテクトがかかっていますからプログラムは読み出せません。
全部エラーになってしまいます。
/PICRDコマンドを実行すると読み出したデータは全部00です。
しかしやっぱりPIC16F627などのときと同様Configは読み出せています。
ま。これはこれでよろしいでしょう。
ここまでは準備作業です。

いよいよ今回の目的作業です。
/ERASEを実行しました。
そのあと/PICRDを実行しました。
>/erase
400C[68][10][F9][1F]
>/picrd
400C[68][10][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]


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]
400E[FF][3F]
[10]
>

プロテクトが解除されて同時にプログラムが全部消去されたことが確認できました。

これにて一件落着です。

超ローコストPICWRITERの製作[第236回]
2025.3.16 upload

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