PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第160回]
●バグではありませんでした
前回の終わりに、もとのファイルと比較してみたところ一部ですがうまく書けていないところがみつかりました、と書きました。
書き込みプログラムにバグがあるようです、と書いたのですが。
どこがいかんのかと思ってプログラムをしっかり確認してみたのですが、バグらしきものはみつかりません。
落ち着いておかしいと思われるところをよくよく見ておりましたら。
はて、前にも同じようなことをしていたような。
むむ。デジャヴか?
デジャヴではありませんでした。
もう一年以上も前に、ND80Z3.5の82C55にPIC WRITER試作基板を接続して、Z80アセンブラで書き込みプログラムを作成しました。
うまくできたはずのプログラムを実行してPIC18F13K50にテスト用のプログラムを書き込んで、それがうまく書き込めているかどうかをもとのファイルとつき合わせて確認をしました。
大体はうまく書けているのですが一部どうにも納得できない相違があることがみつかりました。
そこでその検証を行なったのですが、今回おかしいと思った相違箇所はそのときと全く同じでした。
[第68回]〜[第70回]で書いています。
そこに書いた通りバグではありませんでした。
今回の書き込みプログラムはこれでよかったのでした。
やれやれです。
なお[第69回]ではデータの途中におかしなところがある、と書いています。
PIC18F13K50/14K50のメモリマップには存在しないF00000〜F000FFのアドレスデータです。
ここも今回の書き込み作業を行なったあとで読み出したデータと全く同じです。
そこでは秋月のPICプログラマの書き込みプログラムのバグではないか、と書いていますが今回はひょっとしたら、と気がついたことがあります。
PIC18F13K50/14K50はデータ用のRAMとプログラム用のフラッシュメモリを内蔵していますがそのほかにユーザー用のデータメモリとして1KBのEEPROMメモリも内蔵しています。
このデータEEPROMはPICのメモリマップの外に置かれていて直接アクセスすることはできません。
そのメモリにアクセスするには特殊なレジスタを介してソフトウェアでアクセスします。
アドレスF000××はそのEEPROMメモリなのではないかということを思いつきました。
もっともEEPROMは1KBあるはずなのでそこではそのごく一部(256バイト)しか読み出されていません。
あるいはそこになにも書かれていない場合には1KBのうちの最初の256バイトのみを表示するということなのかもしれません。
そうであるかどうかは内蔵EEPROMにデータを書き込んでそれをPIC プログラマで読み出してみればはっきりすると思います。
今はちょっと時間がありませんからそこまではやらないことにします。
いずれ時間ができたら確認をしてみることにします。
PICBASICコンパイラ[第160回]
2024.11.13 upload
前へ
次へ
ホームページトップへ戻る