PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第135回]
●コマンドの動作確認(7)/DMRD(2)
前回からの続きです。
/DMRDコマンドはPICBASICコンパイラプログラムを開発する過程でデバッグ用に作成したコマンドです。
当初はとにかく使えればそれでよいというぐらいのつもりでしたので前回のような機能として作成しました。
しかし当記事の中で説明をするためにあらためて使ってみると自分でもパラメータの指定がちょっとわかりにくいなあと感じました。
1回の実行で表示されるデータ数が32バイトなのでアドレスの指定が面倒です。
PICのメモリが1バンク当たり256バイトになっているのですから256バイト単位にしたほうがずっと扱い易くなります。
実は1回の実行での表示が32バイトであることには理由があります。
次回に説明する予定なのですがPIC18F4550内蔵のフラッシュメモリ(CODE MEMORYスペース)に対するWriteの単位が32バイトであることがそのひとつの理由です。
もうひとつにはPICBASICコンパイラがUSBのHID(Human Interface Device)接続を使っているためでもあります。
ベーシックなHID接続では1回の通信単位が64バイトなのでデータに附属させるパラメータを考慮すると1回の送受信単位の合理的な値は32バイトになります。
そんなHIDなのですが、その最大のメリットは普通OSのバージョンごとに必要なデバイスドライバの組込みが不要であるという超利便性にあります。
そのあたりのことについては「PICでUSBを!」[第28回]〜をお読みください。
もっともHID通信で32バイトを越えるデータが扱えないということではありません。
ただそうするためにはソフトウェア上での工夫が必要になります。
当初/DMRDの1回あたりのバイト数を32バイトとしたのはその工夫を省いて手っ取り早くプログラムを作ってしまおうと考えたからです。
はやい話が手抜きであります。
しかしここへ来て事情が変わってきました。
このあといよいよSDカードIFプログラムをPIC18F4550に組み込むという作業をしなければなりません。
SDカードの1セクタは512バイトです。
つまりSDカードIFプログラムでは嫌でも512バイトのデータをREAD/WRITEしなければなりません。
そういうことなら面倒でもどうせやらなければならないことなのですから、手抜きでお茶を濁したりしないでここはそのためのテスト版というつもりでとりあえずは256バイト単位でデータを読み込んで表示してみることにしました。
ということで。
下は256バイトの表示に機能変更をした/DMRDコマンドを実行した画像です。
書式が簡単になりました。
[書式]/dmrd x
xはデータメモリの上位アドレス0〜Fです。
x=0はデータメモリの先頭アドレス000を示します。
x=1はデータメモリの先頭アドレス100を示します。
x=Fはデータメモリの先頭アドレスF00を示します。
上の画像ではPIC18F4550のデータメモリ000〜0FFのデータを表示しています。
前回の実行から時間が経っているため表示されているデータは前回の表示とは異なっています。
う、う、う。
まあそれほど手間がかかることではありませんから、やってしまいましょうか。
PICBASICコンパイラシステムを起動して/WRコマンドでアドレス030〜032にテストデータを書き込みました。
そのあとで/DMRD 0[Enter]を実行してデータメモリ000〜0FFを読み込んで表示しました。
アドレス030〜032の値が/WRコマンドで書き込んだ通りになっていることが確認できました。
次はSFR(Special Function Register)の確認です。
PIC18F4550のSFRのアドレスはF60〜FFFです。
/DMRD F[Enter]を実行しました。
次に/WRコマンドでPORTBにテストデータを書き込んだあと/RDコマンドでその値を読み出しました。
そこまで実行したあとでもう一度/DMRD F[Enter]を実行しました。
アドレスF81とF8Aの値がAAに変わったことが確認できました。
PIC18F4550のPORTBのアドレスはF81で、F8AはLATBのアドレスです([第132回]参照)。
PICBASICコンパイラ[第135回]
2024.1.31 upload
前へ
次へ
ホームページトップへ戻る