FAMILUNKER
ホーム プロフィール レトロゲーム 電子工作 そのた リンク

SFCコントローラの解析(シリアルパラレル変換) 2010/08/05

1.はじめに

SFCコントローラの解析資料は検索すればたくさん出てきます。 PICマイコンの勉強ということで信号をシリアルからパラレルに変換しようと思います。


2.SFCコントローラ概要

SFCコントローラには4021というICが2個、または4021が2個と同等の機能をするICが搭載されています。 下の写真がSFCコネクタのピンアサインです。

コネクタ

3.SFCコントローラ信号の読み取り

SFCコントローラはボタン信号をシリアルに変換して通信しています。
変化の順序は

という風に通信しています。これらの信号をPICで制御しパラレルに戻してみようと思います。

CLKの回数 1 2 3 4 5 67 8 9 10 11 12 13 14 15 16
対応するボタン B Y SELECT START A X LR 識別符

となっています。これをC言語で記述します。

	#define  PS		ポート番号(出力)
	#define  CLK		ポート番号(出力)
	#define  DAT1		ポート番号(入力)
	char data1[16];	//1P
	// data[(CLKの回数)-1]=CLKの回数の時の対応するボタンの状態,押していると0,話していると1
		void main(void){
		int i,j;
		while(1){
			//読み込み開始
			PS = 1; CLK = 1;	// 1.PSとCLKをHに 読み取り開始の信号	
			PS = 0; CLK = 0; 	// 2.PSとCLKをLに
			data1[0] = DAT1;	// 3.Bボタンが押されてなければDAT1がH
			//押されていればDAT1がL
			for(i=1; i<16; i++) {
				CLK = 1;		// 4.CLKをHに
				CLK = 0;		// 5.CLKをLに
				data1[i] = DAT1;	// 6.DAT1の論理をdata1[i]に代入
				//7.8.以降14回ループする
			}
			//読み込み終了
			//以下にボタンに対応させたポートをHかLか制御してパラレルに変換終わり
		}
	}
		

となります。

*注意 ポート番号の設定やポートの初期化はしていません。

ファミコンの場合は読み取りをCLK8回で良さそうですので、また実験してみます。 次は、マルチタップに挑戦してみます。 マルチタップの信号を読み取り、4個のコントローラが使えるUSB変換機を目標にしてみます。


参考文献

「明日の(ん)予定は仮定の未定で決定。(略して「あんかけ」)」  たんま様

「星くずの日記」  ほしのくず☆様

「寺川 愛印 の Homepage」  寺川 愛印様


HOMEへ

inserted by FC2 system