H8-3069ネット対応マイコンにMESを入れる > 基本編7.シリアルポートsci0を使ってみる(送信)

7.シリアルポートsci0を使ってみる(送信)

ケーブルの準備をする

ここでは、H8-3069LANボードで空いているシリアルポートsci0を使ってパソコンと通信させたいと思います。通信・・・といっても難しいことをやるわけではなく、とりあえずwrite関数を使って文字が送信できるかどうかを確かめることから始めます!

sci0とsci1

これまでマイコンと通信で使っていたのは標準入出力となっているsci1(com1)です。写真でいうと白で囲ったところです。ここを使ってハイパーターミナルからプログラムを実行させていました。
これからやろうとしていることは、赤で囲った部分、sci0(com0)を使って同じくパソコンと通信させようということです。
sci1はこれまでどおりプログラムの実行のために使います。
sci0はプログラム内でwriteとする対象(デバイス)です。

パソコンとの接続はこんな感じ

まずはsci0を使える状態にします。買ってきたままの状態だとここには何もついていないので、シリアルポートとして使えるように電線で引き出してやります。
私の場合はここにシングルピンをつけてやりました。そして電線を半田つけして、9ピンコネクタにつながるようにしました。
RS232Cの規格は私も詳しくないので、なひたふ電子情報さまの電子回路の豆知識−5章2のRS232Cのページをご覧ください。
それによると、9ピンの配置は
ピン番号2・・・RxD(受信)
ピン番号3・・・TxD(送信)
ピン番号5・・・GND(グラウンド)です。
そして、H8-3069LANボードの回路図のJP1の部分を見ると、
2・・・Tx1 Out
3・・・Rx1 In
5・・・GND
となっています。
パソコンとH8-3069LANボードはクロスでつなぐので、
9ピンコネクタ側      3069側
ピン番号2(RxD)  →←  2(Tx1 Out)
ピン番号3(TxD)  →←  3(Rx1 In)
ピン番号5(GND) →←  5
のようにつなげます。
パソコンのCOM端子は適当にあいてるところをつかってください。今回私はsci1をパソコンのCOM2へ、sci0をパソコンのCOM1にさしました。この後のプログラムや説明はこれをもとに行います。

9ピンの接続部分

TeraTermをダウンロード・インストールする

ハードの準備ができたら、今度は通信につかうソフトを準備します。
これまではハイパーターミナルをつかってパソコンからプログラムを実行しているだけでしたが、今回の実験では使うシリアルポートが増えたのでもう一つ通信用のソフトを入れることにします。今回使うのはUTF-8対応TeraTerm Proいうソフトです。リンク先のVectorからダウンロード、インストールしてください。
このTeraTermをマイコン側のsci1(=パソコンのCOM2につなげた)に設定します。そして、これまで使っていたハイパーターミナルをマイコン側のsci0(=パソコンのCOM1につなげた)に設定して使うことにします。つまり、今までプログラムをハイパーターミナルから実行していたのをTeraTermから実行するように変更します。そして実行した結果をsci0にwriteしてハイパーターミナルから確認します。

デスクトップのTeraTermアイコン

TeraTermをインストールしたら、デスクトップにアイコンができるのでそこから起動します。起動すると次のような「新しい接続」画面がでると思います。

TeraTerm初期画面

とりあえずここはキャンセルボタンで新しい接続ウィンドウを閉じてください(まだボーレート等を設定してないから)。
TeraTermの設定は次のとおりです。まずは「設定」−「端末」を押します。

「設定」−「端末」

下のような端末の設定ウィンドウが出てくるので、赤字で囲ったように設定してください。設定したらOKを押します。

「端末の設定ウィンドウ」

次はシリアルポートの設定をします。「設定」−「シリアルポート」クリックします。

「設定」−「シリアルポート」

下のような画面がでるので、赤字で囲った部分を設定します。
なお、ボーレートは57600を使用しています。これは最初のconfig.sysでsci0、sci1とも57600で設定してあるのでこうしました。人によっては115200にしているかもしれません、その場合はconfig.sysの設定とあわせてください。
なお、一番下の項目の「送信遅延」は私の環境では設定しないとうまく送信できないようなので、1ミリ秒/字に設定してあります。ここも環境によっては設定しなくても大丈夫かもしれません。このあといろいろ動かしてみて調整してください。設定がおわったらOKを返します。

「シリアルポート 設定」ウィンドウ

端末の設定とシリアルポートの設定が終わったら、設定の保存をします。「設定」−「設定の保存」をクリックし、名前をつけて設定を保存します。

「設定」−「設定の保存」

ここまでがTeraTermのダウンロードとインストールです。次はいよいよプログラムを書きます。

パソコンと通信

/*シリアルポートsci0を使った通信(送信)*/ #include <string.h> #include <mes2.h> int main() { unsigned char Word[] = "ABC"; int fd,Data; Data = 0; //sci0を使う fd = open("com0", 0); write(fd, Word, strlen(Word)); close(fd); //ついでに液晶にも表示 fd = open("lcd0", 0); write(fd, Word, strlen(Word)); close(fd); }//main

このsci0_1.cはこちらにおきます。ダウンロードして使ってください。保存先はC:\mes\sci0_1フォルダの中にします(sci0_1フォルダをmesフォルダの中に新規作成する)。
そして、コンパイル、RAMに転送します。RAMに転送する際、ハイパーターミナルからではなく、先ほどインストールしたTeraTermを使ってください。これまでのプログラム転送の手順と一緒です。ifconfigでマイコンにIPアドレスを設定し、pingでマイコン側からパソコンへ通信できるか確認、その後、tftpサーバを立ち上げて、プログラムをLANを使って転送します。
elfファイルの転送が完了したら、プログラムを実行する前に、(TeraTermも起動したまま)ハイパーターミナルを立ち上げます。ハイパーターミナルのシリアルポートの設定はCOM1に合わせ、ボーレート(速度)は57600にしておき、通話状態にさせます。

sci0_1.elfを転送し終わったところ

COM1側の準備が整ったら、TeraTerm画面から下のようにsci0_1.elfを実行します。

sci0_1.elfを実行するとハイパーターミナルにABCが表示されます

すると上のようにsci0側にwriteされた結果、(パソコンで言うとCOM1側)ABCと表示されました。成功です。
やってることはたいしたことありませんが、とりあえずsci0を使って送信できる、ということを確認したかった・・・だけです。
次は「受信」(read)をやりたいと思います。

次は8.シリアルポートsci0を使ってみる(受信)です。>>