
今回は、知人の依頼で作成した、プレステコントローラ記録/再生装置の話であります。
プレステコントローラの操作状況をマイコンに取り込み、EEPROMへ記録。
EEPROMの記録情報を基にプレステコントローラの操作状態を送信してやろうという試みであります。
1メガビットのEEPROMを4個使用し、アナログコントローラでも2時間以上を余裕で記録できるものとしております。
とはいっても難しい物は1つも無く、唯一プレステコントローラのデータ受信にEEPROMの書き込みが間に合うのかが懸念されました。
やってみたら意外と簡単。
プレステ本体からコントローラへはスルー通信とし、通信経路にマイコンのSPIを接続してプレステ本体からのデータ取得を行います。
再生時はプレステコントローラからプレステ本体への通信を3ステートバッファで遮断し、代わりにマイコンのSPIからデータを流す事で記録/再生ができるってな寸法であります。
プレステ本体との通信は、スレーブモードで動作させる必要があるので、プレステ本体からの受信、コントローラからの受信を両立させようとすると、AVR単体では不可能であります。
スレーブで動作するSPIは1チャネルしかなく、データの先頭をチェックするためにプレステ本体からの受信をAVRで行わせる事とし、コントローラからのデータはシフトレジスタ経由でパラレル読み込みさせる事とします。
全2重通信でありますから、SPI受信割り込みで読み出せばOKという按配であります。
プレステコントローラのSPI通信割り込みとI2C割り込みが衝突すると具合が悪いので、I2Cはメインループ内で非同期動作させる事としたのであります。
多重割り込みはヤヤコシイので、最初から却下でありますw
今回は試作でありますので、マイコンは贅沢にもATmega2560を用いております。
シフトレジスタさえ無ければ、40ピンのDIPマイコンでも何とかなりそうですが、この時はプレステ本体からのデータは先頭データを捕まえるのみとし、3ステートバッファでコントローラからのデータを接続すれば良さそうという所まで検討して、今回の試作は終了としたであります。
今後の展望としては、似たような通信をしているスーファミなんかも対応したいと考えております。
プレステより簡単とは思うけど、実機が無いwww
最後に、作ってみようかと思った奇特な方は、以下のファイルをダウンロードして検討してみて下さいw
お買い物時に間違えて混ぜてしまったEEPROMを使ってしまったが為に、おかしなコードではありますが、回路図とソースコード(EEPROM.c getIIC1stCmd関数)を入れておりますので、適当に修正してみて下さい。
また、OLEDはシリアル改造したものを使用しております。改造方法は特に示さなくても大丈夫かと思いますが、情報ご入用でしたらレスして下さい。改造記事執筆を検討します。
PSCON_MEM_mega2560.zip