WOBはコンピュータですので当然のことながらデジタル入出力を持っています。デジタル入力とはたとえばスイッチのオン・オフを1本の線でセンスすること、デジタル出力とはたとえば1個のLEDを点灯・消灯する操作を1本の線で制御することです。
I/O領域からデジタル入出力に関係するI/Oマップを抽出します。上位8本+下位8本=合計16本のデジタル入出力をセンス/制御できるようになっています。ただし、WOBモニタやDeM仮想マシンを動かすのにすでに使用している端子がありますので、そこを避けて使ってください。
メモリ | I/O命令 | アクセス | 対応するI/Oポート、 | ||
---|---|---|---|---|---|
アドレス | アドレス | タイプ | メモリ、メソッド | カテゴリ | 説明 |
3184-3187 | 46 | R/W | DDRB | デジタル | 方向切換え上位(各桁:0/1/2=入力/プルアップ付入力/出力) |
3188-3191 | 47 | R/W | DDRD | 方向切換え下位(各桁:0/1/2=入力/プルアップ付U入力/出力) | |
3192-3195 | 48 | R/W | PINB/PORTB | 入出力上位(各桁0または1) | |
3196-3199 | 49 | R/W | PIND/PORTD | 入出力下位(各桁0または1) |
さらに上位・下位それぞれの内訳です。「空き」は実験に使える入出力端子です。
入出力上位
桁7 | 桁6 | 桁5 | 桁4 | 桁3 | 桁2 | 桁1 | 桁0 | |
コネクタの端子名 | なし | なし | D13 | D12 | D11 | D10 | D9 | D8 |
CPUのピン名 | PB7 | PB6 | PB5 | PB4 | PB3 | PB2 | PB1 | PB0 |
用途 | LED13*1 | NWRE*2 | 空き | 輝度*3 | 空き | 空き | 空き | 空き |
*1 基板実装済みの赤いLED。実験に使えます。
*2 ネットワークトランシーバの受信制御端子に接続されています。
*3 ディスプレイLEDの輝度制御端子に接続されています。
入出力下位
桁7 | 桁6 | 桁5 | 桁4 | 桁3 | 桁2 | 桁1 | 桁0 | |
コネクタの端子名 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
CPUのピン名 | PD7*1 | PD6*1 | PD5 | PD4 | PD3 | PD2 | PD1 | PD0 |
用途 | 空き | 空き | FM音源 | 空き | NW送信 | NW受信 | USB送信 | USB受信 |
WOBに何も手を加えない状態でデジタル入出力を実験できるのは、ネットワークコネクタ近くにある赤いLED(LED13)だけです。ほかの「空き」端子を使う場合は付属の実験パーツの中のLEDが使えます。
*1 アナログ出力と兼用になっていますが、方向切換えへの書き込みでこれらの桁の方向が変わった(入力から出力へまたは出力から入力へ)とき、アナログ出力は対応するピンから自動的に切り離されますので、プログラム上でそのことを気にする必要はありません。
使い方(入出力共通)
- どの端子を使うか決める。上位・下位の違いで操作するアドレスが変わる。
-
0 入力 1 プルアップ付入力*1 2 出力 「方向切換え」を8桁全部読み込んで、使う桁だけ変更した8桁を覚えておく。桁は端子の機能によって入力/プルアップ付入力*2/出力で0/1/2と変更する。(右図)
- 「方向切換え」に変更した8桁をまとめて書き込む。WOBモニタでまとめて書き込む方法はこちら。
- 上記の操作をいったん終わらせてしまえば、端子の機能を変更しない限り以降この操作は必要ない。
*1 50kΩ程度の抵抗で電源に吊り上げた状態の入力。この端子とGND(グラウンド)間にスイッチを接続した場合、接点が外れた状態でも電圧「高」=論理「1」を与えることができ、中途半端な状態がセンスされるのを回避できる。
使い方(入力)
- 「入出力」を読み込む。入力およびプルアップ付入力に設定した桁が0または1で得られる。端子電圧が「低」の場合は0、「高」の場合1となる。
使い方(出力)
- 「入出力」を8桁全部読み込んで、使う桁だけ変更した8桁を覚えておく。桁は端子電圧を「低」にしたい場合は0、「高」にしたい場合は1と変更する。
- 「入出力」に変更した8桁をまとめて書き込む。
サンプルコードはこちら