第4章 周辺システム構成 |
ここでは、入出力ポートやタイマー、シリアル通信などの周辺デバイスの詳細を説明します。
4-1 入出力ポート |
ビジュアルメモリ用カスタムチップは、3つのI/Oポートを持っており、それぞれメモリマップされた、特殊機能レジスタ(SFR)に割り当てられています。 ポート1と3は、データディレクションレジスタ(PnDDR)により入出力方向が決定されます。ポート1は、シリアルインターフェイス/Dreamcast専用インターフェイスで利用します。また、ビジュアルメモリのボタン入力専用ポートとしてポート7が用意されています。
リセット後は、すべてのポートが入力モードになり、ポートラッチは‘0’になります。
入出力ポートを使用するためには、次に示す特殊機能レジスタの操作が必要です。
ポート1(P1) | ・P1 | ・P1DDR | ・P1FCR | |
ポート3(P3) | ・P3 | ・P3DDR | ・P3INT | ・EXT |
ポート7(P7) | ・P7 | (入力専用) |
![]() I/Oポートを読み出す場合、命令によってはラッチ(一時的に保持)されたデータを読み出す(図22の左図)命令と、ポートのデータを直接読み出す(図22の右図)命令があります。I/Oポートのポートデータを読み出す場合には、注意が必要です。 次に示す命令は、ポートラッチデータを読み出します。 BPC,DBNZ,INC,DEC,SET1,CLR1,NOT1 |
ポート1は、ビジュアルメモリのシリアルインターフェイス用入出力として使用できます。 また、Dreamcast専用インターフェイス用入出力としても使用されます。アプリケーションは、SIO(P10〜P15)のみ使用できます。このレジスタを操作する場合は、必ずビット操作命令を使ってください。SIO出力については「4.5 シリアルインターフェイス」を参照してください。
![]() ビジュアルメモリ用アプリケーションをコーディングするにあたり、次の処理を必ず行うようにしてください。 単体(SIOを利用しない)で動作する場合
これらの処理を行なわなかった場合、Dreamcast接続時にビジュアルメモリが正しく認識/接続されなくなる場合があります。 ポート1関連のレジスタは、上記の場合とシリアル通信を行なう場合を除き、アプリケーションから操作しないでください。 |
ポート1 | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
P17 | P16 | P15 | P14 | P13 | P12 | P11 | P10 | |
ファンクション | パルス出力 | TEST | SCK1 | SB1 | S01 | SCK0 | SB0 | SD0 |
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
PIDDR | 145H | W | P17DDR | P16DDR | P15DDR | P14DDR | P13DDR | P12DDR | P11DDR | P10DDR |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
![]() ポート1データディレクションレジスタは、データラッチのビットごとに対応している書き込み専用レジスタです。 書き込み専用レジスタにビット操作命令や、INC,DEC命令,DBNZ命令を使用すると、指定したビット以外のビットが'1'になるので注意してください。P1DDRには、次の命令を使用します。 MOV,MOV @,ST,ST @,POP |
ビット名 | 機能 |
P17DDR(ビット7) | P10DDR(ビット0) |
入力制御 |
0:入力モード 1:出力モード |
ポート1の7〜0ビットをデータ入力用に使うか出力用に使うかを設定します。
1をセットすると、P1nは出力モードになります。
0にリセットすると、P1nは入力モードになります。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
PIFCR | 146H | W | P17FCR | P16FCR | P15FCR | P14FCR | P13FCR | P12FCR | P11FCR | P10FCR |
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
![]() ポート1機能制御レジスタは、書き込み専用レジスタです。書き込み専用レジスタにビット操作命令,INC命令,DEC命令,DBNZ命令を使用すると,指定したビット以外のビットが'1'になるので注意が必要です。P1FCRには次の命令を使用します。 MOV,MOV @,ST,ST @,POP |
ビット名 | 機能 |
P17FCR(ビット7) | P17制御機能 |
0:ポートデータ(P17)出力 1:PWM出力 |
|
P16FCR(ビット6) | 使用不可 |
0:ポートデータ(P16)出力 固定 1:使用不可 |
|
P15FCR(ビット5) | P15制御機能 |
0:ポートデータ(P15)出力 1:シリアルインターフェース用データ (SCK1)出力 |
|
P14FCR(ビット4) | P14制御機能 |
0:ポートデータ(P14)出力 1:シリアルインターフェース用データ (SB1)出力 |
|
P13FCR(ビット3) | P13制御機能 |
0:ポートデータ(P13)出力 1:シリアルインターフェース用データ (S01)出力 |
|
P12FCR(ビット2) | P12制御機能 |
0:ポートデータ(P12)出力 1:シリアルインターフェース用データ (SCK0)出力 |
|
P11FCR(ビット1) | P11制御機能 |
0:ポートデータ(P11)出力 1:シリアルインターフェース用データ (SB0)出力 |
|
P10FCR(ビット0) | P10制御機能 |
0:ポートデータ(P10)出力 1:シリアルインターフェース用データ (S00)出力 |
P17に割りあてられているPWMを制御します。
1にセットすると、PWM信号とポートラッチデータの論理和を出力します。
0にリセットすると、ポートラッチデータを出力します。
このビットは0固定です。アプリケーションからこのビットを操作しないでください。
P15に割りあてられているシリアル通信1用のクロックを制御します。
1をセットすると、シリアルインターフェイス用クロック(SCK1)とポートラッチデータの論理和を出力します。
0にリセットすると、ポートラッチデータを出力します。
P14に割りあてられているシリアル通信1のデータを制御します。
1をセットすると、シリアルインターフェイス用データ(SB1)とポートラッチデータの論理和を出力しします。
0にリセットすると、ポートラッチデータを出力します。
なお、シリアルインターフェイスのデータは、つねに入力可能です。
P13に割りあてられているシリアル通信1のデータを制御します。
1にセットすると、シリアルインタフェース用データ(SO1)とポートラッチデータの論理和を出力します。
0にリセットすると、ポートラッチデータを出力します。
P12に割りあてられているシリアル通信0のクロックを制御します。
1をセットすると、シリアルインターフェイス用クロック(SCK0)とポートラッチデータの論理和を出力します。
0にリセットすると、ポートラッチデータを出力します。
P11に割りあてられているシリアル通信0のデータを制御します。
1をセットすると、シリアルインターフェイス用データ(SB0)とポートラッチデータの論理和を出力します。
なお、シリアルインターフェイスのデータは、つねに入力可能です。
P10に割りあてられているシリアル通信1のデータを制御します。
1をセットすると、シリアルインターフェイス用データ(SO0)とポートラッチデータの論理和を出力します。
0をセットすると、ポートラッチデータを出力します。
![]()
|
ポート3は、ビジュアルメモリの方向ボタン、Aボタン、Bボタン、MODEボタン、SLEEPボタンが割り当てられている、入力専用ポートです。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
P3 | 14CH | R/W | P37 | P36 | P35 | P34 | P33 | P32 | P31 | P30 |
ファンクション | SLEEP | MODE | ボタンB | ボタンA | RIGHT | LEFT | DOWN | UP | ||
リセット時 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ポート3のビット0〜7は、プログラマブルプルアップとなっています。アプリケーションにて、検出するボタンに対応するビットを‘1’にセットする必要があります。ボタンが押されると対応するビットが‘0’にリセットされます。
![]() 方向ボタンの同時押し回避は、アプリケーション側で行なってください。 |
このレジスタは、アプリケーションから操作しないでください。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
P3INT | 14EH | R/W | − | − | − | − | − | P32INT | P31INT | P30INT |
リセット時 | H | H | H | H | H | 0 | 0 | 0 |
ビット名 | 機能 |
P32INT (ビット2) | ポート3割り込み制御フラグ |
0:ポート3による割り込み発生の禁止 1:ポート3による割り込み発生の許可 |
|
P31INT (ビット1) | ポート3割り込み要因フラグ |
0:割り込み要因なし 1:割り込み要因あり |
|
P30INT (ビット0) | ポート3割り込み要求許可 |
0:割り込み要求禁止 1:割り込み要求許可 |
ポート3に接続されているボタンが押されている間、割り込みを発生するかどうかを指定します。P30INT(ビット0)フラグが、発生した割り込みを許可/禁止するのに対し、このフラグは、割り込みそのものを発生するかしないかを設定します。
‘0’にリセットすると、割り込みを発生しません。
‘1’をセットすると、割り込みが発生します。
![]() ポート3割り込みは、レベル割り込みです。ボタンが押されている間、常に割り込みが発生します。 |
P32INTのフラグがセットされている場合に、このフラグは意味を持ちます。ポート3からの割り込み要求を監視し、ポート3から割り込み要求が発生した場合にセット(1)され、発生しない場合変化しません。こうすることで、割り込み処理ルーチンにて、割り込みの発生源を特定できます。
![]() このフラグは、アプリケーションでリセットする必要があります。アプリケーションの割り込み処理ルーチンなどでリセットしてください。 |
ポート3からの割り込み要求を許可(1)または禁止(0)します。
‘0’にリセットすると、割り込みを禁止し、割り込み処理ルーチンがCALLされなくなります。
‘1’にセットすると、割り込み発生(P31INT=1)時に、割り込みベクトル004BHがCALLされます。
ポート7は、ビジュアルメモリの低電圧確認、Dreamcastへの接続確認用として使用する入力専用ポートです(図25参照)。
シンボル | アドレス | R/W | ビット7 | ビット6 | ビット5 | ビット4 | ビット3 | ビット2 | ビット1 | ビット0 |
P7 | 15CH | R | − | − | − | − | P73 | P72 | P71 | P70 |
ファンクション | − | − | − | − | ID1 | ID0 | 低電圧 | 5V検出 | ||
リセット時 | H | H | H | H | 0 | 0 | 1 | 0 |
ポート7のビット0〜ビット3は、プルアップされています。リセット直後は、ビット1が1にセットされ、それ以外のビットは0にリセットされます。
![]() ビジュアルメモリ用アプリケーション作成基準において、アプリケーション実行中にビジュアルメモリがDreamcastコントローラに接続された場合、データをフラッシュメモリに退避させるなどしてから、直ちにアプリケーションを終了することが推奨されています。 アプリケーションは、ポート7のビット0を監視し‘1’がセットされている場合は、MODEボタンによるアプリケーション終了と同等の処理を行い、制御をシステムBIOSに戻してください。なお、接続の検出には、INT0割り込みが利用できます。 |
![]() 低電圧検出は非常に敏感であるため、フラグがセットされた状態で一時的に低電圧状態になってしまった場合も低電圧状態として検知されてしまいます。 低電圧検出を行う場合は、上記方法で連続して低電圧状態が検知された場合に、アプリケーション終了等の処理を行うようにして下さい。時間にして1秒程度連続して低電圧を検知した場合を「低電圧状態」と定義するのが良いでしょう。 |
[←] | [INDEX] | [→] |
(C)SEGA ENTERPRISES, LTD., 1999