電音の工場ブログ

趣味の電子工作を中心としたブログです.音モノの工作が多いです.

ARMWSD

プレステの

DualShock2 からレバーや押釦情報を取得することに成功。リソース(後述)がたくさんあったので助かりました。5周遅れぐらいで取り組んでる?>自分

当初何も考えずに手持ちのATmega88のポートを使用しようとしてボードを作ったのだけれど、今まで使ったことのなかったSPIペリフェラルを調べてみるとクロックの生成とI/Oシフトレジスタの手当てがお任せできることがわかり、C/ASMミックスデザインの必要がなくなり、あっさりと鞍替えしました。テストコードも捨てる腰の軽さよ。

たいしてコードを用意しないでAVR Studioに向かいgccなプロジェクトを起こして、avr-gccを書いて、コードをちょこちょこと書き足してはATmega88に送り込んで試すのループ。ICE万歳! ただときどきI/Oの向きを間違えて、あるいは立ち上がり時にありがちな衝突でポートがボケそうになったので慌てて保護抵抗を入れたり。

それでもうまく通信できないのでぢっと基板をみると配線間違い発覚。修正するとなんかそれっぽいがバケたデータを取るので、デジタルオシロでうまいことトリガを引っ掛けて調べてみると入力信号(DATとACK)がL→Hの遷移でダラ上がりじゃありませんか。プルを強くしてなんとか規定っぽいデータを得ることができるようになりました。あとはコマンド発行のタイミングを調整。

参照したAVRを使用したいくつかの作例では入出力信号を直接AVRのポートで受けて、入力は内蔵のプルアップでうまく行っているようです。うーん。

DualShock2から取得したデータはSRAMに積んであります。さてどうやって取り出そうか。

リソース

情報管理

AVR Studioから AVRFuse bit の情報をうまく管理できる仕組みがないかなぁ…