忍者ブログ

popn2013

プログラム概説

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

プログラム概説

動作概要

  • 動作は大まかに以下の2つの処理に区別されます。
    1. ボタン状態取得
    2. 本体との通信


ボタン状態取得

  • マイコンに接続されたボタンの押下状態を定期的に読み取ります。
  • ポップンコントローラの自作を目的としているため、アナログ量検出を持たないデジタル入力に限定し、L3/R3ボタンも使用しません。したがって、初代デジタルコントローラ SCPH-1000 相当の機能をエミュレーションします。
  • ←↓↑→ □△×○ SELECT START L1 L2 R1 R2の 14ボタンぶんの入力端子を備えています。
  • ボタン読み取り処理はビジーループで走行し、本体との通信とは独立しています。


本体との通信
詳細なプロトコルやピンアウトはCuriousInventorのページを参考にしました。

  • プレイステーション/プレイステーション2 のパッド通信方式は8ビットのSPI (Serial Peripheral Interface) と互換性があり、AVRマイコンのハードウェア機能 (SPI スレーブ・モード) を使用できます。
  • SPIコンフィギュレーションは以下の通りです。
    1. LSBファースト
    2. クロック極性は負パルス
    3. 先行エッジでセット/後行エッジでキャプチャ (いわゆるMode 0,0)
  • PS2はパッドに対して多種のコマンドを発行してきますが、初代デジタルパッドとして振る舞う限りでは、01h-42h で始まるコマンドのみ対応していれば良いようです。コマンド 42h はボタン状態のポーリングを表し、デジタルパッドでは一度の通信長さは全体で5バイトあります。下表の順番にデータを返答します。コマンド種別を確認し、42h以外のコマンドについては無視します。「アナログコントローラ」「DUALSHOCK2」等のアナログ入力スティック搭載機種相当品をつくる場合は、他種のコマンドにも対応させなければなりません。
  • 最終バイトを除くすべての区切りでは、アクノリッジの短いパルスを返す必要があります。
  • 本体へ出力値を返すSPIデータ・バスは、複数パッドやメモリーカード等の全デバイスで共通のため、デバイス間相互の信号衝突によって短絡を起こし得ます。ATTが自デバイスに向けられている間以外は信号を本体へ出力してはいけません。そのため、DATおよびACKの出力ラインは、ATT端子の入力変化時に割込みを発生して信号線の確保・解放を行っています。
    • 立下り (通信開始) 時: DAT/ACK出力ラインの確保 → 出力を許可
    • 立上り (通信終了) 時: DAT/ACK出力ラインの解放 → 出力をHi-Zへ

バイト CMD (本体→パッド) DAT (本体←パッド)
#1 01h Don't care
#2 42h 41h
#3 00h 5Ah
#4 00h 上位ビットから順に、←↓→↑ START 1 1 SELECT
※ 離=1、押=0
#5 00h 上位ビットから順に、□×○△ R1 L1 R2 L2
※ 離=1、押=0


  • SPIピン接続 (DATは3ステート出力のため、74HC125経由)
パッドコネクタ
AVRマイコン
1. DAT A: 18. PB4/MISO
G#: 9. PB6
2. CMD 17. PB3/MOSI
6. ATT 16. PB2/SS#
7. CLK 19. PB5/SCK

  • 非SPIピン接続 (ACKは3ステート出力のため、74HC125経由)
パッドコネクタ
AVRマイコン
9. ACK A: 15. PB1
G#: 10. PB7


ポート設定

PORTD ビット PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0
ピン番号 13 12 11 6 5 4 3 2
名称定義 BSQR BCRS BCIR BTRI BR1 BL1 BR2 BL2
PORTB ビット PB7 PB6 PB5
(SCK)
PB4
(MISO)
PB3
(MOSI)
PB2
(SS#)
PB1 PB0
ピン番号 10 9 19 18 17 16 15 14
名称定義 ACKG DATG CLK DAT CMD ATT ACK LED
PORTC ビット - PC6
(RESET#)
PC5
PC4 PC3 PC2 PC1 PC0
ピン番号 - 1 28 27 26 25 24 23
名称定義 - BLEF BDOW BRIG BUP BSTA BSEL
  • ピンに付した名称は、プログラム側で使用しているもので、回路図との表現とは異なります。
PR

コメント

プロフィール

HN:
No Name Ninja
性別:
非公開

P R