沼津高専 電子制御工学科
MMI Interface調査報告書
MIRS9802-TECH-0001
 
改訂記録
版数 作成日 作成者 承認 改訂内容 提出先
A01 1998.12.20 村木 川端 初版  

目次

  1. 概要
  2. 各部の機能
  3. 使用ポート
  4. ソフトからの見えかた
  5. ハードウェア関数

1.MMIボードの概要

マンマシンインターフェイスボード(Man-Machine Interface Board,以下MMIボード) は、MIRS内部の状態を使用者に伝える役割を持っている。具体的な機能としては、 がある。 また、MMIボードはフロントボード、メインボードに別れており、 メインボードにはIC類、フロントボードにはLED,スイッチなどが実装され、 それぞれはコネクタでつながっている。

(以下http://www2.denshi.numazu-ct.ac.jp/mirs/m3db/kaihatu/seisaku/elec/ka_main.htmより引用
  1. パルス点灯発生回路

  2.  7Seg.−LEDをパルス点灯させるための回路である。表示に関しては、本来普通に表示を制御するには各LEDで4ビット合計16ビット必要である。しかし、ボードの制限もあるので、図1の回路構成にあるように68230のAポートの8ビットのうちPA0〜PA5までの6ビットをつかって表示するようにした。そこでラッチ機能を持つデコーダを使用することにし、6ビットのうち4ビットをLEDのデータように使い、残り2ビットを桁の選択用に使うようにした。  ここで問題になったのは、LEDの消費電力で、1つあたり約20mAなので4つすべて点灯すると約0.56Aも流れることになる。そこで4つの位相の異なる方形波により、7Seg.−LEDをパルス点灯させることにより消費電力を約1/4にした。1つの桁が点灯して再び点灯する間隔が短いため、見た目にはすべての桁が点灯しているように見える。
  3. 桁選択回路

  4.  この回路は、2進2ビットのデータ書き込む桁選択信号を各桁のデータラッチON/OFF回路へと振り分ける機能を持つ。
  5. LED駆動回路

  6.  この回路は、MPUから送られてくるそれぞれのLEDのON/OFF信号を反転させて、それぞれのLEDへ送る機能を持つ。
  7. 4ビットディップロータリスイッチ信号処理回路

  8.  この回路は、4ビットディップロータリスイッチのスイッチングに対応した信号をMPUボードへ送る機能を持つ。
  9. 勝敗判定信号処理回路

  10.  この回路は、勝敗判定装置からのON/OFF信号を電気的に絶縁し、レベルを判別してMPUボードに送る機能を持つ。
  11. データラッチON/OFF及びデータ処理回路

  12.  データラッチON/OFF回路は、桁選択回路からの桁選択信号とHandshake2からの信号を用いてデータを書き込むデコーダのラッチ機能をOFFし、データが書き込まれた後ラッチ機能をONさせる。  データ処理回路は、BCDコードで入力されたデータを7Seg.−LED用の信号7ビットに変換する。またデータをラッチする機能を持つ。
  13. チャタリング防止回路

  14.  この回路は、押しボタンスイッチからの信号のチャタリングを防止し、MPUボードに送る機能を持つ。

各部の機能

7-seg LED

4つの7-seg LEDには、桁選択信号が2bit、データ信号が4bit入力される。 たとえば、桁選択に01、でーたに1001を入力すると、1番目のLEDに”9” が表示されるという仕組みである。何故このような方式を取ったかというと、 4つの7-seg LEDにそれぞれデータ信号を4bitとったとすると、4x4で 16bit必要になる。これではポートを使い過ぎてしまうので、このような方式をとってある。
また、信号の流れとしては、桁選択信号は桁選択回路に、データ信号は振り分けられた LEDのデコーダに入る。デコーダに入った信号は、デコーダのラッチ機能によって 内部に保持される。 LEDをすべて同じに点灯させると、電流を食う(0.56A)ので、計算機の授業でやったようなパルス発生回路を用いて、高速で一つづつ点灯させる事によって、使用電流を 1/4に減らしている。

図2パルス点灯用信号回路
7-seg LEDの使用用途としては、 など様々なものがあげられる。

Green , Red LED

この2つのLEDは、ちょっとした情報を表示するのに使用される。 回路としては、各LED1つの入力信号をオープンコレクタNOTゲート に入力し、LEDを駆動させる。 用途は、常時点滅させて異常がないか確認したり、7-seg LEDの補助に使ったりする。

押しボタンスイッチ

押しボタンスイッチの信号は、チャタリング除去回路を通して出力される。 用途としては、割り込みを人工的に発生させたり、強制停止させたりなど、 様々な用途に使用できる。

4ビットディップスイッチ

このスイッチの信号は、直接4つのポートに送られる。用途としては、 試験モードや予選モード、本戦モードなどモードの変更などが考えられる。 また、動作経路などで、様々なルートを用意してそれを切り替えたり、 ポストの数を登録したりもできる。

3.使用ポートについて

各LED SWITCH類が使用するポートを次に示す。

 http://www2.denshi.numazu-ct.ac.jp/mirs/m3db/kaihatu/document/vpro/spec/soturonn.htmからの引用
CON1
 ピン番号  方向※      内容   ピン番号  方向※      内容 
 1   ←  Vcc  21   −  GND 
 2   →  Handshake 1   22(PB0)   →  4??????¨???????ON/OFF(0) 
 3  未使用  TIN  23   −  GND 
 4   ←  Handshake 2 ※※  24(PB1)   →  4??????¨???????ON/OFF(1) 
 5   ←  TOUT  25   −  GND 
 6(PA0)   ←  7Seg.-Led.data(0)  26(PB2)   →  4??????¨???????ON/OFF(2) 
 7   −  GND  27   −  GND 
 8(PA1)   ←  7Seg.-Led.data(1)  28(PB3)   →  4??????¨???????ON/OFF(3) 
 9   −  GND  29   −  GND 
10(PA2)   ←  7Seg.-Led.data(2)  30(PB4)   ←  テスト信号入力 
11   −  GND  31   −  GND 
12(PA3)   ←  7Seg.-Led.data(3)  32(PB5)   →  テスト信号出力 
13   −  GND  33   −  GND 
14(PA4)   ←  7Seg.-Led.選択(下位)  34(PB6)   ←  勝敗判定装置ON/OFF信号 
15   −  GND  35   −  GND 
16(PA5)   ←  7Seg.-Led.選択(上位)  36(PB7)  未使用  未使用 
17   −  GND  37   −  GND 
18(PA6)   ←  Red-Led.ON/OFF  38  未使用  Handshake 3 
19   −  GND  39   ←  GND 
20(PA7)   ←  Green-Led.ON/OFF  40   →  Handshake 4 ※※※ 
※    方向は、”←”CPUボードからメインボードへの入力
         ”→”メインボードからCPUボードへの出力を表す。
※※  Handshake 2の信号は、デコーダのデータラッチのタイミング用である。
※※※ Handshake 4の信号は、押しボタンスイッチのON/OFF信号である。

 CON2
 番号  方向※         内容 
1  未使用  未使用 
2   ←  勝敗判定装置ON/OFF信号 
3   →  勝敗判定装置ON/OFF信号(折り返し) 
※    方向は、”←”勝敗判定装置からフロントボードへの入力
      ”→”フロントボードから勝敗判定装置への出力を表す。

 CON3(CON4)
番号  方向※        内容  番号  方向※         内容 
 1  未使用  未使用  31  未使用  未使用 
 2  未使用  未使用  32  未使用  未使用 
 3  未使用  未使用  33   −  GND 
 4   ←  押しボタンスイッチON/OFF信号  34   →  7Seg.-Led.1信号(a) 
 5   ←  押しボタンスイッチON/OFF信号  35   →  7Seg.-Led.1信号(g) 
 6   −   GND  36   →  7Seg.-Led.1信号(f) 
 7  未使用  未使用  37   →  7Seg.-Led.1信号(b) 
 8  未使用  未使用  38   →  7Seg.-Led.1信号(c) 
 9   ←  3ピンコネクタ(3)  39   →  7Seg.-Led.1信号(d) 
10   ←  3ピンコネクタ(2)  40   →  7Seg.-Led.1信号(e) 
11  未使用  未使用  41  未使用  未使用 
12   −  GND  42  未使用  未使用 
13   ←  4??????¨???????ON/OFF(3)  43   −  GND 
14   ←  4??????¨???????ON/OFF(2)  44   →  7Seg.-Led.2信号(a) 
15   ←  4??????¨???????ON/OFF(1)  45   →  7Seg.-Led.2信号(g) 
16   ←  4??????¨???????ON/OFF(0)  46   →  7Seg.-Led.2信号(f) 
17   −  Vcc  47   →  7Seg.-Led.2信号(b) 
18   →  Green-Led.ON/OFF信号  48   →  7Seg.-Led.2信号(c) 
19   −  Vcc  49   →  7Seg.-Led.2信号(d) 
20   →  Red-Led.ON/OFF信号  50   →  7Seg.-Led.2信号(e) 
21  未使用  未使用  51  未使用  未使用 
22  未使用  未使用  52  未使用  未使用 
23   −  GND  53   −  GND 
24   →  7Seg.-Led. 0信号(a)  54   →  7Seg.-Led.3信号(a) 
25   →  7Seg.-Led. 0信号(g)  55   →  7Seg.-Led.3信号(g) 
26   →  7Seg.-Led. 0信号(f)  56   →  7Seg.-Led.3信号(f) 
27   →  7Seg.-Led. 0信号(b)  57   →  7Seg.-Led.3信号(b) 
28   →  7Seg.-Led. 0信号(c)  58   →  7Seg.-Led.3信号(c) 
29   →  7Seg.-Led. 0信号(d)  59   →  7Seg.-Led.3信号(d) 
30   →  7Seg.-Led. 0信号(e)  60   →  7Seg.-Led.3信号(e)
 ※    方向は、”←”フロントボードからメインボードへの入力
         ”→”メインボードからフロントボードへの出力を表す。

 

4.ソフトからの見えかた

ソフトウェアからの見えかたを示す。 ・Aポート
 Address

 

Read or

 Write 

Data

 D7 D6 D5 D4 D3 D2 D1 D0 

 内容 
 FDFC11

 

________

 

Write

 

Write

 

Write

 

Write

 

________

 

Write

 

Write

 

Write

 

Write

 ________

 

Write

  ・

  ・

  ・

  ・

 Write

 

GD RD C1 C0 DA DB DC DD

 

_______________________________

 

0 0 * * * * * *

 

0 1 * * * * * *

 

1 0 * * * * * *

 

1 1 * * * * * *

 

_______________________________

 

* * 0 0 * * * *

 

* * 0 1 * * * *

 

* * 1 0 * * * *

 

* * 1 1 * * * *

 _______________________________

 

* * * * 0 0 0 0

         ・

         ・

         ・

         ・

 * * * * 1 0 0 1 

GD:Grren????°??選択

 RD:Red????°??選択

 C1:7SEG-LED選択(上位)

 C0:7SEG-LED選択(下位)

 DA:7SEG-LED Data信号(A)

 DB:7SEG-LED Data信号 (B)

 DC:7SEG-LED Data信号 (C)

 DD:7SEG-LED Data信号 (D)

 _________________________

 

Gren????°??消灯

 Red????°??消灯

 

Green????°??消灯

 Red????°??点灯

 

Green????°??点灯

 Red????°??消灯

 

Green????°??点灯

 Red????°??点灯

 _________________________

 

20の7SEG-LEDを選択

 

21の7SEG-LEDを選択

 

22の7SEG-LEDを選択

 

23の7SEG-LEDを選択

 _________________________

 

D5,D4で選択した7SEG-LED

 に0を表示させる。

       ・

       ・

       ・

 D5,D4で選択した7SEG-LED

 に9を表示させる。

 

・Bポート
 Address  Read or

 Write 

    Data

 D7 D6 D5 D4 D3 D2 D1 D0 

   内容 
 FDFC13  ________

 

Read

 

Read

 ________

 

Read 

Read

 ________

 

Read

 

Read

 ________

 

Write

 

Write

 ________

 

Read

  ・

  ・   ・  

 Read 

PB SH TO TI S3 S2 S1 S0

 

________________________________

 

0 * * * * * * *

 

1 * * * * * * *

 ________________________________

 

* 0 * * * * * *

 

* 1 * * * * * *

 ________________________________

 

* * 0 * * * * *

 

* * 1 * * * * *

 ________________________________

 

* * * 0 * * * *

 

* * * 1 * * * *

 ________________________________

 

* * * * 0 0 0 0

         ・

         ・

         ・

 * * * * 1 1 1 1         

PB:押し????????ON/OFF信号

 SH:勝敗判定装置ON/OFF信号

 TO:テスト信号出力

 TI:テスト信号入力

 S3:4bit????ON/OFF信号

 S2:4bit????ON/OFF信号

 S1:4bit????ON/OFF信号

 S0:4bit????ON/OFF信号

 __________________________

 

押し????????OFF信号

 

押し????????ON信号

 __________________________

 

勝敗判定装置ON信号

 

勝敗判定装置OFF信号

 __________________________

 

テスト信号の出力OFF

 

テスト信号の出力ON 

__________________________

 

テスト信号の入力OFF

 

テスト信号の入力ON

 __________________________

 

4bit????によって0000

 (0:10進)が入力

      ・

    ・

 4bit????によって1111

 (15:10進)が入力

 

5.ハードウェア関数

  ハードウェア関数を次に示す。
http://www2.denshi.numazu-ct.ac.jp/mirs/m3db/kaihatu/tool/kiki/soft/hfl/mmi.htmからの引用
関数 int dipsw_data();
機能 4bitディップスイッチ又はロータリースイッチの値の取得
引数 なし
戻り値 スイッチの値
関数 void mmi_init();
機能 MMI/Fの初期化
引数 なし
戻り値 なし
関数 void led_set(int n,int d);
機能 7seg.LEDに数字を表示する
引数 int n:表示するLEDの番号
int d:表示する数字
戻り値 なし
関数 void led_on(int n);
機能 RED又はGREEN LEDを点灯、消灯する
引数 int n:点灯するLED
GREEN : 緑 RED : 赤 GREEN|RED : 両方 OFF : 消灯
戻り値 なし
関数 void btn_disable_int();
機能 押しボタンスイッチの割り込み禁止
引数 なし
戻り値 なし
関数 void btn_enable_int();
機能 押しボタンスイッチの割り込み許可
引数 なし
戻り値 なし
関数 int pow_chk();
機能 電源の状態のチェック
引数 なし
戻り値 1 : システム稼働中 0 : 非稼働中

押しボタンスイッチの割り込みについて

 

上記のように割り込みタスク登録しbtn_enable_int();を呼び出すことにより可能になる。
割り込み時の処理はinterrupt void intt**()の中に書くようにする。