C - U-netSURF
C - U-netSURF
C - U-netSURF
- No tags were found...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
6. . 割 り 込 みを 使 ってみよう<br />
これまでのサンプルプログラムは「dly_tsk」を 使 ってタスクを 待 ち 状 態 にし,その 間 にほかに 実 行<br />
できるタスクがあれば,その 処 理 を 行 なっていました。 逆 に, 何 か 条曵 件 がそろったら( 外 部 入 力 が 変 化<br />
した, 受 信 した,など)すぐに 実 行 したい 処 理 もあります。このようなとき OS 無 しのプログラムでは 割 り<br />
込 みを 使 うことが 多 いですが,HOS でも 割 り 込 み 処 理 で 対 応 することができます。 今 回 はシリアルポ<br />
ートの 受 信 処 理 を 例 に, 割 り 込 みプログラムを HOS に 組 み 込 んでみましょう。プログラムの 内 容 は 次<br />
のようなものです。<br />
タスク 1 : シリアルポートから 受 信 したら, 受 信 データをそのまま 送 信 する。<br />
タスク 2 : 0.1 秒 おきにポート 5 とポート 6 の 出 力 値 を+1 する。<br />
今 回 は「sample_02」を 改 造 します。ただし,このマニュアル(および 付 属 CD)では,このワークス<br />
ペースに 新 たに「sample_03」というアプリケーションプロジェクトを 追 加 します。これまで 説 明 してきた<br />
手 順 (3 項 と 4 項 )で sample_02 とまったく 同 じプログラムを 作 ってください。<br />
では 改 造 していきましょう。まず 修 正 するのはコンフィギュレーションファイル「system.cfg」です。<br />
次 のように 修 正 ・ 追 加 してください。<br />
/* SCI3 */<br />
ATT_ISR({TA_HLNG, 0, 23, SCI3_RxiHandler});<br />
追 加<br />
/* サキンルハルハロエラム */<br />
変 更暬<br />
ATT_INI({TA_HLNG, 0, Initialize});<br />
CRE_TSK(TSKID_SAMPLE1, {TA_HLNG|TA_ACT, 1, Task1, 2, 256, NULL});<br />
CRE_TSK(TSKID_SAMPLE2, {TA_HLNG|TA_ACT, 2, Task2, 1, 256, NULL});<br />
「ATT_ISR」は 割 り 込 みサービスルーチンを 定 義 する 静 的 API です。<br />
{ } 内 の「TA_HLNG」は 属 性 です。「TA_HLNG」は 割 り 込 みサービスルーチンが 高 級 言 語 (C 言<br />
語 )で 記 述 されていることを 示 しています。<br />
次 の 数 字 「0」は 拡 張 情 報 で,この 数 値 が 割 り 込 みサービスルーチンに 引 数 として 渡浫 されます(サ<br />
ンプルプログラムでは 特 に 使 っていない)。<br />
次 の 数 字 「23」は 割 り 込 みベクタ 番 号 です。<br />
次 の「SCI3_RxiHandler」は 割 り 込 みサービスルーチンの 先 頭 アドレスです。 関 数 名 を 指 定 しま<br />
す。<br />
「CRE_TSK」も 変 更暬 します。タスク 1 の 優 先 順 位 を「2」にします。タスク 1 は 受 信 したかどうかを 常<br />
に 監 視 することになりますが,もしタスク 2 と 優 先 順 位 が 同 じか,タスク 1 のほうの 優 先 順 位 が 高 いと,<br />
タスク 1 ばかりが 実 行 されてタスク 2 の 処 理 が 行 なわれません。タスク 2 の 処 理 を 優 先 的 に 行 ない,0.1<br />
秒 の 待 ち 時昷 間 の 間 にタスク 1 の 処 理 を 行 なうようにします。<br />
続 いてシリアル 制 御 用 プログラムライブラリ「h8_sci.c」を 次 のように 改 造 します( 黄 色 でマークして<br />
いる 行 )。 受 信 割 り 込 み「Sci3_RxiHandler」でリングバッファにストアし,サブルーチン「Sci3_GetChar」<br />
でリングバッファから 1 文 字 ずつ 取 り 出 します。<br />
/* ------------------------------------------------------------------------ */<br />
/* H8/3664 用 SCI3 制 御 ラ゜ノラリ */<br />
/* */<br />
140<br />
TK-3687mini ユーザーズマニュアル C 言 語 版