PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第224回]
●PIC16F84A(2)Load Configコマンドが怪しい
PIC16F84Aで遭遇した奇妙な現象。
あれこれ考えてみたもののどうにも解せません。
しかし秋月のPICKITUでは特にトラブルもなく普通に書き込みも読み出しも消去も出来ています。
どこに違いがあるのか。
解決の糸口はそこしかなさそうです。
そういえば以前にPICKITUの動作の解析を試みたことがありました([第220回])。
最初にLoad Configコマンドを実行しています。
そこのところが妙に気になります。
そもそもこのLoad Configなるコマンドがめちゃめちゃ怪しい。
[出典]Microchip Technology Inc.PIC16F8X EEPROM Memory Programming Specification
PICによってコマンドコードは少しずつ異なっているものがありますがLoad Configのコードは同じです。
PIC16Fのコマンドコードは6ビットです。
上位2ビットのXXを0にすると000000になります。
16F83/84でははっきり000000になっています。
なぜかその後ろにデータ部があります。
しかしなぜここにデータがあるのか?
上のLoad Configurationの説明ではこのコマンドを実行するとProgram Counterは2000Hにセットされるとあります。
PIC16F84Aの場合Configのアドレスは2007Hです。
それではLoad Configのデータは2000Hに書き込まれるのかと言うとそうではないようです。
Configアドレスに書き込まれるのでもありません。
Configにデータを書くにはLoad Configコマンドを実行後Incrememt Addressコマンドを7回実行したあとでLoad Dara for Program Memoryコマンドを実行します。
そういうことならば。
Load Configコマンドにデータなぞ不要なはず。
[第220回]のPICKITUの解析結果ではLoad Configコマンドのデータとして全ビットが0のデータを送出しています(つまりコマンドコードを000000とすると0のビットが22個連続することになります)。
そのあたりに問題解決の鍵がありそうに思えてきました。
どのPICだったかは思い出せないのですがLoad Configのデータとしてオール0ビットを与えると書いてあるドキュメントを読んだ覚えがあります。
しかもしかも、上のLoad Configコマンドの説明ではこのコマンドによってひとたびコンフィグメモリアドレスにエントリするとユーザープログラムエリアに行くにはリセットするしかないと書いてあります。
おお。
何か誘導しているような…。
時間がなくなってしまいました。
次回に続きます。
PICBASICコンパイラ[第224回]
2025.3.4 upload
前へ
次へ
ホームページトップへ戻る