| 沼津高専 電子制御工学科 | ||||||
|
||||||
| 改訂記録 | ||||||
|---|---|---|---|---|---|---|
| 版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
| A01 | 2000.10.13 | 山本 | 大庭 |
初版 | ||
| A02 | 2000.10.19 | 山本 | 大庭 |
システム構成図の誤り訂正 | ||
| A03 | 2000.12.20 | 山本 | 山本 |
タスクの一部動作変更・換算式の誤り訂正 | ||
| B01 | 2001.3.12 | 山本 | 長澤 |
モジュールの仕様変更 | ||
| B02 | 2001.5.14 | 山本 | 山本 |
uss_mod.tar.gzのファイルの変更 | ||
1.はじめに
本ドキュメントは超音波センサを制御するリアルタイムタスクモジュールの取扱説明書である。
2.システム内の位置
MIRSシステム内で、超音波センサ・リアルタイムタスクモジュールは下図のように位置付けられており、
FIFO1、FIFO2を用いて上位プログラムとコマンド、データのやり取りを行い、超音波センサを制御する。

| 関数名 | 型 | 引数 | 動作概要 |
| init_module | int型 | void | FIFO1、FIFO2の生成 FIFO1とコマンドハンドラのアタッチ 割込みハンドラのIRQ設定(IRQ=3) |
| cleanup_module | void型 | void | FIFO1、FIFO2の削除 割込みIRQ解放 |
| コマンドハンドラ (command_handler) | int型 | int cmd | FIFO1に書き込まれたコマンドを、超音波送信関数に引数として渡す |
| 割込みハンドラ (intr_handler) | unsigned int型 | unsigned int irq, struct pt_regs *regs | 時刻データの記憶 時刻データから距離データ(mm)への変換 距離データをFIFO2に書き込む |
| 超音波送信関数 (transmit) | unsigned int型 | int i | 引数で与えられた番号のセンサの超音波送信アドレスにコマンドを書き込む Linuxカーネルの割込み許可 時刻データの記憶 |


if ((fd0 = open("/dev/rtf2", O_RDONLY)) < 0) {
fprintf(stderr, "Error opening /dev/rtf2\n");
exit(1);
}
if ((ctl = open("/dev/rtf1", O_WRONLY)) < 0) {
fprintf(stderr, "Error opening /dev/rtf1\n");
exit(1);
}
num = 1;
if (write(ctl, &num, sizeof(num)) < 0){
fprintf(stderr, "uss_app: now sending commands to uss%d.\n", num);
exit(1);
}
numはコマンドの変数。この場合、”1”というコマンドがFIFO1に書き込まれる。retval = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
if (retval > 0) {
if (FD_ISSET(fd0, &rfds)) {
n = read(fd0, buf, BUFSIZE - 1);
buf[n] = 0;
}
}

| 関連文書 |
|---|