Sorry, this page is Japanese only. N64 Controller waveform |
N64コントローラに個体差がありUMJにおいて不具合があることの報告を掲示板にて受けました。そこで、不具合の原因を調査するためにコントローラを
お借りしまして、オシロスコープで観測することにしました。 |
まずは、私の所有するコントローラで問題の無い波形です。上の波形が1回分のコントローラとの
通信の全体を示します。UMJからコントローラにコマンドのようなものを送信し、
直後にコントローラからボタンの状態などを受信します。下の波形は送信から受信に切り替わる
部分を画面の中央に拡大したものです。左側部分の送信の波形を見てみると、AN2131の
駆動能力ですが右側のN64コントローラの駆動能力に比べると若干弱いようです。
これは波形の下限のことを言っていますが、不具合が発生するほどのことではないようです。 このオシロスコープはディジタルオシロですが、ディジタルとアナログの長所をあわせた物に なっていまして、波形を見てわかるように波形のブレや軌跡の頻度までわかるようになっています。 |
問題の発生するコントローラの1つ目の波形です。コントローラ側の駆動力が大きいためかアンダーシュートが結構大きめに発生します。しかし、これが誤動作の原因には考えにくいです。といいますのも、アンダーシュートはディジタル信号で値を決めるのに重要なスレッショルド電圧に影響しないためです。もちろん、さらにアンダーシュートがひどくなり上方向の跳ね返りが大きくなるとまずいです。また、マイナスの電圧が大きいと素子を破壊しかねません。 |
問題の発生するコントローラの2つ目の波形です。こちらも結構アンダーシュートが大きいです。
さて、コントローラ1と2・3で異なる点、そして2と3で共通する部分を探さねばなりません。
不具合の症状は正常にボタンに反応したり、関係の無いボタンが反応してしまったりするもので
直感的にはタイミングによるものと思われます。つまり横軸方向の問題であると考えました。
しかし、UMJはPLLに近い動作で位相にある程度同期して動作するように組んであるので
多少の横軸方向の誤差には耐えられるようになっています。波形の周期を見ても計算上の
許容範囲でした。しかし、見てすぐわかりますとおり、送信から受信に切り替わったときに
波形にブレがあります。つまり毎回応答スピードが違うということです。これについても
対応するように設計したはずなのですが、正常に動作したりしなかったりするのはこれに
関係ありそうです。よく応答スピードを見てみると1に比べて2・3は数10ns〜100ns程度
早いです。早速UMJファームウェアのソースを見て計算してみると、UMJの方の送信・受信
切り替えにぎりぎりのスピードでした。その部分を修正しましたら不具合は収まりました。 |
管理人へメール
Since Dec-16-2003: 7730