C - U-netSURF
C - U-netSURF C - U-netSURF
シリアルポートのプログラムで 最暷 初 に 考 えるのは 通 信 条曵 件 です。 今 回 はハイパーH8 を 動 かして いたハイパーターミナルに 表 示 するので,ハイパーターミナルと 同 じ 条曵 件 になります。 ビット/ 秒 (ボーレート) ・」・」・」・」・」・」・」・」・」・」・」38400bps(38400bit/s,38400 ボー) データビット ・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」8 ビット パリティ ・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」なし ストップビット ・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」1 ビット まずは SCI3 にこの 条曵 件 をセットします。ハードウェアマニュアルの 16-4 ページ,「16.4.2 SCI3 の 初 期曋 化 」を 参 考 にイニシャライズのフローチャートを 作 ってみました。 イニシャライズ P22 を TXD にする 送 受 信 停 止 TE,RE=0 内 部 ボーレート 選 択 CKE1=CKE2=0 「9.1.1 ポートモードレジスタ 1」( 」(9-2 ~9-3 ページ) TXD は P22 と 兼 用 ピンになっていま す。TXD として 使 うよう 指 定 します。 「16.3.6 シリアルコントロールレジス タ 3」( 」(16-6 ページ) 通 信 条曵 件 のセット 調 歩 同 期曋 データビット=8 ストップビット=1 パリティなし 内 部 φクロック BRR セット 38400bps 「 16.3.5 シ リ ア ル モ ー ド レ ジ ス タ 」 (16-5 ページ) 「16.3.8 ビットレートレジスタ」(16-8 ページ) 16-11 ページの 表 から,φ=20MHz のときの 38400bit/s にする 値 をセット する。 No 1 ビット 期曋 間 経 過 送 受 信 開 始 TE=RE=1 「16.3.6 シリアルコントロールレジス タ 3」( 」(16-6 ページ) リターン 83 TK-3687mini ユーザーズマニュアル C 言 語 版
次 に 受 信 動 作 について 考 えてみましょう。 当 然 ながら,TK-3687mini はパソコンのキーがいつ 押 されるかわかりません。もっとも, 受 信 動 作 そのものは SCI3 が 自 動 的 に 行 なってくれます。そして,デ ータを 受 信 したかどうかしらせるステータスが 用 意 されています。というわけで,マイコンはそのステー タスを 見 て, 受 信 していたらデータを 読 み 込 みます。 ハードウェアマニュアルの 16-7 ページ,「16.3.7 シリアルステータスレジスタ」をご 覧 下 さい。ビッ ト 6,‘RDRF’が 1 になったらデータを 受 信 しています。 受 信 していたらレシーブデータレジスタ ‘RDR’からデータを 読 み 込 みます。フローチャートにしてみました。 1バイト 受 信 =0 RDRF (RDR)→ )→R0L リターン あとは 送 信 動 作 です。38400bps で 1 データ 送 信 するのにどれくらい 時昷 間 がかかるでしょうか。 今 作 っているプログラムの 条曵 件 だと 約 260μs(μs:マイクロ 秒 は 1 秒 の 百 万 分 の 一 )かかります。 速 いよ うに 思 うかもしれませんが,マイコン(H8/3687)は 1 つの 命 令 を 0.1μs~1.2μs で 実 行 できることを 考 えると,ものすご~く 遅 いということがわかります。もし, 何 も 考 えずに SCI3 に 送 信 データをどんどん 書暯 き 込 むと,まだ 送 信 が 終 わっていないのに 書暯 き 込 むことになるかもしれません。それで, 送 信 デー タを 書暯 き 込 んでよいか 判 断 するステータスが 用 意 されています。マイコンはそのステータスを 見 て, 大 丈 夫 ならデータを 書暯 き 込 みます。 ハードウェアマニュアルの 16-7 ページ,「16.3.7 シリアルステータスレジスタ」をご 覧 下 さい。ビッ ト 7,‘TDRE’が 1 になったら 送 信 データを 書暯 き 込 んでも 大 丈 夫 です。トランスミットデータレジスタ ‘TDR’に 送 信 データを 書暯 き 込 みます。フローチャートにしてみました。 1バイト 送 信 =0 TDRE R0L→( →(TDR) リターン ここで 出 てきた,ステータスを 見 ながらデータを 読 み 込 んだり 書暯 き 込 んだりする 考 え 方 は,I/O を 使 うときの 基 本曓 的 な 考 え 方 です。ぜひおぼえておいてください。 84 TK-3687mini ユーザーズマニュアル C 言 語 版
- 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 82 and 83: 調 歩 同 期曋 式 シリアル
- 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 を 設 定 します。メ
- Page 132 and 133: { } /* 割 り 込 み 要 因 ク
シリアルポートのプログラムで 最暷 初 に 考 えるのは 通 信 条曵 件 です。 今 回 はハイパーH8 を 動 かして<br />
いたハイパーターミナルに 表 示 するので,ハイパーターミナルと 同 じ 条曵 件 になります。<br />
ビット/ 秒 (ボーレート) ・」・」・」・」・」・」・」・」・」・」・」38400bps(38400bit/s,38400 ボー)<br />
データビット ・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」8 ビット<br />
パリティ ・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」なし<br />
ストップビット ・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」・」1 ビット<br />
まずは SCI3 にこの 条曵 件 をセットします。ハードウェアマニュアルの 16-4 ページ,「16.4.2 SCI3<br />
の 初 期曋 化 」を 参 考 にイニシャライズのフローチャートを 作 ってみました。<br />
イニシャライズ<br />
P22 を TXD にする<br />
送 受 信 停 止<br />
TE,RE=0<br />
内 部 ボーレート 選 択<br />
CKE1=CKE2=0<br />
「9.1.1 ポートモードレジスタ 1」(<br />
」(9-2<br />
~9-3 ページ)<br />
TXD は P22 と 兼 用 ピンになっていま<br />
す。TXD として 使 うよう 指 定 します。<br />
「16.3.6 シリアルコントロールレジス<br />
タ 3」(<br />
」(16-6 ページ)<br />
通 信 条曵 件 のセット<br />
調 歩 同 期曋<br />
データビット=8<br />
ストップビット=1<br />
パリティなし<br />
内 部 φクロック<br />
BRR セット<br />
38400bps<br />
「 16.3.5 シ リ ア ル モ ー ド レ ジ ス タ 」<br />
(16-5 ページ)<br />
「16.3.8 ビットレートレジスタ」(16-8<br />
ページ)<br />
16-11 ページの 表 から,φ=20MHz<br />
のときの 38400bit/s にする 値 をセット<br />
する。<br />
No<br />
1 ビット 期曋<br />
間 経 過 <br />
送 受 信 開 始<br />
TE=RE=1<br />
「16.3.6 シリアルコントロールレジス<br />
タ 3」(<br />
」(16-6 ページ)<br />
リターン<br />
83<br />
TK-3687mini ユーザーズマニュアル C 言 語 版