説明

キースキャン装置および電子機器

【課題】キースキャン装置に繋がるCPUの負担を軽減することができるキースキャン装置、およびこのキースキャン装置とCPUとを有する電子機器を提供する。
【解決手段】行スキャン部66がキースキャンを実行し、スキャンした結果をスキャン結果記憶部16に記憶する。前回スキャンした結果と今回スキャンとの比較を行い、スキャン結果変化記憶部18に変化有無情報を記憶する。スキャン許可部61は、CPU70から設定される自動スキャン許可レジ62の許可状態と、スキャン待ちタイマレジ63の待ち時間と、チャタリング除去回路15の押下検出信号と、スキャン結果変化記憶部18の変化有無情報とに基づいて、行スキャン部66のキースキャン実行を許可する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マトリクスキーのキースキャン装置、およびこのキースキャン装置とCPUとを有する電子機器に関する。
【背景技術】
【0002】
マトリクスキーのキースキャンをキースキャン装置が行い、結果を外部のCPU等へ通知する構成がある。
例えば、特許文献1は、キースキャン装置の一例を開示しており、外部(CPU)との割込みI/Fを有する。特許文献1の図3、図4に示されるように、キースキャン装置は、まず、キー押下開始を検出し、それをトリガとしてキースキャンしてスキャン結果であるマトリクスの状態をキーレジスタに記憶し、割込みで外部へ通知する。外部は、割込みを受信すると、キーレジスタを読んでスキャン結果を認識する。
【0003】
次に、外部は、キー押下の継続状態を確認するために、キースキャン装置に対してスキャン要求を送出する。キースキャン装置は、スキャン要求を受信すると、それをトリガとしてキースキャンしてスキャン結果をキーレジスタに記憶し、割込みで外部へ通知する。外部は、割込みを受信すると、キーレジスタを読んでスキャン結果を認識する。
【0004】
また、キースキャン装置は、キー開放開始も検出し、それをトリガとしてキースキャンしてスキャン結果をキーレジスタに記憶し、割込みで外部へ通知する。外部は、割込みを受信すると、キーレジスタを読んでスキャン結果を認識する。
【0005】
特許文献1では、キー押下の継続状態を確認するためには、外部は、何回もキースキャン装置へスキャン要求を送信する必要がある。また、キー開放開始のタイミングはユーザのキー操作次第であり、キー開放開始によるキースキャンと外部からのスキャン要求によるキースキャンとは非同期に発生し、重なるおそれがあり、外部は、この重なりが発生しないように制御する必要がある。また、外部は、キーレジスタを読んでスキャン結果を認識するが、マトリクス状態をそのまま記憶したキーレジスタなので、押下キーの認識に手間取るという問題がある。
【0006】
特許文献2は、キー入力装置の一例を開示しており、CPUとのI/Fを有する。キー入力装置は、マトリクスキーのキーが押下されると、そのキーに応じたキーコードを作成してラッチ回路に保持しCPUはそのラッチ回路を読んでキーコードを認識している。
特許文献2では、キーコードがどのようなものであり、どのように生成するかの記載がない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2000−227831号公報(段落0028〜0034、図3、図4)
【特許文献2】特開平3−90924号公報(頁2、第1図)
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1、2のキースキャン装置(キー入力装置)では、外部(CPU)の処理負担が増えるという問題がある。また、マトリクスキー自体は元来、本質的にゴーストキーが発生する。すなわち、マトリクスキーの交点を単純にキーで短絡する方式のマトリクスキーのキースキャン装置では、実際に同時に押下されたキーの数が3個以上で特定の配置条件の場合に、キースキャンの結果として、実際に同時に押下されたキー以外のキーも押下されたと認識してしまうゴーストキーが原理的に発生する。従来は、ゴーストキーの判断をCPU側で行っており、CPUの処理負担が増えるという問題がある。
【0009】
本発明は、使用者のキー押下開始からキー開放に至るまでを検出する構成において、キースキャン装置に繋がるCPUの負担を軽減することができるキースキャン装置、およびこのキースキャン装置とCPUとを有する電子機器を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明の電子機器は、マトリクスキーと、キースキャン装置へ自動スキャン許可を送信してキースキャン装置からのキー押下開始時の確定キー情報を受信し、再度、キースキャン装置へ自動スキャン許可を送信してキースキャン装置からのキー押下状態変化有り時の確定キー情報を受信するCPUと、CPUからの自動スキャン許可を受信したあとでマトリクスキーのキー押下開始を検出してキースキャンしてキースキャン結果の確定キー情報をCPUへ通知し、再度、CPUからの自動スキャン許可を受信したあとでキースキャン結果の変化を検出するまでキースキャンを繰り返し、変化検出時のキースキャン結果の確定キー情報をCPUへ通知するキースキャン装置とを備えることを特徴とする。
【発明の効果】
【0011】
本発明によれば、キースキャン装置に繋がるCPUの負担を軽減することができる。
【図面の簡単な説明】
【0012】
【図1】本発明の実施例に係る電子機器100のキースキャン関連部分のブロック図。
【図2】本発明の実施例に係るキースキャン装置10のキーコード変換&ゴースト検出部30のブロック図。
【図3】本発明の実施例に係るキースキャン装置10のキーマトリクスVSキーコードカウンタを説明する図。
【図4】ゴーストキー発生の原理を説明する図。
【図5】本発明の実施例に係るキースキャン装置10のゴーストキー検出方法を説明する図。
【図6】本発明の実施例に係る電子機器100のキースキャン装置10とCPU70の動作フローチャート。
【発明を実施するための形態】
【0013】
図1は、本発明の実施例に係る電子機器100のキースキャン関連部分のブロック図である。使用者のキー押下開始からキー開放に至るまでを検出する構成であり、キー押下継続中のキー押下数の変化なども検出する。このために、一連のシーケンス中、所定のトリガ条件で複数回のキースキャンを行う。
【0014】
電子機器100のキースキャン関連部分は、大きく分けると、マトリクスキー1、キースキャン装置10、CPU70等から構成される。CPU70は、図示しないROM、RAMなどを有し、ROMに記憶されているソフトウェアに基づいて処理を実行する。
【0015】
マトリクスキー1は、8行8桁のマトリクス構成で、各交点にキーがあり、押下されたキーの交点が短絡する。
キースキャン装置10は、8個のトランジスタ11、8個の抵抗12、8個のシュミット回路13、論理和ゲート14、チャタリング除去回路15、8行分のスキャン結果記憶部16、比較回路17、8行分のスキャン結果変化記憶部18、スキャン制御部20等から構成される。
【0016】
スキャン制御部20は、キーコード変換&ゴースト検出部30、キーコードレジスタ32、割込み制御部50、スキャン許可部61、自動スキャン許可レジスタ62、スキャン待ちタイマレジスタ63、スキャン行数レジスタ64、スキャン行幅レジスタ65、行スキャン部66等を有する。
【0017】
8個のトランジスタ11は、マトリクスキー1の行0〜行7をドライブして、各行をGNDレベル出力する。8個の抵抗12はプルアップ用である。マトリクスキー1の桁0〜桁7からは、ドライブされた行(GNDレベルに落ちる)の押下されたキーに該当する桁がGNDレベル信号となって出力される。すなわち、キー押下状態でLowレベル、キー開放状態でHighレベルである。
【0018】
この信号は、使用者のキー押下圧力状態やキーのON抵抗の影響でロジックレベルではないアナログ信号状態なので、8個のシュミット回路13でヒステリシス波形整形する。いずれかのキーが押下されると、論理和ゲート14、チャタリング除去回路15を経て、キー押下が検出される。
【0019】
スキャン許可部61は、所定の条件で、行スキャン部66を許可して、行スキャンを行わせる。行スキャン部66は、マトリクスキー1の行0〜行7を順次ドライブし、各行毎の列0〜列7の信号を、スキャン結果記憶部16の行0レジスタ〜行7レジスタに記憶する。全スキャンの所用時間はごく短時間で終了する。スキャンした結果、スキャン結果記憶部16には、マトリクスキー1の各キーの押下/開放状態が記憶される。1個のキー押下であれ、複数個のキーの同時押しであれ、それらの状態がそのまま記憶される。
【0020】
比較回路17は、スキャン結果記憶部16に記憶された前回スキャン時の全キーの状態と、今回スキャン時のシュミット回路13からの全キーの状態とを比較し変化を判断して、全キー分の変化有無情報をスキャン結果変化記憶部18に記憶する。この変化有無情報(*1)は、スキャン許可部61でスキャン許可条件の1つとして判断される。
【0021】
キーコード変換&ゴースト検出部30は、スキャン結果記憶部16に記憶された全キーの状態を読み出して、キーコード変換とゴースト検出を行い、キーコードレジスタ32に記録する。キーコードレジスタ32は、CPU70とのインターフェース用であり、CPU70がこのレジスタを読んで、押下キーを特定する。キーコード変換&ゴースト検出部30の詳細は、あと(図2〜図5)で説明する。
【0022】
自動スキャン許可レジスタ62、スキャン待ちタイマレジスタ63、スキャン行数レジスタ64、スキャン行幅レジスタ65は、CPU70とのインターフェース用である。CPU70がこれらのレジスタに設定し、スキャン制御部20は、これらのレジスタの内容に基づいてスキャンを制御する。
【0023】
自動スキャン許可レジスタ62は、スキャン許可部61でのスキャン許可条件の1つとして判断される。スキャン待ちタイマレジスタ63も、スキャン許可部61でのスキャン許可条件の1つとして判断される。
【0024】
スキャン行数レジスタ64は、行0〜行7の内、スキャンする行数を設定するものであり、行スキャン部66は、このレジスタの行数分のスキャンを行う。スキャン行幅レジスタ65は、1行あたりのスキャン時間を設定するものであり、行スキャン部66は、このレジスタの行幅時間で1行あたりのスキャンを行う。
【0025】
キースキャン装置10とCPU70とのインターフェースは、割込み信号とI2Cバスである。
【0026】
図2は、本発明の実施例に係る電子機器100のキースキャン装置10のキーコード変換&ゴースト検出部30のブロック図である。キーコード変換&ゴースト検出部30は、スキャン結果記憶部16(図1)に記憶された全キー64個の情報を基に、キーコード変換とゴースト検出を行う。
【0027】
キーコード変換に関係する部分は、スキャン結果記憶部16、キーコードカウンタ31、キーコードレジスタ32、同時押下数カウンタ33である。
ゴーストキー検出に関係する部分は、スキャン結果記憶部16、行内押下数カウンタ41、8個の論理積ゲート42、列0〜列7それぞれ用の8個のGFCT43(ゴースト検出カウンタ)、列0〜列7それぞれ用の8個のGFフラグ44(ゴースト検出フラグ)、論理和ゲート45、ゴースト判定部46である。
【0028】
[キーコード変換]
図2、および図3のキーマトリクスVSキーコードカウンタの図も用いて説明する。
スキャン結果記憶部16には、全キーである8行×8桁=64ビットの押下情報が記憶されている。スキャン結果記憶部16の全64ビットを順次、(行,列)=(0,0)〜(7,7)の順で、読出しCk64個で読出しながら、その読出しCk64個をキーコードカウンタ31でカウントする。したがって、キーコードカウンタ31の値は、(行,列)=(0,0)〜(7,7)のマトリクスキーの64個のキーに一義的に割り振られた値、すなわち、キーコードとなる。
【0029】
図3において、キーコードカウンタ31の初期値は40h(16進数)の例であり、40hから開始する。40hが(行,列)=(0,0)のキーのキーコードである。(行,列)=(0,0)〜(7,7)の順に進むにつれてカウントアップし、(行,列)=(7,7)のキーのキーコードは7Fhである。
【0030】
キーコードレジスタ32は、スキャン結果記憶部16の押下情報が押下有のときのキーコードカウンタ31の値を記憶することにより、押下されたキーのみのキーコードが記憶される。キーコードレジスタ32は、最大4個、すなわち同時押し4個までのキーコードが記憶される。
【0031】
図3において、スキャン結果記憶部16の二重枠のキーのキー押下情報が押下有の場合、スキャン結果記憶部16を順次読み出しながら、スキャン結果記憶部16の二重枠の読出し時点において、それぞれ押下有が検出されて、その時のそれぞれのキーコードカウンタ31の値の41hと48hの2個がキーコードレジスタ32に記憶される。
【0032】
同時押下数カウンタ33は、64個のキーの内の押下有の個数をカウント、すなわち、同時押しの個数をカウントし、この例では2個を個数情報として割込み制御部50へ送る。割込み制御部50は、同時押し個数に応じた割込み種別情報のINTKEY0(キー押下0個)、INTKEY1(キー1個)、INTKEY2(キー2個)、INTKEY3(キー3個)、INTKEY4(キー4個以上)を作成する。
【0033】
このように、簡単なハードウェア構成により、押下検出されたキーのキーコード変換と、同時押下数も検出することができる。
【0034】
[ゴーストキー検出]
図2、および図4のゴーストキー発生の原理図と図5のゴーストキー検出方法の図も用いて説明する。
【0035】
図4は、ゴーストキー発生の原理を説明する図である。キーマトリクス1は、マトリクス構成で、各交点にキーがあり、押下されたキーの交点にある1個の行線と1個の列線が短絡する。このような構成のキーマトリクスでは、3個以上のキーが特定の配置で同時押しされた場合、キースキャンの結果、実際に押下されていないキーが押下されたとして検出されてしまう。それがゴーストキーである。
【0036】
ゴーストキーが発生する特定の配置は、使用者により実際に同時押しされた3個のキーにより、2個の行線と2個の列線が全て短絡してしまう配置の場合である。例として、3個の黒丸のA、B、Cが同時押しされると、四角枠のGキーが押下されてないのに、行2は、A、B、Cを経て列5と繋がってしまう。2個の行線(行0と行2)と2個の列線(列2と列5)の全ては、3個のA、B、Cにより短絡されてしまう。
【0037】
この状態で、以下に説明するキースキャンの結果、四角枠のGキーが押下されていないのに押下されたとして検出されてしまう。
キースキャンのステップは、まず、行0のみをGNDレベルにドライブし、列0〜列7情報を読み取ると、行0とB、Cで短絡された列2と列5の信号がGNDレベルとして読み取られ、行0と、列2、列5それぞれの交点であるB、Cのポイントのキーが押下されたとして認識される。
【0038】
次に、順次、行1のみドライブして、行1上はキーで短絡されていないので、列0〜列7情報はHighレベルであり、行1上は、キー押下無しと認識される。
次に、順次、行2のみをGNDレベルにドライブし、列0〜列7情報を読み取ると、行0と行2と列2と列5は、3個のA、B、Cにより全て短絡されているので、列2と列5の信号がGNDレベルとして読み取られ、行2と、列2、列5それぞれの交点である黒丸Aと四角枠Gのポイントのキーが押下されたとして認識される。
【0039】
ゴーストキーが発生する特定の配置は、前述したように、実際に同時押しされた3個のキーにより、2個の行線と2個の列線が相互に短絡してしまう場合であり、たとえば、実際に押下された3個が、図のA、G、Cの場合であっても、同様である。また、A、B、C、Gの4個のキーが実際に同時押しされた場合も、スキャン結果は同じであるが、Gが実際に押下されたかゴーストであるかの区別はつかないのでゴーストキーとして処理する必要がある。
【0040】
スキャンした結果として、4個のキー押下有が検出され、その配置が、図4のA、B、C、Gのように、2個の行線上それぞれに2個のキー押下有、且つ、2個の列線上それぞれに2個のキー押下有が検出されれば、ゴーストキーが含まれていることになる。これがゴーストキー判断の定理である。図4のような配置の場合、A、B、Cの3個のみのキー押下有が検出されることはなく、必ず4個が検出される。もし、使用者により、Aが左の列1にずれたポイントが押下された場合は、スキャン結果、3個が正常に検出される。
【0041】
A、B、C、Gの4個の内、どのキーがゴーストキーであるかは本質的に判別できないが、ゴーストキーが含まれていることを簡単なハードウェア構成で検出する方法について、次に説明する。
図2のゴーストキー検出部分は、前述のゴーストキーの定理を簡単なハードウェアで検出することができる構成である。図2において、前述のキーコード変換で、スキャン結果記憶部16の全64ビットを順次、(行,列)=(0,0)〜(7,7)の順で、読出しCk64個で読出しを行うが、そのキーコード変換の読出しと並行して、ゴーストキー検出を行う。
【0042】
行内押下数カウンタ41は、スキャン結果記憶部16の読出し情報の内、押下有の個数を行単位でカウントするカウンタである。このカウンタは、スキャン結果記憶部16の読出しの行の切替り時のタイミングでクリアされることにより、各行内の押下有の個数をカウントし、カウントが2個以上有りの情報を行単位で出力し、論理積ゲート42の一方の入力に繋がる。
【0043】
論理積ゲート42の他方の入力は、スキャン結果記憶部16の各行毎の列0〜列7の情報であり、スキャン結果記憶部16の読出しの行と同じ行の列0〜列7の出力情報が繋がる。したがって、論理積ゲート42の出力は、行内の押下有の個数が2個以上ある場合のみを条件に各列毎に押下有の条件を満足する場合に出力がアクティブになる。
【0044】
これにより、GFCT43(ゴースト検出カウンタ)は、各列について、論理積ゲート42の出力をカウント、すなわち、行内の押下有の個数が2個以上ある場合のみを条件に各列毎に押下有の個数をカウントする。そして、8個の列のGFCT43の内のいずれかのカウント値が2以上となった場合に、ゴーストキーと判定する。
【0045】
図5は、ゴーストキー検出方法を説明する図である。キースキャンの結果として、スキャン結果記憶部16には、図の二重枠の42h、45h、4Ch、52h、55hのキー押下が検出された例である。この内、42h、45h、52h、55hのキーは、前述したように、いずれかがゴーストキーである。
【0046】
GFCT43の各列のカウント値は、初期値は、いずれも零である。行0確認時は、行0を読み出して、行内押下数カウンタが2個(42h、45h)であることが検出される。2個以上であれば、行0の各列の押下有の42h、45hの情報により、GFCT43列2とGFCT43列5の値がインクリメントされて、各1となる。
【0047】
行1確認時は、行1を読み出して、行内押下数カウンタが1個(4Ch)であることが検出される。2個未満であれば、行1の4Chは押下されているが、GFCT43列4はノーカウントである。
【0048】
行2確認時は、行2を読み出して、行内押下数カウンタが2個(52h、45h)であることが検出される。2個以上であれば、行0の各列の押下有の42h、55hの情報により、GFCT43列2とGFCT43列5の値がインクリメントされて、各2となる。GFCT43のいずれかのカウント値が2個になったことで、ゴーストキーと見なすものであり、GFフラグ44の列2と列5をセットする。
【0049】
図2において、GFフラグ44の出力は、論理和ゲート45を経て、ゴースト判定部46に導かれる。ゴースト判定部46は、ゴーストキーであることを、割込み制御部50へ送る。また、ゴーストキーであることをキーコードレジスタ32に送り、キーコードレジスタ32は、押下有を検出したキーコードのMSB(最上位ビット)を1に設定して、キーコード情報の中にゴーストキー情報を含めて、記憶する。
【0050】
割込み制御部50は、ゴーストキーであることを示すINTKEYGFを作成する。ゴーストキーの原理で説明したように、ゴーストキーは、同時キー押し個数が4個以上検出され、且つ、特定の配置の場合に発生するので、INTKEY0(キー押下0個)、INTKEY1(キー1個)、INTKEY2(キー2個)、INTKEY3(キー3個)では、INTKEYGFは発生せず、正常キーである。INTKEY4(キー4個以上)は単独の場合は正常キーであり、INTKEYGFが発生時は、INTKEY4も発生している。
【0051】
本発明のキーコード変換&ゴースト検出によれば、簡単なハードウェア構成で、キーコード変換とゴースト検出を行うことができる。また、この検出結果をCPU70へ通知するので、CPU70のソフトウェアの処理負担を軽減することができる。
【0052】
図6は、本発明の実施例に係る電子機器100のキースキャン装置10とCPU70の動作フローチャートである。使用者のキー押下開始からキー開放に至るまでを検出するシーケンスであり、キー押下継続中のキー押下数の変化なども検出する。このために、一連のシーケンス中、所定のトリガ条件で複数回のキースキャンを行う。
【0053】
キースキャン装置10とCPU70が相互に連絡してキースキャン制御を行うので、両者の動作フローチャートを併記して説明する。キースキャン装置10側は、スキャン制御部20の機能である。スキャン制御部20の動作ステップは符号Sで示し、CPU70の動作ステップは符号Cで示す。
【0054】
CPU70は、キーの確認が必要となる種々の時点において、開始する。まず、キースキャン装置10に対して、スキャン行数レジスタ64、スキャン行幅レジスタ65、スキャン待ちタイマレジスタ63の値を設定する(ステップC1)。そして、自動スキャン許可レジスタ62を許可状態に設定する(ステップC2)。
【0055】
キースキャン装置10は、開始状態では待機状態であり、自動スキャン許可レジスタ62をチェックし(ステップS1)、許可状態であれば、次に、マトリクスキーのキー押下を待つ(ステップS2)。キー押下開始を検出すると、すなわち、CPU70からの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを第1のトリガ条件として、キースキャンを実行する(ステップS3)。
【0056】
このキースキャン(ステップS3)は、スキャン行数レジスタ64の指定行数と、スキャン行幅レジスタ65の指定行幅で行う。また、スキャン結果から、図2〜図5で説明したキーコード変換&ゴースト検出部30の処理も行わせる。
【0057】
そして、キースキャン装置10は、検出したキーの数とゴーストキー検出結果に応じて、割込みの種別のINTKEY1(キー1個検出)、INTKEY2(キー2個検出)、INTKEY3(キー3個検出)、INTKEY4(キー4個検出)、のいずれかと、またINTKEY4の場合には、ゴーストキーの可能性もあるので、INTKEYGFを指定して、割込み信号をCPU70へ送信し、自動スキャン許可レジスタ62を禁止状態にする(ステップS4)。
【0058】
また、ステップS4では、スキャン結果変化記憶部18のスキャン結果変化有無情報と、キーコード変換&ゴースト検出部30からのキー数とゴースト情報をチェックして、変化有でゴーストならば、待機状態のステップS1へ戻る。
【0059】
変化有でキーの押下数1個、2個、3個、4個以上であれば、次のステップS5へ移行する。
【0060】
CPU70は、ステップC3で割込み有無をチェックしており、所定時間経過しても(ステップC4)、キースキャン装置10から割込みが来なかった場合は、マトリクスキーの押下がまだ無いと判断する(ステップC5)。この判断後、どうするかは、種々の状況に応じて、処理すればよく、例えば、全く異なる処理に移行したり、ステップC4の割込み有無のチェックを再び継続するなどでもよい。
【0061】
CPU70は、ステップC3でキースキャン装置10からの割込みを受信し、INTKEYGFであれば、ゴーストキー処理に入る(ステップC6)。ゴーストキー処理でどうするかは、種々の状況に応じて、処理すればよく、例えば、再び、ステップC1に戻ってもよい。
【0062】
CPU70は、ステップC3で正常キー押下の割込みであるINTKEY1(キー1個検出)、INTKEY2(キー2個検出)、INTKEY3(キー3個検出)、INTKEY4(キー4個検出)、のいずれかを受信すると、キー押下開始と判断して、キースキャン装置10からのキーコードを読み取り、押下されたキーを特定することができる(ステップC7)。
【0063】
次に、CPU70は、キー押下開始されたキーの状態変化を確認するために、自動スキャン許可レジスタ62を許可状態に設定する(ステップC8)。
【0064】
キースキャン装置10は、最初のキースキャン処理であるステップS3、S4のあとは、再び、自動スキャン許可レジスタ62待ち状態(ステップS5)にあり、許可状態を検出すると、これを第2のとりが条件として、キースキャンを実行する(ステップS6)。
【0065】
そして、キースキャン装置10は、スキャン結果変化記憶部18のスキャン結果変化有無情報をチェックする(ステップS7)。変化無の場合、これは、ステップS2のキー押下開始から僅かの時間しか経っていないため、使用者によるキー押下状態がそのまま継続している場合がほとんどであり、その場合は、スキャン待ちタイマレジスタ64の値をタイマに設定して設定時間経過後に、これを第3のトリガ条件として、キースキャンを再度実行する(ステップS6)。
【0066】
このキースキャン装置10のステップS6、S7、S8のキースキャン実行の繰り返しループにより、CPU70は、ステップC8のスキャン許可設定以降は、キースキャンの指示をキースキャン装置10に対して設定する必要がなく、CPU70のソフトウェアの負担を軽減することができる。
【0067】
キースキャン装置10は、ステップS6、S7、S8のキースキャン実行の繰り返しループを行いながら、使用者によるキー開放や他の追加キー押下等を待ち、ステップS7でスキャン結果変化記憶部18のスキャン結果変化が有れば、すなわち、キー状態に変化があったことを意味するので、検出したキーの数とゴーストキー検出結果に応じて、割込みの種別のINTKEY1(キー1個検出)、INTKEY2(キー2個検出)、INTKEY3(キー3個検出)、INTKEY4(キー4個検出)、のいずれかと、またINTKEY4の場合には、ゴーストキーの可能性もあるので、INTKEYGFを指定して、割込み信号をCPU70へ送信し、自動スキャン許可レジスタ62を禁止状態にする(ステップS9)。
【0068】
キースキャン装置10は、ステップS9で変化有でゴーストならば、待機状態のステップS1へ戻る。変化有でキー0個であれば、キー開放を意味するので、やはり、待機状態のステップS1へ戻る。変化有で正常キーであれば、ステップS5へ戻り、第2のトリガ条件であるCPU70からの自動スキャン許可レジスタ62の許可を待つ。
【0069】
CPU70は、ステップC8で、キースキャン装置10に対して、自動スキャン許可レジスタ62の許可設定を行った後は、キースキャン装置10が自動で検出してくれるキー開放や他の追加キー押下やゴーストキー報告である割込みを待つ(ステップC9)のみでよく、ソフトウェアの負担を軽減することができる。
【0070】
CPU70は、ステップC8で、割込みを受信すると、キー押下状態に変化有と判断し、INTKEY0であれば、キー開放に伴う処理を行う(ステップC11)。キー開放に伴う処理は、ステップC1へ戻って再び、キースキャン装置10に対して、キー押下開始のチェックの指示を行ってもよいし、全く別の処理に移行してもよい。
【0071】
CPU70は、ステップC8で、INTKEYGFであれば、ゴーストキーに伴う処理を行う(ステップC10)。
【0072】
CPU70は、ステップC8で、INTKEY1、2、3、4の正常キーであれば、キーコードを読み取って(ステップC12)、そのキーに応じた処理を行い、ステップC8へ戻る。
【0073】
CPU70は、ステップC8で、キースキャン装置10に対して、再び、自動スキャン許可レジスタ62を許可状態に設定して、ステップS6、S7、S8の繰り返しのキースキャンを実行させ、キー開放またはゴースト検出まで待つ。
【0074】
以上のステップにより、キー押下からキー開放までの一連のキースキャンが実行されて、キー開放により、CPU70、キースキャン装置10共に初期のステップに戻る。
【0075】
本発明の実施例によれば、CPU70は、キースキャン装置10に対して、キー押下開始を知るために、最初の自動スキャン許可設定を行い、キースキャン装置10がキー押下開始を検出して、CPU70へ通知する。CPU70は、キー押下開始を知ったあとは、キー状態の変化を知るために、2回目の自動スキャン許可設定を行うだけで、キースキャン装置10がキー押下数の変化やキー開放までのキー状態をチェックして、CPU70へ通知する。したがって、CPU70のソフトウェアの負担を軽減することができる。
【0076】
なお、本発明の電子機器100は、携帯電話機、カメラ、ノートパソコンなどのマトリクスキーを持つ機器に適用することができる。
【符号の説明】
【0077】
1 マトリクスキー
10 キースキャン装置
11 トランジスタ
12 抵抗
13 シュミット回路
14 論理和ゲート
15 チャタリング除去回路
16 スキャン結果記憶部
17 比較回路
18 スキャン結果変化記憶部
20 スキャン制御部
30 キーコード変換&ゴースト検出部
31 キーコードカウンタ
32 キーコードレジスタ
33 同時押下数カウンタ
41 行内押下数カウンタ
42 論理積ゲート
43 GFCT
44 GFフラグ
45 論理和ゲート
46 ゴースト判定部
50 割込み制御部
61 スキャン許可部
62 自動スキャン許可レジスタ
63 スキャン待ちタイマレジスタ
64 スキャン行数レジスタ
65 スキャン行幅レジスタ
66 行スキャン部
70 CPU
100 電子機器

【特許請求の範囲】
【請求項1】
マトリクスキーと、
キースキャン装置へ自動スキャン許可を送信してキースキャン装置からのキー押下開始時の確定キー情報を受信し、再度、キースキャン装置へ自動スキャン許可を送信してキースキャン装置からのキー押下状態変化有り時の確定キー情報を受信するCPUと、
CPUからの自動スキャン許可を受信したあとでマトリクスキーのキー押下開始を検出してキースキャンしてキースキャン結果の確定キー情報をCPUへ通知し、再度、CPUからの自動スキャン許可を受信したあとでキースキャン結果の変化を検出するまでキースキャンを繰り返し、変化検出時のキースキャン結果の確定キー情報をCPUへ通知するキースキャン装置と
を備えることを特徴とする電子機器。
【請求項2】
前記キースキャン結果の変化は、キー押下継続中の押下キーの変化および全キー開放であることを特徴とする請求項1記載の電子機器。
【請求項3】
前記CPUへの通知は、キー情報と同時押下キー数情報とゴーストキー情報の1乃至複数であることを特徴とする請求項1記載の電子機器。
【請求項4】
前記繰り返しキースキャンの間隔は、CPUからキースキャン装置への設定値に基づくことを特徴とする請求項1記載の電子機器。
【請求項5】
マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とCPUを有する電子機器であって、
前記キースキャン装置は、
第1、第2、第3のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、該変化無を検出するスキャン結果変化検出部と、
キースキャン部起動前の待機状態において、CPUからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第1のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはCPUへ割込み通知した後でCPUからの2度目の自動スキャン許可を受信したことを前記第2のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第3のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはCPUへ割込み通知したあとで前記待機状態にするスキャン制御部とを有し、
前記CPUは、
キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記キースキャン結果情報をキースキャン装置から読み取る
ことを特徴とする電子機器。
【請求項6】
マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とCPUを有する電子機器であって、
前記キースキャン装置は、
第1、第2、第3のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、該変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果として、零を含む押下キー数を検出して、押下キー数別の割込み種別情報を生成する割込み種別情報生成部と、
キースキャン部起動前の待機状態において、CPUからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第1のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはCPUへ前記割込み種別情報と共に割込み通知した後でCPUからの2度目の自動スキャン許可を受信したことを前記第2のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第3のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはCPUへ前記割込み種別情報と共に割込み通知したあとで前記待機状態にするスキャン制御部とを有し、
前記CPUは、
キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記キースキャン結果情報をキースキャン装置から読み取ると共に、前記割込み種別情報により押下キー数を認識する
ことを特徴とする電子機器。
【請求項7】
マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とCPUを有する電子機器であって、
前記キースキャン装置は、
第1、第2、第3のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、該変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーのキー個数分全ての結果を順次読出しながら、読出し個数をカウントするキーコードカウンタと、
前記順次読出し中に押下有のときのキーコードカウンタの値をキーコードとしてキーコード記憶部に記憶させるキーコード変換部と、
キースキャン部起動前の待機状態において、CPUからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第1のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはCPUへ割込み通知した後でCPUからの2度目の自動スキャン許可を受信したことを前記第2のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第3のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはCPUへ割込み通知したあとで前記待機状態にするスキャン制御部とを有し、
前記CPUは、
キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記キーコード記憶部のキーコードをキースキャン装置から読み取る
ことを特徴とする電子機器。
【請求項8】
マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とCPUを有する電子機器であって、
前記キースキャン装置は、
第1、第2、第3のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、該変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が2以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が2以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部と、
キースキャン部起動前の待機状態において、CPUからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第1のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはCPUへ割込み通知した後でCPUからの2度目の自動スキャン許可を受信したことを前記第2のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第3のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはCPUへ割込み通知したあとで前記待機状態にするスキャン制御部とを有し、
前記CPUは、
キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記ゴーストキー情報をキースキャン装置から読み取る
ことを特徴とする電子機器。
【請求項9】
前記キースキャン装置は、さらに、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が2以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が2以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部とを有し、
前記スキャン制御部は、
前記割込み種別情報に前記ゴーストキー情報を含ませる
ことを特徴とする請求項6記載の電子機器。
【請求項10】
前記キースキャン装置は、さらに、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が2以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が2以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部とを有し、
前記キーコード変換部は、
前記キーコードに前記ゴーストキー情報を含ませる
ことを特徴とする請求項7記載の電子機器。
【請求項11】
前記CPUは、
前記キースキャン装置に対して、キースキャン起動の前記第3のトリガ条件の所定待ち時間と、キースキャンのスキャン行数と、キースキャンの行幅時間を設定し、
前記キースキャン装置は、
前記CPUから設定された所定待ち時間とスキャン行数と行幅時間に基づいて、キースキャンを実行する
ことを特徴とする請求項5乃至8のいずれか1項に記載の電子機器。
【請求項12】
CPUからの自動スキャン許可を受信したあとでマトリクスキーのキー押下開始を検出してキースキャンしてキースキャン結果の確定キー情報をCPUへ通知し、再度、CPUからの自動スキャン許可を受信したあとでキースキャン結果の変化を検出するまでキースキャンを繰り返し、変化検出時のキースキャン結果の確定キー情報をCPUへ通知するキースキャン装置。
【請求項13】
前記キースキャン結果の変化は、キー押下継続中の他のキー押下および全キー開放であることを特徴とする請求項12記載のキースキャン装置。
【請求項14】
前記CPUへの通知は、キー情報と同時押下キー数情報とゴーストキー情報の1乃至複数であることを特徴とする請求項12記載のキースキャン装置。
【請求項15】
前記繰り返しキースキャンの間隔は、CPUからキースキャン装置への設定値に基づくことを特徴とする請求項12記載のキースキャン装置。
【請求項16】
外部のマトリクスキーとCPUとのそれぞれのインターフェース部を有するキースキャン装置であって、
第1、第2、第3のトリガ条件のいずれかで起動されて前記マトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、該変化無を検出するスキャン結果変化検出部と、
キースキャン部起動前の待機状態において、前記CPUからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第1のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはCPUへ割込み通知した後でCPUからの2度目の自動スキャン許可を受信したことを前記第2のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第3のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはCPUへ割込み通知したあとで前記待機状態にするスキャン制御部と
を備えることを特徴とするキースキャン装置。
【請求項17】
外部のマトリクスキーとCPUとのそれぞれのインターフェース部を有するキースキャン装置であって、
第1、第2、第3のトリガ条件のいずれかで起動されて前記マトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、該変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果として、零を含む押下キー数を検出して、押下キー数別の割込み種別情報を生成する割込み種別情報生成部と、
キースキャン部起動前の待機状態において、CPUからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第1のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはCPUへ前記割込み種別情報と共に割込み通知した後でCPUからの2度目の自動スキャン許可を受信したことを前記第2のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第3のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはCPUへ前記割込み種別情報と共に割込み通知したあとで前記待機状態にするスキャン制御部と
を備えることを特徴とするキースキャン装置。
【請求項18】
外部のマトリクスキーとCPUとのそれぞれのインターフェース部を有するキースキャン装置であって、
第1、第2、第3のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、該変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーのキー個数分全ての結果を順次読出しながら、読出し個数をカウントするキーコードカウンタと、
前記順次読出し中に押下有のときのキーコードカウンタの値をキーコードとしてキーコード記憶部に記憶させるキーコード変換部と、
キースキャン部起動前の待機状態において、CPUからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第1のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはCPUへ割込み通知した後でCPUからの2度目の自動スキャン許可を受信したことを前記第2のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第3のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはCPUへ割込み通知したあとで前記待機状態にするスキャン制御部と
を備えることを特徴とするキースキャン装置。
【請求項19】
外部のマトリクスキーとCPUとのそれぞれのインターフェース部を有するキースキャン装置であって、
第1、第2、第3のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、該変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が2以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が2以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部と、
キースキャン部起動前の待機状態において、CPUからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第1のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはCPUへ割込み通知した後でCPUからの2度目の自動スキャン許可を受信したことを前記第2のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第3のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはCPUへ割込み通知したあとで前記待機状態にするスキャン制御部と
を備えることを特徴とするキースキャン装置。
【請求項20】
さらに、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が2以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が2以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部とを有し、
前記スキャン制御部は、
前記割込み種別情報に前記ゴーストキー情報を含ませる
ことを特徴とする請求項17記載のキースキャン装置。
【請求項21】
さらに、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が2以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が2以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部とを有し、
前記キーコード変換部は、
前記キーコードに前記ゴーストキー情報を含ませる
ことを特徴とする請求項18記載のキースキャン装置。
【請求項22】
さらに、
前記キースキャン起動の前記第3のトリガ条件の所定待ち時間と、キースキャンのスキャン行数と、キースキャンの行幅時間を記憶する記憶部を有し、
前記CPUから前記記憶部に設定された所定待ち時間とスキャン行数と行幅時間に基づいてキースキャンを実行する
ことを特徴とする請求項12乃至15のいずれか1項に記載のキースキャン装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−171811(P2011−171811A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−31216(P2010−31216)
【出願日】平成22年2月16日(2010.2.16)
【出願人】(310022372)富士通東芝モバイルコミュニケーションズ株式会社 (219)
【Fターム(参考)】