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


PICBASICコンパイラ

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

[第98回]



●SDカードIF(18)ND80Z3.5に接続(11)送受信データをモニタする

現在デバッグ中のプログラムでは新SDカードIFボード上のPIC18F2550とND80Z3.5の82C55を接続してシリアル通信でコマンドやデータの送受信をしています。
シリアル通信といってもRS232Cなどではなくて私が勝手に作ったローカルな規格の通信方式です。
PIC18F2550とND80Z3.5の両方のプログラムを作ってデバッグをしていますのでどちらかまたは両方のプログラムにミスがあったりすると通信がうまくいかなくてうんともすんとも言ってくれないなんてことが普通に発生してしまいます。
そうなると何が起きているのかどこが間違っているのかわからなくて大いに悩まされます。
せめて通信の内容をモニタできれば助けになります。
ロジアナも助けにならないことはないのですがなにしろデータをシリアルで送受信していますから、ビット毎の波形を読み取って8ビットのコマンドやデータとして解読するのは実際には至難のワザです。

ということで通信の状態をモニタするプログラムをND80Z3.5側のプログラムに組み込んでしまいました。
送受信データをND80Z3.5の空きエリアに記録します。
このようにしてもPIC18F2550の側のプログラムの動きを全て把握することはできませんがとにかく送受信の状況を見ることができますからデバッグの助けになります。

ND80Z3.5のアドレスC000〜のRAMエリアに送受信データが記録されています。
C000〜C001は最後に記録されたアドレス+1のアドレスを示します。
データはC002〜C74Dまでのアドレスに記録されていることがわかります。
データは2バイトで一組です。
最初の1バイトで送信か受信を示します。
F0がND80Z3.5からの送信でF1がPIC18F2550からの受信です。
2バイト目が送受信されたコマンド、データです。
最初のF0 13はND80Z3.5のプログラムからPIC18F2550に送ったIコマンド(コード13)で次のF1 13 F1 00がPIC18F2550からの応答です。
PIC18F2550が受け取ったコマンドコードをそのまま返信し次に処理が正常に完了したことを示す00が送られています。
このデータ画面は前回の後半「こんな感じです」の次からの実行画面をモニタしたものです。
Iコマンドの次にはD(DIR)コマンドを実行しました。
Dコマンドのコマンドコードは12です。
F0 12 F1 12 F1 00のあとF1 XXが連続しています。
DIRエリアに記録されているファイル名が読みだされてPIC18F2550から送られてきています。

モニタした受信データはずっと続いていますが冗長になるので途中は省略して最後の部分です。

アドレスC6F0〜C6F9までのところを見ると
F1 30 F1 92 F1 32 F1 92 F1 34と続いてその次にF1 00があります。
ここはL TEST13.BINを実行してPIC18F2550から送信されたTEST13.BINのデータ(9000〜9234の235Hバイト)の終わりのところです。
TEST13.BINは[第92回]で作成しました。
その次のところでは
F0 04 F1 04 F1 00 のあとファイル名(TEST13.BIN)が続いています。
ここはL TEST13.BINの次に実行したRO TEST13.BINです。
ROのコマンドコードは04です。
そのあと続けてRO TEST14.BINを実行したのですがそこでE:88が表示されました。
そのときはコマンドコードのみが送信されてすぐにエラーコードが送られてきています。
アドレスC720からのF0 04 F1 04 F1 88です。
キーボードからはROに続いてTEST14.BINまでを入力しているのですが最初にコマンドコードを送った段階でPIC18F2550側ですでにROPENが実行されていることが確認されたため、そこでPIC18F2550からエラーコード88を送ることでそのあとのファイル名の受信をキャンセルしています。
そこでCコマンド(コード16)を送ってからあらためてもう一度RO TEST14.BINを実行したところがモニタされています。

今回はプログラムを工夫することでこんなことだってできてしまうというひとつの例として紹介しました。
いつも書いていることですが、そういうことができるのもND80Z3.5にそれを助ける機能が備わっているから、ということでもあります。
ND80Z3.5は実に便利なのです。

PICBASICコンパイラ[第98回]
2023.11.9upload

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