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に積んであります。さてどうやって取り出そうか。