超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第290回]
●PIC16F54(8)リバースエンジニアリング(4)
やっと。
PIC16F54のためのWRITERプログラムが出来ました。
なまじ原始的なPICゆえになかなかに面倒なプログラム作業で結構手間がかかりました。
一時は投げてしまいそうになったのですけれど。
やっぱり諦めてしまってはいけません。
初志貫徹であります。
でありますけれど。
本当にPICというのはどうしてこうもクセつよなのでありましょうか。
ま。
ぼやくのはほどほどにいたしまして。
PIC16F54WRITERプログラムについて理解できましたので、まずは書きかけ途中の秋月PICプログラマの解析について早々に片付けてしまいたいと思います。
前回はUSER IDを含めて全消去するためにVppアクティブの後[inc]コマンドを201H回発行してから[erase]コマンドを発行したところまで解析しました。
PIC16F54はVppをアクティブにするとプログラムカウンタが3FFにセットされます。
アドレス3FFはConfigのアドレスです。
その位置で[inc]コマンドを一回実行するとプログラムカウンタは000になります。
ユーザープログラム領域のトップアドレスです。
そこから続いて[inc]コマンドを200H回実行するとアドレスは200になります。
User IDの先頭アドレスです。
そこで[erase]コマンドを実行すると全消去されます。
前回はそこまで説明をしました。
今回はその続きです。
[erase]のあと[inc]を1回実行しています。
User IDアドレス(200)で[inc]を実行するとアドレスは201になるはずです。
しかし上の画像の2行目を見るとどうもアドレスは000になっているようです。
おそらくアドレス200での[erase]の後、ここで一度VppをOFFにしてから再度VppをONにしているのではないかと思います。
下はPIC16F54にプログラムをWRITEしているときの秋月PICプログラマのVpp出力波形です。
上側(CH1)がVppです。
H電圧は13.5Vです。
100ms〜200msぐらいのH出力が数回出ています。
このH出力のタイミングと上のコマンド解析との同期を取ろうとしたのですがなかなか困難でそれはできませんでした。
しかしこの波形からPIC16F54のプログラムカウンタをクリアするためにVppのON/OFFを行なっているらしいことは容易に推測できます。
多分そういうことに間違いはないと思います。
それでひとつ上の先ほどの画像を見ると[inc]no.202の後に[load][00][0c][begin][end]というようにコマンドが続いています。
[load]コマンドでデータ[00][0c]をWRITEバッファにセットして[begin][end]でそのときのプログラムカウンタの示すメモリアドレスに2バイト(1ワード)を書き込む手続きです。
下は書き込み元のHEXファイルです。
アドレス0000のデータは000Cです。
その次のアドレスのデータは0500です。
さきほどの解析データを見ると[inc][load[xx][xx][begin][end]を繰り返してデータを書き込んでいることが読み取れます。
最後のデータは0008です。
解析データの下から2行目で実行されています。
本日はここまでです。
次回に続きます。
超ローコストPICWRITERの製作[第290回]
2025.5.29 upload
前へ
次へ
ホームページトップへ戻る