超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第288回]
●PIC16F54(6)リバースエンジニアリング(2)
CPLDロジアナのプログラムを変形して作った秋月のPICWRITER解析ツールを使ってPIC16F54を書き込み中のパルスを読み取りそれを解読したところ[inc]コマンドのオンパレードになりました。
いったい何をやっておるんじゃあ?
なまじ精度のよい解析ツールを作ってしまったためになおさら混乱することになってしまいました。
いくら何でもこんなアホなやり方はないだろうという先入観が余計混迷に拍車をかけてしまいました。
昔の人はよいことを言いました。
読書百遍意おのずから通ず。
Documentは理解できるまで何回でも何回でも読むべきでありました。
思うにPIC16F54は初期の石でそういうまわりくどい方法をとらなければならなかったという視点を持つべきでありました。
そのあたりのことが理解できた今、迷いに迷ったことのあれこれをここに書いてみたってそれほど有益とは思われません。
何をどのように理解できたのかということについて書くべきでありましょう。
いささか専門的にすぎるかもしれませんがふつうPICの書き込みについて知る機会は稀だと思います。
おそらくネット上でもそれを解説するものは少ないかと。
皆様の好奇心を多少なりとも満足させられましたら幸いであります。
ということで。
今回はせっかく秋月のPICプログラマがPIC16F54の書き込みを行なっているところをリバースエンジニアリングしたというある意味貴重なデータが取れて、しかもそれを解析してみたところ極めて精度が高いデータであることがわかりましたのでMicrochipのDocumentを引用しつつ解析してみたいと思います。
前回のドキュメントでは[INC]命令を何回出力しているのかカウントしたつもりだったのですがちょっとほかに気になることなどがあってそこのところが欲しい数値になっていませんでしたのでC++プログラムを少し書き直しました。
最初の[inc]が001で始まって[inc]だけが201まで続いています。
201は十進ではなくて16進数です。
つまりこの数値はそのままアドレスを示す数になります。
PIC16F54はVppがアクティブになったときにアドレスカウンタに3FFをセットします。
3FFはCONFIGのアドレスです。
私は今までのPICの例から当然そこで[erase]コマンドが発行されるものと思ってしまいました。
しかしなんと秋月のPICプログラマさまはそこを素通りされてしまわれたご様子。
そこが理解できていなかったために愚かにも数日の貴重な時間を費やしてしまったのでありました。
[出典]Microchip Technology Inc. PIC16F5X Memory Programming Specification
アドレス3FFのときに[inc]コマンドを実行するとどうなるか。
PIC16F54のアドレスカウンタは000にクリアされます。
下の引用文は前回もお見せしました。
[出典]Microchip Technology Inc. PIC16F5X Memory Programming Specification
説明の途中ですが時間がなくなってしまいました。
次回に続きます。
超ローコストPICWRITERの製作[第288回]
2025.5.25 upload
前へ
次へ
ホームページトップへ戻る