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


PICBASICコンパイラ

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

[第218回]



●PIC16F627(13)logianaで解析(6)

今まで書いてきましたようになんとかして確認したいのはPICKITUがPIC16F627をBULK ERASEするときにどういうコマンドを出しているのかということです。
それを解析するためにPICKITUが出力するPGCとPGDのクロックの波形をロジアナでキャッチしてその波形を読み解くことを考えました。
PICKITUから出力されているPGCのパルス幅は200nsほどなのでロジアナのサンプルクロックは最低でも10MHz(100ns)は必要です。
それより低い周波数だとパルスを落としてしまう可能性があります。
なぜクロックにこだわるかというとそれによって観測できる期間が決ってしまうからです。
10MHzの場合その期間はやっと3msほどです。
それでは全然足りないことがわかりました。
PICKITUのLEDの点滅の状態を目視するとおおよそ1秒ほどかかっているようです。
さらに前回ND80Z3.5でプログラムを書いて測定してみたところスタートから消去コマンドの発行まで30ms+280ms=310msもかかっていることがわかりました。
その後ろの数百msは何をやっているのかただ読み出して確認しているだけなのかそのあたりは全くわかりません。
普通のロジアナの考え方だと大容量かつ高速メモリの増設が必要になります。
どうしても必要ならばそうすることも選択肢のひとつなのですが。
あれこれ悩みながら検討をするなかでちらちらと脳裏をよぎるものがあります。
はてなんだっけ。
何かもっとリーズナブルな方法があるのでは。
おお。
天からの啓示であります。
目的はERASEの際のコマンドを探ることです。
それはシリアルの形でPGCクロックに同期して出力されます。
もっと具体的に言いますと。
PGCパルスの立下りのときにPGDパルスの状態(HかLか)が読み取られます。
コマンドとコマンドの間には必要なウェイト期間があります。
しかしそれはData Sheetを読めばわかることです。
またコマンドのビット列もData Sheetでわかります。
ならば。
PGCの立下りごとにPGDのH、Lを読み取ることでシリアルのデータ列(100010…という感じ)が得られるのではないか?
それはただのビット列になるので32KBのメモリにビットデータとして格納すれば32768×8ビットのデータを記録することが可能です。
今までの観測データの解析からPGCクロックの間隔はそのパルス幅も含めて約1μsであることが確認できています。
するとその方法なら32KBのメモリに記録できるデータ列はPGCクロックが休みなく続いたとしても32768×8=262144μs(262ms)の間記録できることになります。
実際には前回確認したように間が280msも空いているところもあるのですからおそらくそれだけのメモリ容量があればBULK ERASEの全過程を記録することが可能と考えられます。
そのようにするために一番手っ取り早い方法は現在のCPLD LOGIANAのハードをそのまま利用してCPLDのプログラムを書き換えることとそのデータを受信してグラフ表示しているところをビットデータ化してそれを表示するなどの変更をすることです。
そうなるとカメレオンロジアナではなくて自前のCPLD LOGIANAを使ってそのように変更するほうがやり易いと思います。
いずれにせよWindows側のプログラムはともかくとしてCPLDのプログラムを書き換えなければなりません。
うむむむ。
VHDLかぁ。
もう殆ど忘れてしまっております。
歌の文句じゃありませんが。
チョット前なら覚えちゃいるが
一年前だとチトわからねえなあ。

なかなかにエラいことであります。

PICBASICコンパイラ[第218回]
2025.2.12 upload

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