24.01.2015 Views

C - U-netSURF

C - U-netSURF

C - U-netSURF

SHOW MORE
SHOW LESS
  • 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 言 語 版

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!