
H8-3069ネット対応マイコンにMESを入れる > 基本編9.H8-3069ボード同士の通信 | |
9.H8-3069ボード同士の通信 | |
タイミングが難しい基本編7・8でシリアルポートsci0を使った送信・受信を行いました。その時は対パソコン(のハイパーターミナル)だったわけですが、この基本編9ではマイコン同士のsci0を使った通信を取り上げます。なお、扱うのは「文字列」です。一方のH8-3069LANボードからもう一方のH8-3069LANボードへsci0を使って「文字列」を送信します。それを受け取って、受けた方のボードの液晶に受け取った文字列を表示するプログラムです。 ちなみに、下のプログラムを使って送受信し、取りこぼす事は結構あります・・。が。全文字受信することも多々あります。成功率7割ほどでしょうか。 | |
プログラム
上2つのプログラム(上:sci0_3_s.c、下:sci0_3_r.c)のような書き方をしました。sci0_3_s.cが送信側のプログラムです。動きとしては、、送信側のボードのディップスイッチの1番をONしたあと、ディップの2もしくは3のどちらかをONします。1番のスイッチはまあ、なくても構わないんですが、送信が始まるよということを画面上ではっきり確認するためにつけています。 このプログラムを使いたいという方はsci_0_3_s.c、sci0_3_r.cをそれぞれダウンロードしてお使いください。上のプログラムをコピー&ペーストしてコンパイルかけるとエラーの嵐になりますからご注意ください(空白の関係上)。 | |
2つのマイコンボードでそれぞれ転送・実行をするにはさて、上で送信用のプログラムと受信用のプログラムを二つ紹介しました。ですが、これらを2台のマイコンボードにそれぞれ転送して、それぞれ実行できなければ、この実験をすることは出来ません。さて、それをするにはどうしたらよいのか・・。 さて、シリアルでのプログラム転送、今回はだいぶ「はしょり」ましたが、出来たと仮定して次の実際の画面に進みたいと思います
sci0_3_s.cとsci0_3_r.cから出来たプログラムたちはc:\mes\sci0_3フォルダにまとめていれました。それぞれにoファイル、elfファイル、cbaファイルが出来ているのがわかります。
プログラムを準備したら、基本編7でインストールしたTeraTermを使っていきます。デスクトップ上のTeraTermへのショートカットをクリックして、起動します。パソコンのシリアルポートのどこに接続するかを聞いてくると思いますのでまずは送信側マイコンをつないでいるポートを選択します。今回の私の場合ですと、送信側マイコンはパソコンのシリアルポートCOM1につながっているのでCOM1を選びます。そしてマイコンボード上のタクトスイッチを押してリセットをかけると、下のような画面になると思います。
それから、もう一度デスクトップ上のTeraTermショートカットをクリックします。今度は受信側のマイコンがパソコンにつながっているシリアルポートを選択、タクトスイッチを押します。私の場合はCOM2なので、下のようなCOM2に接続している画面が出てきます。
デスクトップ上に二つのウィンドウを並べて表示しておきます。
無事受信側のプログラムが転送できたら、実行を掛けてしまいます。すると下のように一定間隔で0を書き始めます。この0という数字は今何文字受信したかを示す数字です。送信側から文字が来てうまく受け取ることができたら1が表示されます。
受信側プログラムがせっせと画面に0を印字している間に、今度はCOM1・・送信側のマイコンへのプログラムを転送します。
さて、シリアルポートから送信側のマイコンへプログラムの転送が完了したら、やっとプログラムの実行です。下のような感じになります。高速でfという文字を画面に書き出していきます。これは動いてるよという証拠のために表示しています。
これで受信側・送信側ともにプログラムの動いている状態にできました。すでに受信側も0を書き出しつつ動いています。
1番をONすると、送信側の画面にeが表示されて、画面が静止します。これはこれから送信を始めるために、画面のf書き出しを止めています。
画面の静止が確認できたら、ディップスイッチ1番をOFFし、2番もしくは3番のディップスイッチをONしてみます。
それから、受信側の画面には0に交じってところどころで1が印字されていきます。
受信が完了したら、下のように受信できた文字数を受信側の画面に表示します。同時に受信側のマイコンボードの液晶に受信した文字列を表示します。
受信し終わると、送信側・受信側ともに、それぞれ送信待ち体勢・受信待ち体勢に戻ります。 | |