(57)【要約】　　　（修正有）【課題】本発明の実施形態は、外部ＡＤＣを必要とせず、電位差計のワイパの位置を決定するために用いられる方法及び装置を提供する。【解決手段】２つのコンデンサ６２，６６は、それぞれ電位差計４０の両端に接続され、該電位差計のワイパ４１に取り付けられた電流ソース又は電流シンクによって同時に充電あるいは放電される。各コンデンサを閾値電圧レベルまで充電又は放電するために必要な時間が測定され、その後、その時間は、電位差計４０のワイパの位置を決定するために用いる。【選択図】図３
2004144737.tif 000002
【特許請求の範囲】
【請求項１】
電位差計のワイパの相対的な位置を決定する方法であって、
　前記電位差計の第１端部に接続された第１のコンデンサの電圧が第１の基準電圧に達するときの第１のタイマの読みを記録するステップと、
　前記電位差計の第２端部に接続された第２のコンデンサの電圧が前記第１の基準電圧に達するときの第２のタイマの読みを記録するステップと、
　前記第１のタイマの読みと第２のタイマの読みとを比較するステップと、
　を有することを特徴とする方法。
【請求項２】
前記第１のコンデンサは、前記ワイパを介して電流を放電し、前記ワイパは、マイクロコントローラの電流シンキングピンに接続されている請求項１に記載の方法。
【請求項３】
前記マイクロコントローラは、ＵＳＢ（ユニバーサルシリアルバス）マイクロコントローラである請求項２に記載の方法。
【請求項４】
前記第１のタイマの読みを記録するステップは、論理状態の変化のために、前記電位差計の第１端部に接続されるマイクロコントローラの入力ピンをポーリングすることを含む請求項１に記載の方法。
【請求項５】
前記第１又は第２のタイマの読みを記録するステップの前に、前記ワイパを介して第２の基準電圧まで前記コンデンサの少なくとも一つを充電するステップを更に有する請求項１に記載の方法。
【請求項６】
前記第１のコンデンサ及び第２のコンデンサは、同時に電流を放電される請求項１に記載の方法。
【請求項７】
前記第１及び第２のタイマの読みを比較するステップは、前記タイマの読みの一つを他のタイマの読みから減算することを含む請求項１に記載の方法。
【請求項８】
電位差計のワイパの相対的な位置を決定する方法であって、
　前記電位差計の第１端部と第２の基準電圧の間に接続された第１のコンデンサを第１の基準電圧に充電するステップと、
　前記電位差計の第２端部と前記第２の基準電圧の間に接続された第２のコンデンサを前記第１の基準電圧に充電するステップと、
　前記第１及び第２のコンデンサを放電するステップと、
　前記第１の電圧が第３の基準電圧と等しくなるときに取られる第１のタイマの読みと、前記第２のコンデンサの電圧が前記第３の基準電圧と等しくなるときに取られる第２のタイマの読みとを比較するステップと、
　を有することを特徴とする方法。
【請求項９】
前記第１のコンデンサを放電するステップは、前記ワイパを介して放電することを含み、前記ワイパは、マイクロコントローラの電流シンキングピンに接続されている請求項８に記載の方法。
【請求項１０】
前記マイクロコントローラは、ＵＳＢマイクロコントローラである請求項９に記載の方法。
【請求項１１】
前記第１のコンデンサの電圧が前記第３の基準電圧と等しくなったときを決定するために、前記第１のコンデンサに接続されたマイクロコントローラ入力ピンをポーリングするステップを更に有する請求項８に記載の方法。
【請求項１２】
前記第１のタイマの読みと前記第２のタイマの読みとを比較するステップは、ある結果を生じ、
　前記方法は、前記ワイパの最大負変位を表す数字から前記ワイパの最大正変位を表す数字まで変化するスケールにおいて、前記結果を補間するステップを更に有する請求項８に記載の方法。
【請求項１３】
前記第１及び第２のコンデンサを放電するステップは、同時に発生する請求項８に記載の方法。
【請求項１４】
電位差計を読むための装置であって、
　前記電位差計の第１端部に接続される第１のコンデンサと、
　前記電位差計の第２端部に接続される第２のコンデンサと、
　前記電位差計のワイパに接続される電圧発生器と、
　前記第１のコンデンサが第１レベルから第２レベルに電圧を変化する第１の期間を測定するとともに、前記第２のコンデンサが前記第１レベルから前記第２レベルに電圧を変化する第２の期間を測定するよう構成されるタイマと、
　前記第１の期間と前記第２の期間とを比較するよう構成される比較器と、
　を備えることを特徴とする装置。
【請求項１５】
前記比較器は、前記第２の期間を前記第１の期間から減算するよう構成される請求項１４に記載の装置。
【請求項１６】
前記コンデンサを前記第１のレベルまで充電するよう構成される充電回路を更に備える請求項１４に記載の装置。
【請求項１７】
前記充電回路は、前記ワイパを介して電流が流入するよう構成される請求項１６に記載の装置。
【請求項１８】
前記ワイパは、マイクロコントローラのピンに接続されている請求項１４に記載の装置。
【請求項１９】
前記ピンは、ＵＳＢマイクロコントローラのプログラムで制御可能な入力／出力ピンである請求項１８に記載の装置。
【請求項２０】
前記第１の期間と前記第２の期間との差と、フルスケールの電位差計の読みを表す基準とを比較するよう構成される第２の比較器を更に備える請求項１４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
　この開示は、電位差計（ポテンショメータ）を読むことに関し、より詳細には、ＡＤコンバータ（アナログ／デジタルコンバータ）を必要とせず、アナログ電位差計をデジタル的に読むことに関する。
【背景技術】
【０００２】
　従来、パーソナルコンピュータ（ＰＣ）とＵＳＢ（ユニバーサルシリアルバス）ゲームパッドの両方は、単純な「デジタル」装置であって、指向性（方向性）制御（例えば、「親指パッド」のように配置される）と、ゲーム中に武器を発射するようなフィーチャーアクティベーション（特徴作動：feature activation）の両方に用いられるボタンセットから作られていた。最近、ソニー（登録商標）のプレイステーション（登録商標）やマイクロソフト（登録商標）Ｘｂｏｘ（登録商標）のようなゲームコンソール（制御装置）が、指向性制御用の「サムスティック（親指スティック）」及び「プロポーショナルトリガ（比例トリガ）」を含む種々のアナログ制御を提供するゲームパッドをサポートするために開発された。そのようなアナログ制御を提供することにより、そのゲームユーザは、より「自然に」ゲームを楽しむことができる。それは、ゲームをプレイする楽しみを次々に増やす。
【０００３】
　いくつかのゲームパッドやジョイスティックにより用いられるアナログ位置センシング制御は、典型的に、制御位置に基づく可変電圧を生成するために、電位差計を用いている。このアプローチは、アナログ信号をマイクロプロセッサで処理可能なデジタル値に変換するために、高価なＡＤＣ（Analog-Digital Converter）を必要としている。さらに、アナログセンサは、中心位置キャリブレーション、温度ドリフト、及びノイズを含む種々の電気的条件（電気的状態）に影響されやすい。
【０００４】
　接続されたＸｂｏｘ（商標）ゲーム周辺機器は、ＵＳＢインプリメンテーション（ＵＳＢ手段）のうち限られたものだけを用いてゲームコンソールと通信する。典型的に、それらの周辺機器は、ゲームコントローラ機能を管理するＵＳＢ周辺機器マネージャーと、該周辺機器に挿入され得るメモリカードのような「ａｄｄ−ｉｎ」モジュールのインターフェースを提供するＵＳＢハブの両方を組み込んでいる。共通の周辺機器インプリメンテーションは、（電位差計を読むために用いられる）外部ＡＤＣとともに、ＵＳＢハブマイクロコントローラを用いているか、あるいは、集積ＡＤＣを有するＵＳＢ周辺機器マイクロコントローラとともに、標準ＵＳＢハブＩＣを用いている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
　本発明の実施形態は、上記で論じられた関心事を扱う。
【課題を解決するための手段】
【０００６】
　本発明の実施形態は、ほぼあらゆるマイクロコントローラが最小の外部構成で電位差計を正確に読むことを可能にする方法を含んでいる。本発明のいくつかの実施形態は、電位差計の各端部に接続される２つのコンデンサを含んでいる。それらは、該電位差計のワイパに取り付けられた電流ソース（電流源）又は電流シンクによって同時に充電あるいは放電され得る。各コンデンサの電圧が所定のレベルに充電又は放電される時間が記録され、その時間は、電位差計のワイパの位置を決定するために連続的に用いられる。また、本発明のいくつかの実施形態は、例えば、物理入力装置（physical input device）に接続される第１及び第２の蓄電装置と、該第１及び第２の蓄電装置の充電時間と放電時間とを比較することにより、該物理入力装置の位置を決定する回路とを含んでいる。
【０００７】
　本発明の前述の並びに他の特徴及び利点は、添付図面を参照して進められる本発明の好適実施形態の以下の詳細な記述から一層容易に明確になるであろう。
【発明を実施するための最良の形態】
【０００８】
　本発明の実施形態では、電位差計（ポテンショメータ）の終端部に固定値を持つ複数のコンデンサが追加される。このように構成されるＲＣ回路は、抵抗値の変化に比例する割合でこれらのコンデンサを充電又は放電するであろう。コンデンサの電圧が閾値電圧レベルまで充電又は放電するのに必要な時間を測定することによって、ＡＤＣを必要とせず、マイクロコントローラにより電位差計の可変抵抗の抵抗値を決定するとともに、電位差計のワイパの位置を次々に決定することができる。
【０００９】
　図１（Ａ）は、ゲーム装置１０の典型的な構成を示すブロック図である。ゲーム装置１０は、表示装置１２と、ゲームコンソール２０と、１つ以上のゲームコントローラ３０とを含んでいる。このゲームコンソール２０は、４つのゲームコントローラ３０からの入力を受信するよう構成され、各ゲームコントローラ３０は、ゲーム周辺機器ユニット３１を含んでいる。この周辺機器ユニット３１は、通信ライン３５を介して、ＵＳＢ仕様の一つの限られたインプリメンテーションを用いることによって、ゲームコンソール２０上にある処理ユニット２１と通信する。ゲームコンソール２０は、１つ以上の周辺機器ユニット３１からの情報を用いて、一連のビデオゲーム画像（イメージ）を形成する。この画像は、ビデオゲームプレーヤーへの表示のために、通信ライン２５を介して表示装置１２に送信される。
【００１０】
　従来のゲーム周辺機器ユニット３１は、図１（Ｂ）及び図１（Ｃ）に示すように、典型的に、２つの方向の一方で実行されていた。両インプリメンテーションは、例えば、マイクロコントローラを用いることができるＵＳＢハブ３２を含んでいる。ＵＳＢハブ３２は、図１（Ｂ）に示すように、外部ＡＤＣ３４に接続して用いられ得る。その代わりに、図１（Ｃ）に示すように、ＡＤＣ３４は、同様にマイクロコントローラを用いることができるＵＳＢ周辺機器３３と一体化されてもよい。ＵＳＢ周辺機器３３は、位置及びメニュー選択などのゲームコントローラ３０の機能を管理し、ＵＳＢハブ３２は、メモリカードなどの「ａｄｄ−ｉｎ」モジュールをサポートするための追加のインターフェースを提供する。どちらの場合でも、ＡＤＣ３４は、ビデオゲームプレーヤーによって扱われるアナログ制御の位置を確認するために、ゲームコントローラ３０上の図示しない電位差計を読むために用いられている。
【００１１】
　図２（Ａ）は、一つの電位差計を用いて実行される一軸トリガ２２の具体例である。電位差計を読むことにより、トリガ２２をその自然な位置から移動する力がないときの「完全停止（full rest）」位置と、トリガ２２がその機械的リミットの端部まで移動されたときの「完全オン（full on）」の位置とに関する該トリガの物理的位置が決定される。同様に、図２（Ｂ）は、サムパッドの表面に与えられるあらゆる圧力の位置を測定（計測）するために用いられる２つの電位差計で実行される二軸サムパッド２３を示す。
【００１２】
　一般的に、ゲームコントローラに関連するアナログ制御のために、各移動軸に対して１つの電位差計が必要とされる。例えば、図２（Ａ）のトリガ２２は、その動きが一軸に制限されているので、ただ１つの電位差計を必要とする。しかしながら、図２（Ｂ）に示すサムパッド２３は、２つの電位差計を用いなければならない。なぜならば、サムパッドの表面に与えられるあらゆる圧力の位置を指定するために２つの軸が必要だからである。
【００１３】
　図３は、本発明の一実施形態を示す概略図である。電位差計４０は、第１の終端部（第１端部）４２と、第２の終端部（第２端部）４６とを有し、それらは、該電位差計４０の導電トラック４７の各端部に電気的に接続される。第１の終端部４２は、ＵＳＢハブマイクロコントローラ５０の入力／出力ピン５２に接続され、第２の終端部４６は、入力／出力ピン５６に接続される。さらに、電位差計４０は、該電位差計４０のワイパ４１に電気的に接続されるワイパ端子４４を含む。ワイパ端子４４は、ＵＳＢハブマイクロコントローラ５０の出力ピン５４に接続される。
【００１４】
　電位差計４０のワイパ４１は、図２（Ａ）のトリガ２２、あるいは、例えば、図２（Ｂ）のサムパッド２３の一軸に物理的に取り付けられ得る。トリガ２２を押し込み、あるいはサムパッド２３を動かすことにより、ワイパ４１が電位差計４０の導電トラック４７の長手方向に沿って物理的に移動させられる。
【００１５】
　導電トラック４７のワイパ４１の位置は、第１の終端部４２とワイパ端部４４との間の電気的パス（電気的経路）を長くしたり、短くしたりすることによって、可変抵抗４３の抵抗値を決定する。なお、可変抵抗４３、４５の加算抵抗は一定である。
【００１６】
　ワイパ４１の相対的位置は、以下に詳細を示すように、第１及び第２の終端部４２、４６とワイパ端部４４に接続された回路によって生成される信号により決定され得る。さらに、概ね等しいキャパシタンスを持つ２つのコンデンサ６２、６６は、入力／出力ピン５２、５６と基準電圧との間にそれぞれ接続される。
【００１７】
　図４は、本発明の実施形態が、図３の電位差計４０のようなアナログ制御の位置をどのように効率的に測定することができるかを示す一例のフローチャートである。まず、ステップ７２において、入力／出力ピン５２、５６及び出力ピン５４は、コンデンサ６２、６６が完全に充電されたことを確証するのに十分な期間、「Ｈｉｇｈ」状態にされる。逆に、入力／出力ピン５２、５６及び出力ピン５４は、コンデンサ６２、６６が完全に放電されたことを確証するのに十分な期間、「Ｌｏｗ」状態にされ得る。
【００１８】
　ステップ７４では、両入力／出力ピン５２、５６は、入力として設定される。次に、ステップ７６では、出力ピン５４が「Ｌｏｗ」に設定される。これにより、出力ピン５４が電流シンクになり、同時に、コンデンサ６２、６６は、それぞれの可変抵抗４３、４５を介して電流シンクとして構成される出力ピン５４に放電を開始する。特に、コンデンサ６２は、電位差計４０の可変抵抗４３を介して出力ピン５４に放電し、コンデンサ６６は、電位差計４０の可変抵抗４５を介して出力ピン５４に放電する。その代わりに、コンデンサ６２、６６がステップ７２において初めから完全に放電されていたならば、出力ピン５４を「Ｈｉｇｈ」状態に設定することにより、出力ピン５４が電流源として機能し、同時に、コンデンサ６２、６６は、それぞれ可変抵抗４３、４５を介して充電を開始するであろう。
【００１９】
　次に、判断ステップ７８において、入力／出力ピン５２、５６のそれぞれで状態変化が起こったか否かが決定される。例えば、完全に充電されたコンデンサ６２、６６が放電しているならば、各コンデンサ６２、６６が所定の閾値レベルを超えて放電するとき状態変化が起こる。判断ステップ７８では、入力／出力ピン５２、５６における電圧が周期的にサンプリングされ、ＨｉｇｈからＬｏｗへの状態変化が起こったか否かを決定するために、そのサンプリングされた電圧は、該所定の閾値レベルと比較される。逆に、コンデンサ６２、６６がその代わりに同時に完全な放電状態から充電されたならば、ステップ７８では、入力／出力ピン５２、５６においてＬｏｗ状態からＨｉｇｈ状態への変化の検出動作がなされる。コンデンサ６２、６６を閾値レベルまで充電又は放電するのに必要な実際の時間は、電位差計４０のワイパ４１の位置により決定される可変抵抗４３、４５の関数である。
【００２０】
　マイクロコントローラにより供給される汎用入力／出力ピンは、閾値検出に用いられ得るＴＴＬとＣＭＯＳレベルのいずれかをサポートしてもよいが、本発明の実施形態では、マイクロコントローラが一方の電圧レベルのみをサポートする場合であっても用いられ得る。いずれにしても、線形関数に最も近似する放電又は充電波形の一部においてポーリング処理が行われるので、典型的に、０以上である電圧閾値を検出することがより望ましい。
【００２１】
　ステップ８０によれば、第１の状態変化が入力／出力ピン５２と入力／出力ピン５６のいずれかから検出されると、マイクロコントローラ５０に位置するフリーランニングタイマ５８からの第１のタイムスタンプが格納される。また、このタイマ５８は、マイクロコントローラ５０から分離されていてもよい。例えば、ＵＳＢハブマイクロコントローラ５０で実行するファームウェアは、タイマ５８の現在の状態を格納することができる。一方、判断ステップ８２では、状態をまだ変化していない入力／出力ピン５２又は５６の状態変化が連続的に監視（モニタ）される。この事象が起こると、ステップ８４に示すように、フリーランニングタイマ５８から第２のタイムスタンプが、例えば、ファームウェアによって格納される。
【００２２】
　その代わりのステップでは、タイマ５８は、第１の状態変化事象が起こるとき開始され、第２の状態変化事象が起こるとき停止され得る。
【００２３】
　最終的に、ステップ８６において、格納されたタイムスタンプ値を比較することにより、アナログ制御の位置が計算され得る。例えば、その位置は、入力／出力ピン５２における状態変化によってトリガされたタイムスタンプを入力／出力ピン５６における状態変化によってトリガされたタイムスタンプから減算することによって決定されてもよい。また、その代わりに、その位置は、入力／出力ピン５６における状態変化によってトリガされたタイムスタンプを入力／出力ピン５２における状態変化によってトリガされたタイムスタンプから減算することによって決定され得る。同一の方法を一貫して用いる限り、いずれの方法を用いることにも困難はない。
【００２４】
　ステップ８６で実行される計算において、その差が０であることは、電位差計が中心位置にあることを示している。正又は負の値は、電位差計４０の可変抵抗のいずれが大きいかを示すにすぎない。例えば、選択された方法が入力／出力ピン５２から得られるタイムスタンプを入力／出力ピン５６から得られるタイムスタンプから減算する場合であって、結果としてその差が負であるとき、入力／出力ピン５６から得られるタイムスタンプが入力／出力ピン５２から得られるタイムスタンプよりも時間的に早かったことを示している。このことは、必然的に、コンデンサ６６が閾値レベルまで充電又は放電するのに必要な時間がコンデンサ６２の場合よりも短いことを示す。２つのコンデンサ６２、６６のキャパシタンス値が概ね等しいので、結果として、可変抵抗４５が可変抵抗４３よりも小さい値を有しなければならない。
【００２５】
　可変抵抗４３、４５の一定の合計抵抗値、コンデンサ６２、６６のキャパシタンス値、及びフリーランニングタイマのクロック振動数を用いて、フルスケール値が決定される。２つのタイムスタンプとフルスケール値の差で、マイクロコントローラは、電位差計の位置を正確に決定することができる。
【００２６】
　図４の判断ステップ７８及び判断ステップ８２により表される本発明の実施形態では、ポーリングループが割込み処理であることが望ましい。なぜならば、割込み処理は、典型的に、可変待ち時間を示すからである。可変待ち時間は、行われるイベントとタイムスタンプの記録との間に数マイクロ秒の時間変動（ずれ）を作り出すことができる。それは、電位差計の読みの正確さに深刻な影響を与え得る。ポーリングループ中の時間は、いずれのプログラム分岐を通って取られたルートであったとしても、そのループが実行される各時間ができる限り等しくなるようにすべきである。一般に、ポーリングループが用いられるとき、ポーリングが中断されないことを保証するために、割込み処理がオフされるべきである。また、割込み処理はオンされるが、その場合、すべての可能な割込み処理のための割込みサービスルーチンは、それらが電位差計の読みを中断していることを認識していなければならない。その場合、電位差計の読み取り中に割込み処理が発生するならば、電位差計の読みを中止し、あるいはその読みを捨てる（放棄する）ことができるメッセージパッシング（メッセージ受け渡し）プロトコルが用いられるべきである。
【００２７】
　もう一つの実施形態では、「キャプチャタイマ」を特徴とするマイクロコントローラが用いられ得る。その場合、キャプチャタイマがタイムスタンプを自動的に記録するよう構成され得るので、状態変化のために２つの入力／出力ピン５２、５６をポーリングすることが必要でなくなる。また、この方法を用いることは、状態変化とタイムスタンプの記録との間の時間変動を減らし、続いて、測定の正確さを改善するであろう。
【００２８】
　本発明の記述の実施形態により、高価な外部装置又は特別なオンチップ機能を必要とせず、ほとんどあらゆるマイクロコントローラが電位差計のワイパの位置を正確に測定することができる。それに加えて、本発明の実施形態は、他の従来のアプローチよりもずっと正確な読みをもたらす。本発明の実施形態のさらなる利点は、電位差計の老朽化の影響が最小にされることである。例えば、図３の２つのコンデンサ６２、６６が同時に充電され、あるいは放電されるので、導電トラック４７が長時間使用されるときの電位差計４０のワイパ４１と導電トラック４７との間の接触損失の影響を実質的に減らす。
【００２９】
　他の利点は、２つのタイムスタンプの差が０のときその位置が本質的に中心位置であると考えられるので、電位差計の中心位置キャリブレーションを必要としないことである。また、温度ドリフトや高周波及び低周波ノイズに対する増大した免疫性がある。
【００３０】
　図５（Ａ）は、本発明の実施形態における複数の並列な電位差計をサンプリングすることができる装置を示す部分的な概略図である。マイクロコントローラが並列に読むことができる共通ポート（コモンポート）１に８つの入力／出力チャンネルＲＣ１〜ＲＣ８を接続することによって、並列サンプリング処理が達成される。同様に、４つの出力チャンネルＲ１〜Ｒ４は、共通ポート２に接続される。
【００３１】
　図５（Ｂ）は、本発明の実施形態における複数の並列な電位差計のサンプリング処理を実行するときの図５（Ａ）に示す装置によって用いられるいくつかのビットマップパターンの例を示している。
【００３２】
　図５（Ａ）及び図５（Ｂ）を参照して、変数「アクティブ（active）」は、活発にサンプリングされるべき入力を示すビットマップパターン９０でロードされる。ここで、ビットマップパターン９０の最上位ビットは、チャンネルＲＣ８に対応し、ビットマップパターン９０の最下位ビットは、チャンネルＲＣ１に対応する。このビットマップパターン９０では、チャンネルＲＣ１、ＲＣ２、ＲＣ３及びＲＣ４が読まれるべきであり、チャンネルＲＣ５〜ＲＣ８が読まれるべきでないことが示されている。マイクロコントローラ５０は、ポート１を読むことにより、必要とされるチャンネルのそれぞれを同時に読んでいる。
【００３３】
　サンプリングされた入力／出力チャンネルのいずれもＬｏｗ状態に遷移していないならば、ポート１の結果として生じるサンプルは、ビットマップパターン９１のように現れる。このビットマップパターン９１を「アクティブ」変数（ビットマップパターン９０）とＡＮＤ処理することにより、ビットマップパターン９２が生じる。次いで、ビットマップパターン９２を「アクティブ」変数とＸＯＲ処理することにより、モニタされるチャンネルのいずれもＨｉｇｈ状態からＬｏｗ状態に遷移していないことを示すビットマップパターン９３を生じる。
【００３４】
　逆に、チャンネルの一つ（この場合、ＲＣ２）がＨｉｇｈ状態からＬｏｗ状態に遷移したならば、ポート１の結果として生じるサンプルは、ビットマップパターン９４のように現れる。遷移のない場合のように、ビットマップパターン９５を得るために、まず、ビットマップパターン９４は、「アクティブ」変数（ビットマップパターン９０）とＡＮＤ処理される。そして、ビットマップパターン９５は、ビットマップパターン９６を得るために、「アクティブ」変数とＸＯＲ処理される。ビットマップパターン９６は、チャンネルＲＣ２がＨｉｇｈ状態からＬｏｗ状態に遷移したことを示す。タイムクリティカルな（最優先で実行される）期間中における処理費用を最小限にするために、いくつかの実施形態では、ビットマップパターン９６は、変数「エッジ」にセーブされ得、フリーランニングタイマのスナップショットは、変数「サンプル」にセーブされ得る。両変数「エッジ」及び「サンプル」は、エントリ（登録）の最大数と同じくらい多くのスナップショットを保持することができるアレイ（配列）である。遷移が検出された後、ビットマップパターン９６は、ビットマップパターン９７を得るために反転される。そして、このビットマップパターン９７は、ビットマップパターン９８を得るために、「アクティブ」変数とＡＮＤ処理される。その後、ビットマップパターン９８は、チャンネルＲＣ２がもはやサンプルされることがないことを示す新しい「アクティブ」変数になる。
【００３５】
　そして、すべてのアクティブチャンネルが遷移するまで、上述の処理を継続する。これは、「アクティブ」変数が０と等しいときに示される。現時点において、本発明のいくつかの実施形態では、図４及び図５のために上述した処理において活発にサンプリングされた各電位差計のワイパの位置を計算するために、ファームウェアは、アレイ「エッジ」及び「サンプル」に格納された値を用いるであろう。
【００３６】
　このように、本発明の実施形態を用いることによって、マイクロコントローラ又は他の回路は、ＡＤＣを用いることなく、１又は複数の電位差計を素早く、効率的に読むことができる。
【００３７】
　例証された実施形態が例示的であり、本願開示の読みについて明らかとなるように、種々の変更及び修正をこの実施形態になしてもよいことは、当業者にとって明白であろう。したがって、そのような変更及び修正は、添付の特許請求の範囲、すなわち、請求項に記載の範囲に含まれていると考えられる。
【００３８】
　また、明細書（発明の詳細な説明）は、種々の位置（記載）において「ある（an）」、「一つの（one）」、「もう一つの（another）」あるいは「いくつかの（some）」実施形態に言及してもよい。しかしながら、そのような使用は、そのような各参照が同一の実施形態に向けられ、あるいは、その特徴がただ一つの実施形態にのみ適用することを必然的に意味しないことが理解されるであろう。
【図面の簡単な説明】
【００３９】
【図１】図１（Ａ）は、ゲームコンソール、ゲーム周辺機器、及び表示装置を含むゲーム装置の典型的な構成を示すブロック図である。図１（Ｂ）は、図１（Ａ）に示されるゲーム周辺機器を実装するために一般的に用いられる一方法を示すブロック図である。図１（Ｃ）は、図１（Ａ）に示すゲーム周辺機器を実装するために一般的に用いられるもう一つの方法を示すブロック図である。
【図２】図２（Ａ）は、本発明の実施形態で検知され得る一つの電位差計に実装される一軸トリガの実例である。図２（Ｂ）は、本発明の実施形態で検知され得る一対の電位差計に実装される二軸サムパッドの実例である。
【図３】本発明の一実施形態の構成例を示すブロック図である。
【図４】本発明の実施形態で用いられ得るプロセスを示すフロー図の例である。
【図５（Ａ）】本発明の実施形態における複数の並列な電位差計をサンプリング可能な装置を示す部分的な概略図である。
【図５（Ｂ）】本発明の実施形態における複数の並列な電位差計のサンプリング処理を実行するときの図５（Ａ）に示す装置によって用いられるいくつかのビットマップパターンの例を示す。
【図１】
2004144737.tif 000003
【図２】
2004144737.tif 000004
【図３】
2004144737.tif 000005
【図４】
2004144737.tif 000006
【図５（Ａ）】
2004144737.tif 000007
【図５（Ｂ）】
2004144737.tif 000008
【外国語明細書】
　　METHOD AND CIRCUIT FOR READING A POTENTIOMETER
TECHNICAL FIELD OF THE INVENTION
　　　This disclosure relates to reading a potentiometer, and more particularly, to digitally reading an analog potentiometer without the need for an ADC (Analog to Digital Converter).
BACKGROUND OF THE INVENTION
　　　Traditionally, both PC (Personal Computer) and USB (Universal Serial Bus) gamepads have been simple "digital" devices, made of a set of buttons that are used for both directional control (e.g., arranged as a "thumb pad") and for feature activation such as firing weapons in a game.  More recently, Game Consoles such as the SonyＲ PlaystationＲ and MicrosoftＲ XboxＴＭ have been developed to support gamepads that provide various analog controls, including "thumb sticks" for directional control and "proportional triggers."  Providing such analog controls allows the game user to have a more "natural" gaming experience, which in turn increases his or her enjoyment in playing the games.
　　　Analog position-sensing controls used by some gamepads and joysticks typically use potentiometers to generate a variable voltage based on the position of the control.  This approach requires an expensive ADC to convert the analog signals into digital values that can be manipulated by a microprocessor.  Additionally, the analog sensors are susceptible to various electrical conditions including center-point calibration, temperature drift, and noise.  
　　　Connected XboxＴＭ game peripherals communicate with their game console using a restricted implementation of the USB implementation.  Typically, the peripherals incorporate both a USB peripheral manager to manage the game controller functions and a USB hub to provide an interface for "add-in" modules, such as memory cards, which may be inserted into the peripheral.  Common peripheral implementations use a USB hub microcontroller together with an external ADC (used to read the potentiometers), or use a standard USB hub IC together with a USB peripheral microcontroller having an integrated ADC.
　　　Embodiments of the invention address the concerns discussed above.
SUMMARY OF THE INVENTION
　　　Embodiments of the invention include a method that allows nearly any microcontroller to accurately read a potentiometer with minimal external components.  Some embodiments include two capacitors connected to the respective ends of a potentiometer, which can be charged or discharged simultaneously by a current source or current sink attached to the wiper of the potentiometer.  The time when the voltage of each capacitor charges or discharges to a predetermined level is recorded and subsequently used to determine the position of the wiper on the potentiometer.  Some embodiments of the invention includes, for example, first and second charge storage devices coupled to a physical input device; and a circuit for determining a position of the physical input device by comparing charge or discharge time for the first and second charge storage devices.
BRIEF DESCRIPTION OF THE DRAWINGS
　　　The foregoing and other features and advantages of the invention will become more readily apparent from the following detailed description of a preferred embodiment of the invention which proceeds with reference to the accompanying drawings.
　　　FIG. 1A is a block diagram showing a typical configuration for a gaming device that includes a game console, game peripherals, and a display device.
　　　FIG. 1B is a block diagram showing one commonly used method of implementing the game peripherals illustrated in FIG. 1A.
　　　FIG. 1C is a block diagram showing another commonly used method of implementing the game peripherals illustrated in FIG. 1A.
　　　FIG. 2A is an illustration of a uniaxial trigger implemented with a single potentiometer that can be sensed by embodiments of the invention.
　　　FIG. 2B is an illustration of a biaxial thumbpad implemented with a pair of potentiometers that can be sensed by embodiments of the invention.
　　　FIG. 3 is a block diagram showing an example configuration of an embodiment of the invention.
　　　FIG. 4 is an example flow diagram illustrating processes that can be used in embodiments of the invention.
　　　FIG. 5A is a partial schematic diagram illustrating a device capable of sampling multiple parallel potentiometers according to embodiments of the invention.
　　　FIG. 5B shows examples of some bitmap patterns used by the device shown in FIG. 5A when it is performing sampling operations of multiple parallel potentiometers according to embodiments of the invention.
DETAILED DESCRIPTION
　　　Embodiments of the invention add capacitors with fixed values to the terminal ends of the potentiometer.  The resulting RC circuit will charge or discharge the capacitors at a rate proportional to the variation in resistance.  By measuring the time required for the capacitor voltage to charge or discharge to a threshold voltage level, the variable resistances of the potentiometer, and in turn the position of the potentiometer wiper, can be determined by the microcontroller without the need for an ADC.
　　　FIG. 1A is a block diagram showing a typical configuration for a gaming device 10.  The gaming device 10 includes a display device 12, a game console 20, and one or more game controllers 30.  The game console 20 is structured to receive inputs from up to four game controllers 30, each of which contains a game peripheral unit 31.  The peripheral units 31 communicate with a processing unit 21 which resides on the game console 20 by using a restricted implementation of one of the USB specifications over communication lines 35.  The game console 20 uses the information from one of more of the peripheral units 31 to form a series of video game images, which are sent to the display device 12 over communication line 25 for display to the video game players.
　　　Conventional game peripheral units 31 have typically been implemented in one of two ways, as shown in FIG. 1B and FIG. 1C.  Both implementations include a USB hub 32, which can use, for example, a microcontroller.  The USB hub 32 can be used in conjunction with an external ADC 34 as shown in FIG. 1B.  Alternatively, as shown in FIG. 1C, the ADC 34 may be integrated in a USB peripheral 33, which can also use a microcontroller.   The USB peripheral 33 manages the game controller 30 functions such as position and menu selection, while the USB hub 32 provides additional interfaces to support "add-in" modules such as memory cards.  In both cases, the ADC 34 is used to read the potentiometers (not shown) on the game controllers 30 to ascertain the position of the analog controls manipulated by the video game players.
　　　FIG. 2A is an illustration of a uniaxial trigger 22 implemented using a single potentiometer.  Reading the potentiometer determines the physical position of the trigger relative to a "full rest" position when no force is moving the trigger 22 from its natural position, and a "full on" position when the trigger 22 is moved to the end of its mechanical limits.  Similarly, FIG. 2B shows a biaxial thumbpad 23 implemented with two potentiometers that are used to measure the position of any pressure applied to the face of the thumbpad.  
　　　Generally, for analog controls associated with game controllers, one potentiometer is required for each axis of movement.  For example, the trigger 22 of FIG. 2A requires only one potentiometer since movement is restricted to one axis.  However, the thumbpad 23 shown in FIG. 2B uses two potentiometers, because two axes are necessary to specify the position of any pressure applied to the face of the thumbpad.
　　　FIG. 3 is a schematic diagram illustrating an embodiment of the invention.  A potentiometer 40 has a first end terminal 42 and a second end terminal 46 that are electrically connected to each end of the conductive track 47 of the potentiometer 40.  The first end terminal 42 is coupled to an input/output pin 52 of a USB hub microcontroller 50, while the second end terminal 46 is coupled to an input/output pin 56.  Additionally, the potentiometer 40 includes a wiper terminal 44 that is electrically connected to the wiper 41 of the potentiometer 40.  The wiper terminal 44 is coupled to an output pin 54 of the USB hub microcontroller 50.
　　　The wiper 41 of potentiometer 40 can be physically attached to the trigger 22 of FIG. 2A, or to one axis of the thumbpad 23 of FIG. 2B, for instance.  Squeezing the trigger 22 or moving the thumbpad 23 causes the wiper 41 to physically travel along the length of the conductive track 47 of potentiometer 40.
　　　The position of the wiper 41 on the conductive track 47 determines the value of a variable resistance 43 by lengthening or shortening the electrical path between the first end terminal 42 and the wiper terminal 44.   The position of wiper 41 on the conductive track 47 also determines the value of a variable resistance 45 by lengthening or shortening the electrical path between the second end terminal 46 and the wiper terminal 44.  The sum of the variable resistances 43, 45 is a constant.
　　　The relative position of the wiper 41 can be determined by signals generated by a circuit coupled to the end terminals 42, 46 and the wiper terminal 44, as discussed in detail below.  Additionally, two capacitors 62, 66 with substantially equal capacitances are respectively coupled between the input/output pins 52, 56 and a reference voltage.  
　　　FIG. 4 is an example flow diagram illustrating how embodiments of the invention can effectively measure the position of an analog control such as the potentiometer 40 of FIG. 3.  First, in a process 72, the input/output pins 52, 56 and the output pin 54 are driven to a "high" state for a sufficient period of time to ensure that the capacitors 62, 66 are fully charged.  Conversely, the input/output pins 52, 56 and the output pin 54 could be driven to a "low" state for a sufficient period of time to ensure that the capacitors 62, 66 are fully discharged.
　　　At process 74, both input/output pins 52, 56 are configured as inputs.  Next, at process 76, the output pin 54 is set to "low".  This causes the output pin 54 to become a current sink and both of the capacitors 62, 66 simultaneously begin to discharge through their respective variable resistances 43, 45 into the output pin 54 that is configured as the current sink.  Specifically, the capacitor 62 discharges through the variable resistance 43 of the potentiometer 40 into output pin 54, while the capacitor 66 discharges through the variable resistance 45 of the potentiometer 40 into output pin 54.  Alternatively, if the capacitors 62, 66 were initially fully discharged at process 72, setting the output pin 54 to "high" would cause the output pin 54 to function as a current source and the capacitors 62, 66 would simultaneously start to charge, each through their respective variable resistances 43, 45.
　　　Next, a check 78 determines if a state change occurred at either of the input/output pins 52, 56.  For example, in the case where fully charged capacitors 62, 66 are discharging, the state change occurs when either of the capacitors 62, 66 discharges past a predetermined threshold level.  Check 78 periodically samples the voltage at input/output pins 52, 56 and compares the sampled voltage to the predetermined threshold level to determine if a state change from high to low has occurred.  Conversely, if the capacitors 62, 66 were instead simultaneously charged from a fully discharged state, process 78 would operate to detect changes from a low state to a high state on input/output pins 52, 56.  The actual time required for the capacitors 62, 66 to charge or discharge to a threshold level is a function of the variable resistances 43, 45 that are determined by the position of the wiper 41 of potentiometer 40.
　　　General purpose input/output pins provided by microcontrollers may support either TTL or CMOS levels which can be used for threshold detection, but embodiments of the invention can be used even if the microcontroller only supports a single voltage level.  In any event, it is typically more desirable to detect a voltage threshold that is greater than zero, since the polling process then occurs during the portion of the discharging or charging waveform that most approximates a linear function.
　　　According to process 80, when the first state change is detected from either input/output pin 52 or input/output pin 56, a first timestamp from a free-running timer 58 located in microcontroller 50 is stored.  The timer 58 could also be separate from the microcontroller 50.  For example, firmware executing on the USB hub microcontroller 50 can store the present state of the timer 58.  Meanwhile, a check 82 continues to monitor for a state change on the input/output pin 52 or 56 that has not yet changed state.  When that event occurs, as indicated at process 84, a second timestamp from the free-running timer 58 is stored, for example, by the firmware.
　　　In an alternate process, the timer 58 could be started when the first state change event occurred, and stopped when the second state change event occurred. 
　　　Finally, at process 86, the position of the analog control can be calculated by comparing the stored timestamp values.  For example, the position may be determined by subtracting the timestamp triggered by the state change at input/output pin 52 from the timestamp triggered by the state change at input/output pin 56.  Alternatively, the position could also be determined by subtracting the timestamp triggered by the state change at input/output pin 56 from the timestamp triggered by the state change at input/output pin 52.  There is no difficulty with using either method as long as the same method is used consistently.
　　　In the calculation performed at process 86, a difference of zero indicates the potentiometer is in the center position.  Positive or negative values merely indicate which of the variable resistances in potentiometer 40 was greater.  For example, if the chosen method was to subtract the timestamp obtained from input/output pin 52 from the timestamp obtained from input/output pin 56 and the resulting difference was negative, it follows that the timestamp obtained from input/output pin 56 was chronologically earlier than the timestamp obtained from input/output pin 52.  This necessarily means that capacitor 66 required less time to charge or discharge to a threshold level than capacitor 62.  Since the capacitance values of the two capacitors 62, 66 are substantially equal the conclusion must be that variable resistance 45 has a smaller value than variable resistance 43.
　　　The full scale value is determined using the constant sum of the variable resistances 43, 45, the capacitance values of the capacitors 62, 66, and the clock frequency of the free running timer.  With the difference between the two timestamps and the full scale value, the microcontroller can accurately determine the position of the potentiometer.     
　　　In the embodiment of the present invention represented by check 78 and check 82 in FIG. 4, polling loops are preferred to interrupts because interrupts typically exhibit variable latencies.  The variable latencies can create a variation of several microseconds in the time between the event taking place and timestamp being recorded, which could seriously affect the accuracy of the potentiometer readings.  The time through the polling loops should be as close to equal as possible each time the loop is executed, regardless of the route taken through any of the program branches.  Generally, when polling loops are used, interrupts should be turned off, to ensure the polling is not interrupted.  Interrupts could also be turned on, but in that case the Interrupt Service Routine for all enabled interrupts must be aware that they might be interrupting the potentiometer reading.  In that case a message passing protocol allowing the potentiometer reading to be aborted or discarded if an interrupt takes place while the reading is being taken should be used.
　　　In another embodiment, a microcontroller that features "capture timers" can be used.  In that case polling the two input/output pins 52, 56 for a state change becomes unnecessary, as the capture timers can be configured to automatically record the timestamp.  Using this method would further reduce the variation in time between a state change and the recording of the timestamp and subsequently improve the measurement accuracy.
　　　The described embodiments of the present invention allow almost any microcontroller to accurately measure the position of the potentiometer wiper, without the need for costly external components or specialized on-chip features.  Additionally, the embodiments of the invention yield much more accurate readings than other conventional approaches.  A further advantage to embodiments of the invention is that the effects of aging of the potentiometer are minimized.  For example, because the two capacitors 62, 66, of FIG. 3 are being charged or discharged simultaneously, the effect of the loss of contact between the wiper 41 and the conductive track 47 of the 
potentiometer 40 as the conductive track 47 wears out over time is substantially reduced.
　　　Other advantages are that no center-position calibration of the potentiometer is required, since the position is inherently considered centered when the difference between the two timestamps is zero.  There is also increased immunity to temperature drift and to high and low frequency noise.
　　　FIG. 5A is a partial schematic diagram illustrating a device capable of sampling multiple parallel potentiometers according to embodiments of the invention.  Parallel sample operation is achieved by connecting eight input/output channels RC1-RC8 to a common Port 1 that can be read in parallel by the microcontroller.  Similarly, the four output channels R1-R4 are connected to a common Port 2.
　　　FIG. 5B shows examples of some bitmap patterns used by the device shown in FIG. 5A when it is performing sampling operations of multiple parallel potentiometers according to embodiments of the invention.  
　　　With reference to FIGS. 5A and 5B, a variable active' is loaded with a bitmap pattern 90 indicating the inputs that should be actively sampled.  Here, the most significant bit of bitmap pattern 90 corresponds to channel RC8 and the least significant bit of bitmap pattern 90 corresponds to channel RC1.  Bitmap pattern 90 indicates that channels RC1, RC2, RC3, and RC4 are to be read and channels RC5-RC8 are not to be read.  The microcontroller 50 reads each of the required channels simultaneously by reading Port 1.
　　　If none of the input/output channels sampled have transitioned to a low state, the resulting sample of Port 1 will appear as in bitmap pattern 91.  AND'ing bitmap pattern 91 with the active' variable (bitmap pattern 90) results in bitmap pattern 92.  Subsequently XOR'ing bitmap pattern 92 with the active' variable results in bitmap 
pattern 93, indicating that none of the channels monitored has transitioned from a high state to low state.
　　　Conversely, if one of the channels (in this case RC2) has transitioned from a high to low state, the resulting sample of Port 1 appears as in bitmap pattern 94.  As in the case for no transition, bitmap pattern 94 is first AND'ed with the active' variable (bitmap pattern 90) to achieve bitmap pattern 95.  Bitmap pattern 95 is then XOR'ed with the active' variable to achieve bitmap pattern 96.  Bitmap pattern 96 indicates that channel RC2 has transitioned from a high to low state.  To minimize processing overhead during a time-critical period, in some embodiments bitmap pattern 96 can be saved to a variable edges' and a snapshot of the free-running timer saved to a variable sample'.  Both the edges' and sample' variables are arrays that can hold as many snapshots as the maximum number of entries.  After a transition is detected, bitmap pattern 96 is inverted to achieve bitmap pattern 97, which is then AND'ed with the active' variable to achieve bitmap pattern 98.  Bitmap pattern 98 then becomes the new active' variable, indicating that channel RC2 no longer must be sampled.  
　　　The process then continues as described above until all the active channels have transitioned.  This is indicated when the active' variable is equal to zero.  At this time, in some embodiments of the invention firmware will use the values stored in the arrays edges' and sample' to calculate the wiper position for each potentiometer that was actively sampled according to the process described above for FIGS. 4 and 5.
　　　Thus, by using embodiments of the invention, a microcontroller or other circuit can quickly and effectively read a potentiometer or potentiometers without using an ADC.
　　　It will be apparent to those skilled in this art that the illustrated embodiments are exemplary and that various changes and modifications may be made thereto as become apparent upon reading of the present disclosure.  Accordingly, such changes and modifications are considered to fall within the scope of the appended claims.  
　　　Further, the specification may refer to "an", "one", "another", or "some" embodiment(s) in various locations.  It will be understood, however, that such use does not necessarily mean that each such reference is directed to the same embodiment(s), or that the features thereof only apply to a single embodiment.  
CLAIMS
1.  Ａ method for determining a relative position of a wiper of a potentiometer, comprising:
recording a first timer reading when a voltage of a first capacitor that is coupled to a first end of the potentiometer reaches a first reference voltage;
recording a second timer reading when a voltage of a second capacitor that is coupled to a second end of the potentiometer reaches the first reference voltage; and
comparing the first and second timer readings.
2.  The method of claim 1, wherein the first capacitor discharges current through the wiper, and wherein the wiper is coupled to a current sinking pin of a microcontroller.
3.  The method of claim 2, wherein the microcontroller is a Universal Serial Bus microcontroller.  
4.  The method of claim 1, wherein recording a first timer reading comprises polling an input pin of a microcontroller coupled to the first end of the potentiometer for a change in logic state.
5.  The method of claim 1, further comprising, prior to recording the first or second timer reading, charging at least one of the capacitors to a second reference voltage through the wiper.
6.  The method of claim 1 wherein the first capacitor and the second capacitor discharge current simultaneously.
7.  The method of claim 1, wherein comparing the first and second timer readings comprises subtracting one of the timer readings from the other timer reading.
8.  A method for determining a relative position of a wiper of a potentiometer, comprising:
charging, to a first reference voltage, a first capacitor coupled between a first end of the potentiometer and a second reference voltage;
charging, to the first reference voltage, a second capacitor coupled between a second end of the potentiometer and the second reference voltage;
discharging the first and second capacitor; and
comparing a first timer reading taken when a voltage of the first capacitor equals a third reference voltage to a second timer reading taken when a voltage of the second capacitor equals the third reference voltage.
9.  The method of claim 8, wherein discharging the first capacitor comprises discharging through the wiper, and wherein the wiper is coupled to a current sinking pin of a microcontroller.
10.  The method of claim 9, wherein the microcontroller is a Universal Serial Bus microcontroller.
11.  The method of claim 8, further comprising polling a microcontroller input pin coupled to the first capacitor to determine when the voltage of the first capacitor equaled the third reference voltage.
12.  The method of claim 8, wherein comparing the first timer reading to the second timer reading produces a result, the method further comprising interpolating the result on a scale ranging from a number representing a maximum negative displacement position of the wiper to a number representing a maximum positive displacement of the wiper.
13.  The method of claim 8, wherein discharging the first and second capacitor occurs simultaneously.
14.  A device for reading a potentiometer, comprising:
a first capacitor coupled to a first end of the potentiometer;
a second capacitor coupled to a second end of the potentiometer;
a voltage generator coupled to a wiper of the potentiometer;
a timer structured to measure a first time period for the first capacitor to change a voltage from a first level to a second level, and structured to measure a second time period for the second capacitor to change a voltage from the first level to the second level; and
a comparator structured to compare the first time period to the second time period.
15. The device of claim 14, wherein the comparator is structured to subtract the second time period from the first time period.
16. The device of claim 14, further comprising a charging circuit structured to charge the capacitors to the first reference level.
17. The device of claim 16, wherein the charging circuit is structured to source current through the wiper.
18. The device of claim 14, wherein the wiper is coupled to a pin of a microcontroller.
19. The device of claim 18, wherein the pin is a programmable input/output pin of a USB microcontroller.
20. The device of claim 14, further comprising a second comparator structured to compare a difference between the first time period and the second time period to a reference representing a full scale potentiometer reading.
ABSTRACT OF THE DISCLOSURE
Embodiments of the invention describe a method and apparatus used to determine the position of a wiper on a potentiometer without the need for an external ADC.  Two capacitors are each connected to an end of a potentiometer, and then are charged or discharged simultaneously by a current source or current sink attached to the wiper of the potentiometer.  The time required for each of the capacitors to charge or discharge to a threshold voltage level is measured and subsequently used to determine the position of the wiper on the potentiometer.
【図１】
2004144737.tif 000009
【図２】
2004144737.tif 000010
【図３】
2004144737.tif 000011
【図４】
2004144737.tif 000012
【図５ａ】
2004144737.tif 000013
【図５ｂ】
2004144737.tif 000014