C - U-netSURF
C - U-netSURF C - U-netSURF
調 歩 同 期曋 式 シリアル 通 信 1 ビットずつ 送 受 信 するわけですが, 問 題 になるのは 今 受 信 しているデータが 何 ビット 目 なんだ ろう,ということです。これが 伝 わらないとまったくちがうデータになってしまいます。いろいろな 方 法沵 が 考 えられているのですが,その 中 でもっとも 基 本曓 的 な 調 歩 同 期曋 式 という 方 法沵 を 調 べてみましょう。 次 の 図 をご 覧 下 さい。これが 調 歩 同 期曋 式 シリアル 通 信 のフォーマットになります。 かぎとなるのは,1 ビットの 時昷 間 が 決 まっていることと, 信 号 線 は 通 常 は High(5V)で,スタートビットで 必 ず Low(0V)になるということです。ハ イパーH8 の 設 定 をしたとき COM1 の プロパティを 設 定 しました。ちょっと 思 い 出 してみましょう。( 右 図 参 照 ) ‘ビット/ 秒 ’というのがありますが, これは 別 の 言 葉 でボーレート( 単 位 : bps,bit/s,またはボー)といいます。 上 の 式 に 当 てはめると,1 ビットの 時昷 間 は 約 26μ 秒 となります。シリアルポ ートをずっと 見 ていて,High か ら Low になったらスタートビットが 始 ま ったと 判 断 します。そこから 26μ 秒 た ったら bit0 が 始 まります。あとはその 繰 り 返 しですべてのビットを 受 け 取 る ことができます。ストップビットは 必 ず High なので, 次 のデータのスタートビットを 見 つける 準 備 ができています。うまくできている 思 いませ んか。 81 TK-3687mini ユーザーズマニュアル C 言 語 版
シリアルコミュニケーションインターフェース 3 調 歩 同 期曋 式 シリアル 通 信 の 考 え 方 はわかったと 思 いますが,これを I/O ポートとプログラムだけ で 作 るのは 結 構 たいへんです。ちょっとでもタイミングがずれると,ちゃんとデータを 受 け 取 ることがで きません。 大 変 なことは 専 用 のパーツにおまかせしましょう,というのがスマートな 方 法沵 です。H8/3687 には シリアル 通 信 用 の I/O が 内 蔵 されています。「シリアルコミュニケーションインタフェース 3(SCI3)」と 呼 ばれています。SCI3 は 調 歩 同 期曋 式 シリアル 通 信 以 外 にも 対 応 できるように 作 られています。 詳 しくは, 「H8/3687 グループ ハードウェアマニュアル」( 以 降 ハードウェアマニュアル)の 16-1 ページから 説 明 されていますので,ぜひお 読 みください。I/O ポートにくらべると SCI3 の 使 い 方 は 最暷 初 は 難 しく 感 じる のですが,わかってしまうとそれほどでもありません。しかも I/O の 使 い 方 の 基 本曓 が 含 まれているので, SCI3 の 使 い 方 がわかると 他 の I/O の 使 い 方 , 例 えば I 2 C バスインタフェース 2(IIC2)を 理 解 するのも それほどたいへんではなくなります。ここは 一 つがんばってみてください。 ハイパーターミナルから 送 られてくるデータを 見 てみよう SCI3 を 使 ったプログラム 例 を 考 えてみましょう。 ハイパーH8 はハイパーターミナルを 使 っていますね。パソコンのキーボードからキーを 入 力 する と,いろいろと 表 示 されます。よく 考 えると 不 思 議 ですよね。 パソコンのキーボードで 入 力 すると,TK-3687mini にどんなデータが 送 られているのでしょうか。 答 えを 言 うようですが,それぞれのキーに 割 付 けられた 数 字 が 送 られてきます。というわけで,どんな 数 字 が 送 られてきたか,それを 返 信 してハイパーターミナルに 表 示 するプログラムを 作 ってみましょ う。 2パソコン→TK-3687mini 例 :30h : 1キーボード 入 力 例 :‘0’ 3TK-3687mini→パソコン 例 :「30」と 表 示 させる とりあえず 動 かしてみたい 方 は,CD-ROM から ‘sci3_key_code_c.mot’ をダウンロードして 実 行 して 下 さい。パソコンのキーを 押 すとハイパーターミナルに 数 字 が 表 示 される はずです。 82 TK-3687mini ユーザーズマニュアル C 言 語 版
- Page 32 and 33: まず,1「ワークスペース
- Page 34 and 35: 「 新 規 プロジェクト-5/9-
- Page 36 and 37: これで,プロジェクトワー
- Page 38 and 39: 「セクション 設 定 」ダ
- Page 40 and 41: もう 一 度 確 認 しましょ
- Page 42 and 43: HEW のワークスペースウィ
- Page 44 and 45: 4.プログラムのダウンロー
- Page 46 and 47: ダウンロードが 終 了 す
- Page 48 and 49: 実 習 には,TK-3687mini,Timer&LE
- Page 50 and 51: ポートプルアップコント
- Page 52 and 53: 記 述 します。 IO.PCR6 = 0xff
- Page 54 and 55: では,コーディングしてみ
- Page 56 and 57: ***********************************
- Page 58 and 59: 練 習 問 題 (1) ( 次 のよう
- Page 60 and 61: 外 部 割 込 みに 使 用 す
- Page 62 and 63: 回 路 図 Timer&LED Display(B6092
- Page 64 and 65: } // メ゜ンルルーヴハ -----
- Page 66 and 67: __interrupt(vect=25) void INT_ADI(v
- Page 68 and 69: タイマ V の 設 定 用 レジ
- Page 70 and 71: タイマ V と 割 込 みを 使
- Page 72 and 73: } // 点 滅 LedCnt = LedCnt + 1; i
- Page 74 and 75: 4.タイマ Z H8/3687 に 内 蔵
- Page 76 and 77: 75 TK-3687mini ユーザーズマ
- Page 78 and 79: } while(1){} /*********************
- Page 80 and 81: __interrupt(vect=32) void INT_SCI3_
- Page 84 and 85: シリアルポートのプログ
- Page 86 and 87: さて,プログラムリストは
- Page 88 and 89: hex_dt = hex_dt / 0x10; if (hex_dt>
- Page 90 and 91: H8/3687 の AD コンバータ H8/3
- Page 92 and 93: この AD 値 をそのまま 使
- Page 94 and 95: void void void void void void void
- Page 96 and 97: } IO.PCR6 = 0xff; //ポーヴダ6,P
- Page 98 and 99: IO.PDR3.BYTE = 0x00 ^ DRV_LOGIC; IO
- Page 100 and 101: 第 6 章 μITRON を 実 装 し
- Page 102 and 103: 2.カーネルライブラリの
- Page 104 and 105: 次 に,HOS のソースファイ
- Page 106 and 107: 次 に , CPU や 開 発 環 境
- Page 108 and 109: ところで,このままビルド
- Page 110 and 111: mov.b #18, r0l bra int_handler _hos
- Page 112 and 113: 3.プロジェクトの 作 成 HOS
- Page 114 and 115: す。 「 新 規 プロジェク
- Page 116 and 117: 「 新 規 プロジェクト-6/9-
- Page 118 and 119: この 時昷 点 で「iodefine.h
- Page 120 and 121: メニューから「プロジェ
- Page 122 and 123: 「 新 規 ビルドフェーズ -
- Page 124 and 125: ビルドフェーズダイアロ
- Page 126 and 127: 次 に,インクルードファイ
- Page 128 and 129: 標 準 では ROM から RAM へ
- Page 130 and 131: STACK を 設 定 します。メ
調 歩 同 期曋 式 シリアル 通 信<br />
1 ビットずつ 送 受 信 するわけですが, 問 題 になるのは 今 受 信 しているデータが 何 ビット 目 なんだ<br />
ろう,ということです。これが 伝 わらないとまったくちがうデータになってしまいます。いろいろな 方 法沵 が<br />
考 えられているのですが,その 中 でもっとも 基 本曓 的 な 調 歩 同 期曋 式 という 方 法沵 を 調 べてみましょう。<br />
次 の 図 をご 覧 下 さい。これが 調 歩 同 期曋 式 シリアル 通 信 のフォーマットになります。<br />
かぎとなるのは,1 ビットの 時昷 間<br />
が 決 まっていることと, 信 号 線 は 通 常<br />
は High(5V)で,スタートビットで 必<br />
ず Low(0V)になるということです。ハ<br />
イパーH8 の 設 定 をしたとき COM1 の<br />
プロパティを 設 定 しました。ちょっと<br />
思 い 出 してみましょう。( 右 図 参 照 )<br />
‘ビット/ 秒 ’というのがありますが,<br />
これは 別 の 言 葉 でボーレート( 単 位 :<br />
bps,bit/s,またはボー)といいます。<br />
上 の 式 に 当 てはめると,1 ビットの 時昷<br />
間 は 約 26μ 秒 となります。シリアルポ<br />
ートをずっと 見 ていて,High か ら<br />
Low になったらスタートビットが 始 ま<br />
ったと 判 断 します。そこから 26μ 秒 た<br />
ったら bit0 が 始 まります。あとはその<br />
繰 り 返 しですべてのビットを 受 け 取 る<br />
ことができます。ストップビットは 必 ず<br />
High なので, 次 のデータのスタートビットを 見 つける 準 備 ができています。うまくできている 思 いませ<br />
んか。<br />
81<br />
TK-3687mini ユーザーズマニュアル C 言 語 版