以下、印刷システムの一実施形態について、図面を参照して説明する。
図1に示すように、電子機器の一例としてのプリンター11(印刷装置)は、USB(Universal Serial Bus)規格上のUSBデバイス11A(図4参照)として機能する。図1に示すプリンター11は、USBホスト30Aとして機能するホスト装置30と通信ケーブルの一例であるUSBケーブル35を通じて通信可能に接続するためにそのコネクター35A(端子)が挿抜可能に接続されるUSBコネクター12を備えている。USBコネクター12は、電源供給路としての電源線(P,G)と、データを送受信するためのデータ線(D+,D−)とを備えている。USBケーブル35のコネクター35AがUSBコネクター12に接続された場合、データ線及び電源線のそれぞれ同じ極同士が接続され、ホスト装置30とデータの送受信及びホスト装置30からの電源供給が可能になる。USBコネクター12は、電源線とデータ線と各種の素子(例えば抵抗)等とを含む通信用の電気回路を有している。この点において、本実施形態では、USBコネクター12により、通信回路の一例が構成される。
ホスト装置30は、例えばパーソナルコンピューター(PC)により構成されるが、USBホスト30Aとして機能する限りにおいて、携帯情報端末(PDA(Personal Digital Assistants))、タブレットPC等のコンピューター類であってもよい。さらにホスト装置30は、USBホスト機能を有するプリンターであってもよい。ホスト装置30は、図1に示すUSBホスト30A及びCPU30Bを備えている。USBホスト30Aのソフトウェア部分の少なくとも一部は例えばCPU30BがUSB用プログラムを実行することで構築される。なお、本実施形態では、USB規格として例えばUSB2.0を用いている。
図1に示すように、プリンター11は、USBコネクター12と電源供給路12Aとデータ線12Bで接続された制御回路13を備えている。また、プリンター11は、制御回路13により充電制御される充電式の電池の一例としての二次電池14と、制御回路13からの指示を受け付ける駆動回路15と、制御回路13の指示によって駆動回路15を介して制御される印刷機構16とを備えている。
図1に示すように、USBコネクター12には、充電用のUSBバッテリーチャージャー40(電源アダプター)のコネクター40A(端子)が挿抜可能に接続される。また、プリンター11は、USBコネクター12に加え、補助的に電源供給するための外部電源コネクター17を備えている。外部電源コネクター17は、制御回路13と電源供給路17A及びデータ線17Bを通じて接続されている。外部電源コネクター17には、ACアダプター50(電源アダプター)のコネクター50A(端子)が挿抜可能に接続される。ACアダプター50のコネクター50Aは、他の一般的なACアダプターのコネクターの形状と同様の円筒形状を有している。なお、本実施形態では、ホスト装置30及びUSBバッテリーチャージャー40により、外部装置の一例が構成される。特にホスト装置30により、後述する初期処理を行う外部装置の一例が構成される。また、USBバッテリーチャージャー40により第1の装置の一例が構成され、ホスト装置30により第2の装置の一例が構成される。
また、図1に示すように、プリンター11の本体11aには、操作パネル19が設けられている。操作パネル19は、プリンター11に各種の指示等を入力するために操作される操作スイッチ群20と、各種メニューや動作状況のメッセージ等が表示される表示部21とを備えている。操作スイッチ群20は制御回路13と電気的に接続されている。また、表示部21は制御回路13に対して表示駆動回路18を介して電気的に接続されている。
操作スイッチ群20は、電源スイッチ20Aと、各種の指示入力や選択操作等によってデータの入力のために操作される操作スイッチ20Bとを備えている。電源スイッチ20Aが操作されることで、プリンター11の電源のオンとオフが切り替えられる。つまり、プリンター11は、電源オフ状態の下で電源スイッチ20Aが操作されると電源オン状態に切り替わり、電源オン状態の下で電源スイッチ20Aが操作されると電源オフ状態に切り替わる。また、例えば表示部21に表示されるメニューにおいてユーザーが操作スイッチ20Bを操作して各種の項目を選択することで、制御回路13はその選択結果を受け付けて印刷条件等を設定する。
制御回路13は、プリンター11の電源オフ中に、USBコネクター12が接続している相手がホスト装置30又はUSBバッテリーチャージャー40である場合、充電モードになり、ホスト装置30又はUSBバッテリーチャージャー40からUSBコネクター12を通じて供給される電力で二次電池14を充電する充電制御を司る。但し、制御回路13は、プリンター11の電源オフ中に外部電源コネクター17にACアダプター50が接続されている場合は、ACアダプター50からの供給電力による二次電池14の充電を優先し、ホスト装置30又はUSBバッテリーチャージャー40からの供給電力に基づく充電は行わない。
また、制御回路13は、プリンター11の電源オン中に、ホスト装置30から受信した印刷ジョブデータに基づく文書や画像を用紙等の印刷媒体に印刷する印刷制御を司る。プリンター11の電源オン中に、外部電源コネクター17にACアダプター50が接続されている場合は、ACアダプター50から供給される電力によりプリンター11は動作する。さらに制御回路13は、外部電源コネクター17にACアダプター50が接続されていないプリンター11の電源オン状態においては、USBコネクター12が接続している相手がホスト装置30であれば、ホスト装置30から供給される電力によりプリンター11は動作する。また、この電源オン状態において、USBコネクター12が接続している相手がUSBバッテリーチャージャー40であれば、USBバッテリーチャージャー40から供給される電力によりプリンター11は動作する。本実施形態では、この電源オン状態において、ホスト装置30又はUSBバッテリーチャージャー40から供給される電力のうちプリンター11の動作に使用されない余った電力を二次電池14の充電に使用する。もちろん、プリンター11を電源オン状態で非充電モードとし、外部装置からの供給電力は、プリンター11の動作に使用し、二次電池14の充電には使用しない構成としてもよい。
本実施形態の印刷機構16は、用紙等の印刷媒体にインクで印刷する不図示の印刷ヘッドと、印刷媒体を搬送する不図示の搬送装置とを備える。印刷ヘッドは、印刷媒体の搬送方向と交差する走査方向に印刷ヘッドを往復移動させつつ印刷するシリアル方式でもよいし、搬送方向と交差する幅方向の印刷幅を一度で印刷可能な長尺状の印刷ヘッド又はヘッド群により、一定速度で搬送される印刷媒体に印刷するラインヘッド方式でもよい。また、印刷ヘッドの方式は、インクジェット方式、ドットインパクト方式及び電子写真式のいずれであってもよい。また、インクジェット方式の場合、インクを噴射する圧力を発生させる駆動素子には、ノズルに連通する室を形成する板部を撓ませて圧力を発生させる圧電素子や静電素子、あるいは熱等を利用して瞬間的に気泡を発生させるバブル素子を使用することができる。また、プリンター11は印刷に用いる印刷ジョブデータをホスト装置30から有線又は無線による通信で受信できるうえ、メモリーカード等の記憶媒体から印刷に用いるデータを読み取るものでもよい。
図1に示すように、制御回路13は、制御IC22、電源回路23、CPU24及び不揮発性メモリー25を備えている。制御IC22は、充電制御を行う集積回路である。ここで、制御回路13内にCPU24に加え、ASIC(Application Specific IC(特定用途向けIC))を備え、印刷機構16のうち一部(例えば印刷ヘッド)の制御をASICが行ってもよい。また、不揮発性メモリー25には、プリンター11の制御に必要な各種のプログラム及びプリンター11の電源オフ中にも保存の必要がある各種の設定データ等が記憶されている。なお、プリンター11は、CPU24が実行する際のプログラムや必要な各種データ等が一時的に格納されるRAM(図示せず)も備えている。
USBコネクター12の電源供給路12A及びデータ線12Bは、制御回路13内の制御IC22に接続されている。また、外部電源コネクター17の電源供給路17A及びデータ線17Bは、制御IC22に接続されている。制御IC22は、各コネクター12,17への外部装置の接続を検出する接続検出機能、その検出された接続相手(外部装置)を判別する判別機能を有する。さらに制御IC22は、充電モードにおいて二次電池14に充電する充電制御を行うとともに、CPU24及び駆動回路15等に電源電力を供給する電源供給路12A,17Aの管理、及びCPU24等にデータを送信するデータ線12B,17Bの管理を行う。
制御IC22は、ホスト装置30からのUSBケーブル35のコネクター35A又はUSBバッテリーチャージャー40のコネクター40A等のいずれかがUSBコネクター12に接続されると、USB接続を検出する。制御IC22は、USB接続を検出すると、例えばデータ線12B(D+,D−)について、(D+)≠(D−)(異電位)である場合に、USBコネクター12がコンピューター類であるホスト装置30に接続されていると判断する。一方、(D+)=(D−)(同電位)である場合に、制御IC22は、USBコネクター12がUSBバッテリーチャージャー40に接続されていると判断する。つまり、制御IC22は、USBコネクター12に接続されている接続相手(接続先)が、ホスト装置30であるか、USBバッテリーチャージャー40であるかを判定可能である。この点において、本実施形態では、制御IC22により、接続相手を判定する判定回路の一例が構成される。なお、制御IC22は、他の判定手法により接続相手を判定してもよい。
電源供給路12Aにおける制御IC22とCPU24との間の部分には、電源回路23が直列に介在されている。電源回路23は、入力した直流電圧を必要に応じて変圧して制御IC22及びCPU24に必要な駆動電圧(例えば3〜6Vの範囲内の所定電圧)、印刷機構16中の印刷ヘッドの駆動に必要な駆動電圧、印刷媒体を搬送する搬送装置の動力源となる搬送モーターの駆動に必要な駆動電圧等を生成する。二次電池14は、電源供給路12Aのうち制御IC22と電源回路23とを接続する部分に第1スイッチ26を介して接続されている。この第1スイッチ26は制御IC22によりオン・オフ制御される。第1スイッチ26がオンになって導通しているときに電源供給路12Aからの電源電力によって二次電池14が充電される。
また、電源供給路12Aのうち電源回路23とCPU24との間の部分には、プッシュ式の第2スイッチ27と、半導体スイッチで構成される第3スイッチ28とが互いに並列な状態で介在している。プッシュ式の第2スイッチ27は、電源スイッチ20Aの操作に連動して機械的に押下され、電源スイッチ20Aの操作中のみオンし、電源スイッチ20Aの操作が止められるとオフする。また、電源回路23と駆動回路15とを接続する電源供給路12C上には第4スイッチ29が介在している。
制御IC22は、その判断結果に基づいて第3スイッチ28のオン(導通)とオフ(非導通)の切替え、データ線12B上の不図示のスイッチのオン(導通)とオフ(非導通)の切替え、第1スイッチ26のオン(導通)とオフ(非導通)の切替えを制御している。
プリンター11の起動のトリガーとするのは、プッシュ式の第2スイッチ27であり、プリンター11の電源オフ状態の下でユーザーにより電源スイッチ20Aが押下されて第2スイッチ27がオンされると、制御IC22は第3スイッチ28をオン状態に維持する。詳しくは、プッシュ式の第2スイッチ27がオンした際のオン信号がCPU24に入力されると、CPU24は、制御IC22に対してプリンター11の電源のオン/オフの切替えを指示する。制御IC22は、プリンター11の電源オフ状態の下でCPU24から電源の切替え指示を受け付けると、第3スイッチ28及び第4スイッチ29をオンさせ、一方、プリンター11の電源オン状態の下でCPU24から電源の切替え指示を受け付けると、第3スイッチ28及び第4スイッチ29をオフさせる。
第3スイッチ28がオンされることで電源回路23からCPU24へ必要な電力が供給され、第3スイッチ28がオフされることで電源回路23からCPU24への電力の供給が遮断される。また、第4スイッチ29がオンされることで電源回路23から駆動回路15へ必要な電力が供給され、第4スイッチ29がオフされることで電源回路23から駆動回路15への電力供給が遮断される。なお、第4スイッチ29は、駆動回路15へ供給するべき電圧別に設けられた複数のスイッチからなるスイッチ群により構成されてもよい。
プリンター11の電源オフ状態では、第3スイッチ28及び第4スイッチ29が共にオフ状態にある。また、この電源オフ状態において外部電源コネクター17にACアダプター50が接続されておらず、USBコネクター12にホスト装置30とUSBバッテリーチャージャー40のどちらも接続されていなければ、第1スイッチ26はオフ状態にある。
制御IC22は、プリンター11の電源オフ状態であって、かつACアダプター50が接続されていない状態において、USBコネクター12へのUSB接続を検出したときにその接続先がホスト装置30(USBホスト30A)であり、そのとき二次電池14の充電が必要であれば、それまでオフ状態にあった第3スイッチ28をオンさせる。制御IC22は、第3スイッチ28のオンによって、二次電池14の充電に先立ちホスト装置30との間でエニュメレーションと呼ばれる初期処理を実行させるためにCPU24を起動させる。このとき、制御IC22は、内部のスイッチをオンさせてCPU24を、データ線12Bを通じたデータの送受信が可能な状態にする。
USBコネクター12がホスト装置30と接続した場合、ホスト装置30から第1電力(例えば保証電流値100mA)が供給される。また、CPU24は初期処理を行うことによって、USBコネクター12が受け取る第1電力以上の電力を消費する。このため、CPU24がホスト装置30から初期処理完了通知を受信することなく初期処理の途中で待機状態のまま放置された場合、その待機時間のうちにCPU24の起動中の消費電力により二次電池14の残量が低減してしまう。ここで、保証電力とは、USB規格上、USBホストがUSB接続されたUSBデバイスに供給しなければならない電力であり、USB規格では電流値で例えば100mAに定められている。
なお、本実施形態では、プリンター11が電源オフ中にホスト装置30とUSB接続されたときに、二次電池14の充電に必要な初期処理を行わせるためのCPU24の起動を、「充電起動」と呼ぶ。また、制御IC22が第3スイッチ28をオンさせてCPU24を起動させることを「充電起動オン」、第3スイッチ28をオフさせて充電起動中のCPU24を電源オフさせることを「充電起動オフ」と呼ぶ場合がある。
また、制御IC22は、プリンター11が電源オン状態の下でACアダプター50又はUSBバッテリーチャージャー40等の電源アダプターに接続されているときは、各スイッチ26,28,29をオン状態とすることにより電源アダプターから供給される電力でCPU24及び駆動回路15を動作させる。このとき、電源アダプターからの供給電力のうちプリンター11の動作に使用されない余った電力があれば、この電力で二次電池14を充電する。一方、制御IC22は、プリンター11が電源オフ状態の下でACアダプター50又はUSBバッテリーチャージャー40に接続されているときは、第1スイッチ26をオン状態、各スイッチ28,29をオフ状態とすることにより電源アダプターから供給される電力で二次電池14を充電する。
制御IC22は、ACアダプター50又はUSBバッテリーチャージャー40からの電力で二次電池14を充電する際は、初期処理を行う必要がないので、CPU24は起動されない。なお、USBバッテリーチャージャー40及びACアダプター50は、AC電源のコンセントに繋がっているものに限らず、DCバッテリーに繋がっているものも含む。
CPU24に接続されている不揮発性メモリー25には、ホスト装置30と電源供給能力のネゴシエーションを含むエニュメレーションと呼ばれる初期処理を行うためのUSB通信用プログラムが記憶されている。USBコネクター12にホスト装置30の接続が検出された場合、CPU24は初期処理(エニュメレーション)をホスト装置30との間で行う。本実施形態では、CPU24が初期処理の全てを実行するが、初期処理の一部をCPU24が実行し他の一部をASIC又は制御IC22が実行する構成としてもよい。なお、本実施形態では、CPU24により、初期処理の少なくとも一部を実行する処理回路の一例が構成される。
また、図1に示すように、CPU24はタイマー24Aを備えている。タイマー24Aは、例えばCPU24内のカウンターにより構成され、クロック信号のパルスを計数することでタイマーとして機能する。CPU24は、その起動時点からの経過時間を計時時間Tとしてタイマー24Aに計時させる。不揮発性メモリー25には、初期処理が失敗であるか否かを判定する際に用いられる設定タイムアウト時間T1(以下、単に「タイムアウト時間T1」ともいう。)が記憶されている。CPU24は、タイマー24Aの計時時間Tが、ホスト装置30から初期処理完了通知を受信することなく、タイムアウト時間T1に達してタイムアウトになると、制御IC22に指示して電源オフさせることで、初期処理を充電開始前に中止する。一方、CPU24は、タイマー24Aの計時時間Tがタイムアウト時間T1に達する前に、ホスト装置30から初期処理完了通知を受信すると、制御IC22に充電開始を指示して第1スイッチ26をオンさせることで、ホスト装置30からの電源電力で二次電池14を充電する充電処理を開始させる。なお、タイマー24Aは、プログラムにより計時処理を行うソフトウェアで構成されてもよいし、CPU24ではなく、制御IC22又はASICに設けられたものでもよい。
ここで、タイムアウト時間T1は、使用が想定される複数種のホスト装置30のうちBIOS(Basic Input/Output System)起動所要時間が最長であるホスト装置30のBIOS起動所要時間以上、かつこのホスト装置30のBIOS起動所要時間にマージン時間を加えた時間以下の値に設定されている。ここで、マージン時間は、適宜設定できるが、一例としてBIOS起動所要時間の10%以下が好ましい。タイムアウト時間T1は、一例として30〜120秒の範囲内の所定値に設定されている。もちろん、タイムアウト時間T1は、上記の範囲に限らず、BIOS起動所要時間と関連付けて、あるいはBIOS起動所要時間と無関係に、例えば10秒や20秒などのより短い時間、あるいは3分や5分などのより長い時間とすることもできる。
次に図2及び図3を参照して、プリンター11とホスト装置30との通信接続状態を確立するために初期処理として実行されるエニュメレーション及びタイマー24Aによるタイムアウト処理について説明する。なお、図2及び図3では、電源オフ状態の下でUSB接続された際の初期処理の例について説明するが、電源オン状態の下でUSB接続された際の初期処理についても基本的に同様である。但し、タイムアウト時間T1は、電源オフ時の初期処理のときよりも電源オン時の初期処理のときの方が短く設定することが好ましい。
図2に示すように、プリンター11がホスト装置30との間でUSB接続されると、このUSB接続を検出したホスト装置30とプリンター11との間で初期処理としてエニュメレーションが実行される。
図2に示すように、エニュメレーションでは、まずプリンター11は、ホスト装置30からエニュメレーション開始に当たりリセット処理(バスリセット)を指示する「USB BusReset」を受信する。次にディスクリプターと呼ばれる構成情報を要求する「GetDescriptor」を受信する。そして、プリンター11はこの要求に応答して構成情報をホスト装置30へ応答する。構成情報には、USBデバイス11Aのクラス情報と、バスパワーかセルフパワーかを示すパワーモード情報と、ホスト装置30に要求する電力の値を示す要求電力値情報とが含まれる。ここで、プリンター11の電源オフ時は、クラス情報は例えば「ヒューマンインターフェイスデバイス(HID)クラス」とされる。また、プリンター11の電源オン時は、クラス情報は例えば「プリンタークラス」とされる。
本実施形態では、バスパワーを要求する初期処理が、第1初期処理の一例に相当する。また、セルフパワーを要求する初期処理が第2初期処理の一例に相当する。なお、以下の説明中で、バスパワーを要求する初期処理を第1初期処理と称し、セルフパワーを要求する初期処理を第2初期処理と称する場合がある。
また、バスパワーを要求する第1初期処理においては、要求電力値情報として、第1電力(保証電力(例えば電流値100mA))よりも大きな第2電力が設定される。要求電力値情報は、所定の電源電圧(例えば5ボルト)の下で電流値を要求する要求電流値情報で示される。第2電力を要求する要求電流値情報は、USB規格で供給可能な最大電力に相当する例えば「500mA」とされる。なお、第2電力は、最大電力に限らず、二次電池14への充電が可能な電力であればよく、第1電力より大きくかつ最大電力未満の電力でもよい。さらに第2電力は、セルフパワーを要求する第2初期処理の完了後にホスト装置30から供給される電力「0(零)」より大きく、かつ最大電力未満の電力であってもよい。
そして、ホスト装置30は、クラス情報(例えば「HIDクラス」)に基づいてUSB接続されたUSBデバイスがヒューマンインターフェイスデバイスであると認識する。また、ホスト装置30は、要求電流値情報(例えば500mA)に基づいて、その要求された第2電力での電源供給が可能であるか否かを判断し、第2電力での電源供給が可能であれば、その構成情報を設定するとともに、初期処理完了通知(設定完了通知)である「SetConfiguration」をプリンター11に送信する。
図2に示すように、エニュメレーションにおいてプリンター11から要求した第2電力での電源供給が許可されて初期処理完了通知「SetConfiguration」を受信するまでは、充電不可能な状態にある。そして、初期処理完了通知を受信した場合に、ホスト装置30からプリンター11に、要求した第2電力で電源供給されて二次電池14の充電が可能になる。
本実施形態では、プリンター11の電源オフ状態かつACアダプター50が非接続の状態の下でUSB接続が検出されたときの接続相手がホスト装置30である場合、プリンター11内のCPU24が起動される(充電起動オン)。このCPU24の充電起動とほぼ同時にCPU24はタイマー24Aによる計時を開始させる。CPU24は、その起動時点からの経過時間をタイマー24Aで計時し、その計時時間Tがタイムアウト時間T1に達したか否かを判断する。計時時間Tがタイムアウト時間T1に達する前に初期処理完了通知「SetConfiguration」を受信すれば、ホスト装置30から第2電力(例えば電流値で500mA)での電源供給が開始されるため、その供給される第2電力で二次電池14を充電する。
一方、図3に示すように、プリンター11とホスト装置30とのUSB接続が検出され、プリンター11内のCPU24が起動(充電起動オン)されて開始した初期処理において、プリンター11が送信した構成情報がホスト装置30で許可されない場合、プリンター11は初期処理完了通知「SetConfiguration」を受信できない。この場合、プリンター11では、初期処理完了通知を受信することなく、タイマー24Aの計時時間Tが、タイムアウト時間T1に達する。このように初期処理完了通知「SetConfiguration」を受信することなく、計時時間Tがタイムアウト時間T1に達すると、プリンター11は充電を目的に内部的に電源オンさせたCPU24の電源をオフにすることで、充電起動をオフにする(電源オフ)。
ここで、タイムアウト時間T1を経過しても初期処理完了通知を受信できない例として、以下の場合が挙げられる。例えば図4に示すように、ホスト装置30とプリンター11とがバスパワーで動作しているハブ60(分岐装置)を経由して接続されている構成では、ハブ60のポート60aが例えばNポート(図4の例では5ポート)である場合、1ポート当たり500/N(mA)の電流値(図4の例では100mA)でしか電源供給ができない。そのため、プリンター11がクラス情報及び要求電流値情報(例えば500mA)を含む構成情報を送信しても、ホスト装置30はハブ経由であることの認識をもって、第2電力(例えば電流値で500mA)での電源供給ができないと判断する。このため、ホスト装置30は、要求された第2電力での電源供給を許可できないため、構成情報を設定しない。この結果、図3に示すように、ホスト装置30は、初期処理完了通知「SetConfiguration」をプリンター11に送信しない。このため、プリンター11はホスト装置30から送信されることのない初期処理完了通知「SetConfiguration」の受信を待つ待機状態となる。
また、ホスト装置30がバッテリー駆動時にUSBデバイス(プリンター11)への電源供給が最大電力(例えば電流値で500mA)未満の所定電力以下に制限する設定がなされている場合がある。このようなホスト装置30では、プリンター11から要求された第2電力での電源供給ができないため、ホスト装置30からプリンター11へ初期処理完了通知「SetConfiguration」が送信されない。この場合も、プリンター11はホスト装置30から送信されることのない初期処理完了通知「SetConfiguration」の受信を待つ待機状態となる。
この待機状態においてCPU24は起動状態(充電起動オン状態)で待機するため、二次電池14の電力を消費する。この待機状態においてプリンター11はホスト装置30からUSBケーブル35を通じて第1電力(電流値で例えば100mA)で電源供給を受けるものの、起動中のCPU24が初期処理で消費する電力が、第1電力を上回るため、待機時間の経過と共に二次電池14の残量が徐々に低下してしまう。
そこで、本実施形態では、前述のタイムアウト時間T1を設定し、初期処理完了通知を受信することなく計時時間Tがタイムアウト時間T1に達してタイムアウトになると、ホスト装置30に応答した構成情報に含まれる要求が許可されず初期処理を失敗したとみなして、CPU24は電源をオフにする(充電起動オフ)。そして、タイムアウト時間T1を、USBコネクター12への接続が想定される複数種のホスト装置30のうち最長のBIOS起動所要時間に応じた値に設定しているので、ホスト装置30のBIOS起動を待つにほぼ十分な時間を待った後にタイムアウトとなる。このため、待機すれば充電できたにも拘らず短過ぎるタイムアウト時間によりタイムアウトになってしまい、二次電池14の充電ができなくなる不都合を回避し易いタイムアウト時間T1に設定されている。
タイムアウト時間T1は、電源ON時と電源OFF時とで同じでもよいが、本実施形態では、タイムアウト時間T1を、電源ON時と電源OFF時とで異なる値に設定している。特に本実施形態では、電源ON時のタイムアウト時間T12の方が電源OFF時のタイムアウト時間T11よりも短く設定している(T11>T12)。このように設定するのは以下の理由による。電源OFF中はユーザーがホスト装置30からプリンター11に処理(例えば印刷処理)を指示することがないので、電源OFF時のタイムアウト時間T11がホスト装置30の起動所要時間に応じた多少長めの値に設定されても問題がない。しかし、電源ON時のタイムアウト時間T12は、長くなると、ユーザーがホスト装置30からプリンター11に指示した処理の開始遅れの原因になる。このため、電源OFF中は充電の頻度を高めるために相対的な長めのタイムアウト時間T11を設定し、電源ON中はユーザーがホスト装置30からプリンター11に指示した処理の待ち時間の発生を短く抑えるために相対的な短めのタイムアウト時間T12を設定している。なお、タイムアウト時間を、T11<T12を満たすように設定してもよい。
操作スイッチ20Bを操作して表示部21でメニューの下位階層に進むと、図5に示すような、モード設定画面G1が表示される。このモード設定画面G1には、操作スイッチ20Bの操作によって、バスパワーモードを設定する際に選択される第1ボタン71と、セルフパワーモードを設定する際に選択される第2ボタン72とが設けられている。ユーザーが操作スイッチ20Bを操作して第1ボタン71を選択することでバスパワーモードが設定され、第2ボタン72を選択することでセルフパワーモードが設定される。このユーザー設定されたパワーモードは、CPU24により不揮発性メモリー25の所定記憶領域(図6(a)参照)に書き込まれる。
図6に示すように、操作スイッチ20Bの操作で「バスパワーモード」を選択し設定すると、不揮発性メモリー25の第1記憶領域25Aにバスパワーの旨の値(一例として「1」)が記憶される。一方、操作スイッチ20Bの操作で「セルフパワーモード」を選択し設定すると、不揮発性メモリー25の第1記憶領域25Aにセルフパワーの旨(一例として「0」)が記憶される。このようにユーザーはバスパワーかセルフパワーかを選択できる。ユーザーが操作スイッチ20Bを操作して設定したUSB通信モード設定内容(ユーザー設定内容)は、不揮発性メモリー25の第1記憶領域25Aに記憶される。
ここで、バスパワーとは、ホスト装置30とUSBケーブル35を通じて接続されたときにホスト装置30からUSBケーブル35のバス線を通じて電力の供給を受ける電力供給モードを指す。一方、セルフパワーとは、ホスト装置30とUSBケーブル35を通じて接続されたときにホスト装置30から電力の供給を受けず電子機器(本例ではプリンター11)が自分で電力を賄う非受電モードを指す。
また、不揮発性メモリー25には、ユーザー設定内容とは別に、バスパワーの要求を含む初期処理(第1初期処理)の成功か失敗かを記憶する第2記憶領域が用意されている。本実施形態では、初期設定がバスパワーであり、ホスト装置とのUSB通信確立のために実行される初期処理に成功すればバスパワーの設定が維持され、初期処理に失敗するとセルフパワーの設定に切り替えられる。このため、図6に示すように、不揮発性メモリー25の第2記憶領域25Bには、前回のバスパワーを要求する初期処理の成否(成功/失敗)に関する情報が記憶される。つまり、バスパワーを要求する初期処理が成功した場合は、図6(a)に示すように第2記憶領域25Bに成功の旨の値(例えば「1」)が書込まれ、その初期処理に失敗した場合は、図6(b)に示すように第2記憶領域25Bに失敗の旨を示す値(例えば「0」)が記憶される。
CPU24は、第2記憶領域25Bに格納された値に基づき、バスパワーを要求した前回の初期処理(第1初期処理)が成功であれば、今回もバスパワーを要求して第1初期処理を実行し、一方、失敗であれば、今回はセルフパワーを要求する初期処理(第2初期処理)を実行する。第2記憶領域25Bの設定内容は、USBケーブル35がUSBコネクター12から抜かれたことが検出されると、CPU24によりバスパワーの旨の初期設定時の値に書き替えられる。これは、USBケーブル35の接続が維持されている間は相手のホスト装置30が同じであるので、一度成功しているホスト装置30には、今回もバスパワーを要求する初期処理をしても高確率で成功するはずであり、一度失敗しているホスト装置には今回もバスパワーを要求する初期処理をしても高確率で失敗するはずだからである。このような理由から、CPU24は、ホスト装置30とUSB接続が維持されている間は、次回の初期処理を行うタイミングで不揮発性メモリー25のこの前回の成功/失敗の情報を確認し、今回の初期処理時の要求パワーモードを前回が成功であればバスパワーとし、前回が失敗であればセルフパワーとする。なお、不揮発性メモリー25の第2記憶領域25Bに記憶する値は、「1」、「0」である。ここでは、「1」、「0」を、説明の便宜上、成功/失敗の旨を示す値と表記したが、バスパワー/セルフパワーの旨を示す値としても同義である。
また、プリンター11の不揮発性メモリー25には、図7〜図9にフローチャートで示される電源OFF時における充電処理用プログラム、及び図10で示される電源ON時のUSB通信処理用プログラムが記憶されている。なお、このプログラムは制御IC22に書き込まれた部分(ステップS1〜S5)と、不揮発性メモリー25に記憶されてCPU24により実行される部分(ステップS6)とを含んでいる。
次に図7〜図10を参照してプリンター11の作用を説明する。すなわち、プリンター11内の制御IC22及びCPU24が実行する電源OFF時の充電処理(図7〜図9)と、プリンター11内のCPU24が実行する電源ON時のUSB通信処理(図9及び図10)とについて説明する。図7〜図9に示す充電処理は、プリンター11が電源オフ状態にあり、かつACアダプター50が接続されておらずACアダプター50による二次電池14への充電が行われていない状態の下で行われる。
なお、図6(a)に示すように、不揮発性メモリー25(以下、単に「メモリー25」ともいう。)における第1記憶領域25Aには「バスパワー」(例えば値「1」)が設定され、第2記憶領域25Bには「成功(バスパワー)」(例えば値「1」)が設定されているものとする。つまり、第1記憶領域25Aと第2記憶領域25Bの各設定値は、初期設定時の値となっている。このようにユーザー設定としてバスパワーが設定され、初期処理成否情報として成功の旨の値が設定されているものとする。
USBコネクター12に何らかのコネクターが接続され、USB接続を検出すると、制御IC22が起動され、図7に示す充電処理が開始される。
まずステップS1では、接続先がホスト装置であるか否かを判断する。すなわち、制御IC22は、接続先がUSBホスト30Aとして機能するホスト装置30であるかUSBバッテリーチャージャー40等の電源アダプターであるかを判断する。例えばデータ線が(D+)≠(D−)である場合は接続先がホスト装置30であると判断し、(D+)=(D−)である場合は接続先が電源アダプターであると判断する。接続先がホスト装置30ではなく電源アダプターであればステップS13に進み、ホスト装置30であればステップS14に進む。
ステップS2では、電源アダプターで充電を開始する。本例の場合、USBバッテリーチャージャー40からの電力で二次電池14を充電する。
ステップS3では、二次電池の残量が閾値未満であるか否かを判断する。すなわち、二次電池14の残量が、初期処理を行ううえで十分な残量である閾値未満であるか否かを判断する。二次電池14の残量が閾値未満であればステップS4に進み、閾値未満でなければステップS5に進む。
ステップS4では、二次電池を第1電力(例えば100mA)で充電する。この第1電力での充電は、二次電池14の残量が閾値に達するまで行われる。そして、二次電池14がその残量が閾値以上になるまで充電されると(S3で否定判定)、ステップS5に進む。
ステップS5では、CPUを起動させる(充電起動オン)。すなわち、制御IC22は、第3スイッチ28をオフからオンに切り替えることでCPU24を起動させる。このように二次電池14の充電を開始する前に必要なホスト装置30との初期処理を行わせるためにCPU24を起動させる。
ステップS6では、CPUによる充電処理を行う。この充電処理は、CPU24が図8に示す電源OFF時の充電処理ルーチンを実行することにより行われる。以下、図8を参照してCPU24による充電処理ルーチンについて説明する。
まずステップS11では、パワーモードに係るユーザー設定を判断する。すなわち、ユーザー設定が、バスパワーであるかセルフパワーであるかを判断する。本例では、ユーザー設定は初期設定でバスパワーとなっており、ユーザーが操作スイッチ20Bの操作でセルフパワーを選択した場合にセルフパワーが設定される。CPU24はメモリー25の第1記憶領域25Aに格納された値に基づいてパワーモードがバスパワーかセルフパワーかを判断する。
ここで、ユーザーがセルフパワーを設定する目的の一つは、ホスト装置30がハブ60を介してプリンター11と接続されて第2電力(電流値で例えば500mA)での電力供給ができない場合でも、セルフパワーで初期処理を行うので、初期処理が失敗することがまずないようにするというものである。例えば電源ON時の初期処理であれば、その後USB通信が確実に確立され、プリンター11がホスト装置30からの印刷データに基づく印刷を行うことができる。但し、本実施形態では、バスパワーを要求する初期処理が、ハブ60を介する等の理由により失敗しても、その失敗を検出してバスパワーからセルフパワーに切り替える制御を採用している。また、ユーザーがセルフパワーを設定する目的は、ホスト装置30がノートパソコン等でバッテリーの電力で動作している場合に、ノートパソコン等のバッテリーの電力がプリンター11に使われずに、長持ちするようにするというものである。ユーザー設定がバスパワーである場合はステップS12に進み、セルフパワーの場合はステップS17に進む。セルフパワーの場合は充電が行われないので、ステップS17では、制御IC22及びCPU24の起動をオフすることで、充電起動をオフする(充電起動オフ)。
ステップS12では、メモリー25(第2記憶領域25B)の値が成功であるか否かを判断する。「成功」の旨の値(例えば「1」)であればステップS13に進み、成功の旨の値でなければ(つまり失敗の旨の値(例えば「0」)であれば)、ステップS17に進む。セルフパワーの場合は充電が行われないので、ステップS17では、制御IC22及びCPU24の起動をオフすることで、充電起動をオフする(充電起動オフ)。
ステップS13では、プルアップを行う。すなわち、CPU24は、データ線D+,D−の電圧を変動させてプルアップを行う。このプルアップによりホスト装置30はUSBデバイス11A(プリンター11)の接続を検出し、初期処理(エニュメレーション)(図2、図3を参照)を開始する。
ステップS14では、バスパワーを要求する初期処理(第1初期処理)を実行し、その初期処理が成功したか否かを判断する。このステップS14の処理は、CPU24が図9にフローチャートで示す初期処理ルーチンを実行することにより行われ、その詳細は以下のように行われる。
まず図9のステップS31において、タイマーの計時を開始する。すなわち、CPU24はタイマー24Aに計時を開始させる。この結果、タイマー24AはCPU24の起動時点(正確にはプルアップ時点)からの経過時間(計時時間T)を計時する。なお、タイマー24Aによる計時開始処理(S31)とプルアップ処理(S13)との順番は逆でもよい。
ステップS32では、バスパワーを要求する初期処理(第1初期処理)を行う。ホスト装置30からの要求に対してディスクリプターと呼ばれる構成情報を送信する。構成情報には、USBデバイスのクラスを示すクラス情報と、USBホストに要求するパワーモードの情報(要求パワーモード情報)と、USBホストに要求する電力の情報(要求電力情報)とが含まれる。クラス情報には、プリンタークラス及びヒューマンインターフェイスデバイス(HID)クラスのうち一方が用いられる。電源オフ中は印刷は行われないので、HIDクラスが用いられる。本例のプリンター11は、電源オフ状態での充電モードにおいて、「バスパワー」を要求しそのときの供給電力として第2電力(電流値で例えば500mA)を要求する。このため、プリンター11は、HIDクラスを指定し、バスパワーで第2電力を要求する構成情報をホスト装置30に応答する。なお、電源オン中に行われる初期処理では、構成情報中のクラス情報としてプリンタークラスが用いられ、ホスト装置30は、USBデバイス11Aをプリンターと認識する。また、HIDクラスに替えてマスストレージクラス等の他のクラスを用いてもよい。
このバスパワーを要求する初期処理は、図2に示すように行われる。プルアップによりUSB接続が検出されると、ホスト装置30とプリンター11との間で初期処理としてエニュメレーションが開始される。まずホスト装置30からプリンター11へバスリセットを指示する「USB BusReset」が送信され、この指示を受信したプリンター11はバスリセットする。次にホスト装置30からプリンター11へ構成情報(ディスクリプター)を要求する「GetDescriptor」が送信される。「GetDescriptor」を受信したプリンター11は、クラス情報(例えば「HID」)、パワーモード情報(「バスパワー」)及び要求電力情報(「第2電力(例えば500mA)」)を含む構成情報を送信する。
ホスト装置30は、プリンター11から受信した構成情報に基づき、要求された条件でUSB通信接続を許可しうるか否かを判断する。そして、ホスト装置30は、バスパワーかつ第2電力で電源供給が可能と判断すれば、プリンター11の構成情報をメモリーに書き込んでデバイス構成等を設定するとともに、図2に示すように、プリンター11へ初期処理完了の旨の初期処理完了通知「SetConfiguration」を送信する。
一方、図4に示すように、ホスト装置30とプリンター11とがバスパワーハブ経由で接続されている場合、プリンター11が、バスパワーかつ第2電力を含む構成情報を送信しても、ホスト装置30はハブ経由との認識から、要求された第2電力での電源供給が不可能と判断し、USB通信の確立を許可しない。この場合、図3に示すように、ホスト装置30からプリンター11へ初期処理完了通知「SetConfiguration」は送信されない。よって、プリンター11内のCPU24は、ホスト装置30から送信されることのない初期処理完了通知「SetConfiguration」を、起動状態のまま待機することになる。この待機中は、起動中(充電起動オン状態)のCPU24が電力を浪費し、二次電池14の残量が低減する。
また、ホスト装置30がバッテリー駆動時に、USBデバイス11Aへの供給電力が最大電力(電流値で500mA)未満の所定電力以下に制限する設定がなされている場合、プリンター11から要求された第2電力(電流値で500mA)での電源供給ができない。このため、ホスト装置30からプリンター11へ初期処理完了通知「SetConfiguration」が送信されない。この場合も、プリンター11内のCPU24は、ホスト装置30から送信されることのない初期処理完了通知「SetConfiguration」を、起動状態のまま待機することになる。この待機中は、起動中のCPU24により、二次電池14の電力が浪費される。これらの場合、ホスト装置30からUSBケーブル35を通じて第1電力(電流値で100mA)が供給されるものの、起動中のCPU24が初期処理で消費する電力が第1電力を上回る場合、二次電池14の残量が徐々に低下してしまう。
ステップS33では、初期処理完了通知を受信したか否かを判断する。そして、CPU24は、初期処理完了通知を受信しなければステップS34に進み、初期処理完了通知を受信して初期処理が成功すればステップS15(図8)へ進む。
ステップS34では、タイムアウトになったか否かを判断する。すなわち、タイマー24Aの計時時間Tがタイムアウト時間T1に達したか否かを判断する。タイムアウトでなければステップS33に戻る。こうして初期処理完了通知を受信するか(S33で肯定判定)、タイムアウトになる(S34で肯定判定)まで、ステップS33,S34の処理を繰り返し実行する。タイムアウトになって初期処理に失敗した場合は、ステップS16(図8)へ進む。
図8に戻って、上記のステップS14の処理(図9)において、初期処理完了通知を受信して初期処理を成功した場合はステップS15に進み、一方、初期処理完了通知を受信する前にタイムアウトとなって初期処理を失敗した場合はステップS16に進むことになる。
ステップS15では、二次電池を第2電力(電流値で500mA)で充電する。つまり、ホスト装置30から電源供給される第2電力で二次電池14を充電する。
一方、初期処理に失敗した場合は、ステップS16において、メモリーに失敗の旨の値を書き込む。CPU24はメモリー25の第2記憶領域25Bに、例えば図6(b)に示すように失敗の旨の値(例えば「0」)を書き込む。なお、ステップS14において初期処理に成功した場合は、そのときメモリー25の第2記憶領域25Bには、初期処理成否情報として初期設定時の成功の旨の値(初期値(例えば「1」))が格納されているので、特に書き替えは行わない。もちろん、メモリー25に成功の旨の値を書き込んでもよい。
そして、次のステップS17では、CPU24と制御IC22とをオフにすることで、充電起動をオフにする(充電起動オフ)。詳しくは、初期処理完了通知を受信することなく、CPU起動時点からの経過時間である計時時間Tがタイムアウト時間T1に達した場合、起動状態にあるCPU24及び制御IC22の電源を共にオフし、二次電池14の充電をその開始前に中止する。この充電起動オフ処理は、例えばCPU24からのオフ指示に従って制御IC22が、第3スイッチ28をオフにすることでCPU24の電源をオフにし、その後、自身の電源をオフにすることで行われる。こうしてCPU24が初期処理の失敗により送られてくることのない初期処理完了通知を待ち続けることによる電力の浪費及び二次電池14の残量の減少を抑制できる。
このようにバスパワー要求での初期処理に成功した場合は二次電池の充電が行われ、初期処理に失敗した場合は、その失敗の旨をメモリー25に保存したうえで、USB接続検出をトリガーに起動された制御IC22及びCPU24の電源がオフされる。
この充電中又は電源オフ中において、CPU24は次の処理を行う。すなわち、充電中においては、ステップS18で電源ON操作があったか否かの判断、ステップS19でUSBケーブルが抜かれたか否かの判断、ステップS20でUSB充電終了条件が成立したか否かの判断を、このうち1つの判断処理で肯定判定が得られるまで繰り返し実行する。例えばステップS18で電源ON操作があれば、ステップS21に進んで電源ON処理を行う。すなわち、電源スイッチ20Aの操作でその操作中のみ第2スイッチ27がオンされ、電源回路23からCPU24に電力が供給されることでCPU24が起動され、CPU24が制御IC22に指示することで第3スイッチ28が接続される。このため、電源スイッチ20Aを押してから手を離しても、CPU24への電力供給が維持される。なお、本実施形態での電源ON処理では、プリンター11の一部のみ起動させている充電起動を一旦オフした後、プリンター11全体を電源ONに切り替える処理を含む。これは一部のみ起動されているときに、残りの他の一部のみを起動させる処理を行うことは、起動中の一部がどれなのか監視する必要があるうえ、停止中の他の一部を選択して起動させる面倒な制御が必要なため、一旦起動中の一部の電源をオフしてからプリンター11全体の電源を入れ直すことで、監視の負担及び制御の負担を軽減できるからである。
次のステップS22では、USB再接続処理を行う。すなわち、プルアップ状態を一旦解除する。そして、その処理を電源ON時のUSB通信処理ルーチン(図10)へ移行させる。これによりUSBケーブル35が接続されたまま、電源ON時のUSB通信処理ルーチンにおける後述のステップS43又はS44でプルアップした際に、ホスト装置30のUSBホスト30AがUSBデバイス11Aとの再接続(USB接続)を検出する。このため、再接続によって、ホスト装置30はプリンター11との間で初期処理(S45又はS49)を行うことが可能になる。
また、ステップS19で、USBケーブルが抜かれた場合(肯定判定)は、当該ルーチンを終了する。このとき、USBケーブル35が抜かれることで二次電池14への充電は中止される。
さらにステップS20で、USB充電終了条件が成立すると、ステップS23に進んで、CPU24及び制御IC22の電源をオフにすることで、充電起動をオフにする。ここで、USB充電終了条件とは、USBケーブル35を通じたホスト装置30とのUSB接続が維持されたまま二次電池14の充電を終了させる条件を指し、(1)二次電池14が満充電になったこと、(2)ホスト装置30よりも充電の電源として優先されるACアダプター50等の電源アダプターが接続されたことが、その条件として挙げられる。ここで、制御IC22は二次電池14の充電中にその残量を監視し、二次電池14が満充電されると、第1スイッチ26をオフにすることで、二次電池14の充電を終了させる。この二次電池14の満充電の旨は制御IC22からCPU24へ通知される。これらの二条件のうちいずれか一方が成立すると、二次電池14へのUSB充電を中止して、充電起動をオフさせる。例えばACアダプター50が接続された場合、その接続を検出した制御IC22がCPU24の起動を停止させる。そして、電源がUSB経由のホスト装置30からACアダプター50に切り替えられ、以後、ACアダプター50を介して供給される電力で二次電池14への充電が行われる。そして、充電起動オフ後、充電起動オフ中の処理の一つであるステップS26に進む。
一方、充電起動オフ(S17)後においては、ステップS24で電源ON操作があったか否かの判断と、ステップS25でUSBケーブルが抜かれたか否かの判断と、ステップS26でUSB充電開始条件が成立したか否かの判断とを、このうち1つの判断処理で肯定判定が得られるまで繰り返し実行する。例えばステップS24で電源ON操作があれば、ステップS21に進んで、充電中の電源オン操作時と同様の電源ON処理を行い、さらにステップS22でUSB再接続処理を行った後、その処理を電源ON時のUSB通信処理ルーチンへ移行させる。
また、ステップS25で、USBケーブルが抜かれた場合(肯定判定)は、ステップS27に進んで、メモリー25を成功の旨の値に書き替え、その後、当該ルーチンを終了する。ここで、メモリー25を成功の旨の値に書き替えるのは、USBケーブル35が抜かれたことで、次にUSB接続されたときのホスト装置30が変更される可能性があるため、ホスト装置30が変更されれば初期処理が成功する可能性が高いので、バスパワーによる初期処理を試行できるようにするためである。
さらにステップS26で、USB充電開始条件が成立すると、ステップS28に進んで、CPU24及び制御IC22の電源をオフにすることで、充電起動をオフにする。ここで、USB充電開始条件とは、USBケーブル35を通じたホスト装置30とのUSB接続が維持されたまま充電起動オフ状態の下で、二次電池14の充電を開始させる条件を指す。このUSB充電開始条件には、(3)二次電池14の残量が満充電より所定レベル少ない値に設定された閾値(例えば満充電の90〜99%の範囲内の所定値(%))を下回ったこと、(4)ホスト装置30よりも充電の電源として優先されるACアダプター50等の電源アダプターの接続が外されたことが、その条件として挙げられる。これらの二条件のうちいずれか一方が成立すると、ステップS28に進む。
そして、ステップS28では、制御IC22及びCPU24を起動させることで、充電起動をオンさせる(充電起動オン)。この充電起動オンの後、S11に戻る。つまり、当該ルーチンの終了前にCPU24を起動状態にすることで、CPU24が充電開始条件の成立に基づく当該ルーチンを再び開始することができる。このようにUSB充電終了条件の成立後(S20で肯定判定)、USBケーブル35が抜かれることなくホスト装置30との接続を継続する状態で、USB充電開始条件が成立して充電起動し(S26,S28)、次のステップS13でプルアップすることで、プリンター11はホスト装置30と再接続することになる。
例えばUSBケーブル35を通じたホスト装置30とのUSB接続を維持したまま、メモリー25に失敗の旨の値が書き込まれた状態で、上記の充電処理ルーチンを終了した場合は、次の処理が行われる。すなわち、ステップS12におけるメモリーの値が失敗なので、初期処理(S14)に進むことなく、充電起動をオフする(S17)。
つまりUSBケーブル35が抜かれていない場合は、USB接続の接続相手は、前回の初期処理実施時のホスト装置30と同じになる。そのため、前回失敗であれば、今回も失敗になるので、前回の初期処理で失敗した旨がメモリーに保存されていれば、バスパワーを要求する第1初期処理を行わず充電起動をオフする。このため、無駄な初期処理の実行に伴う電力の浪費及び二次電池14の残量低減を抑制することができる。
一方、USBケーブル35が抜かれた場合は、次にUSB接続の検出時の接続相手は、USBケーブル35が抜かれたときと異なるホスト装置30である可能性がある。仮に前回のホスト装置30で初期処理に失敗していても、USBケーブル35が前回抜かれたときにメモリー25(第2記憶領域25B)の値が「失敗」から「成功」の旨の値に書き替えられる(S27)。このため、その後、当該ルーチン再開後のステップS12で成功の旨の値であることから、プルアップ(S13)を経て進んだステップS14において、バスパワーを要求する第1初期処理を実行することができる。このため、接続相手が前回と異なるホスト装置30であって、バスパワーかつ第2電力が許可されれば、バスパワーで供給された第2電力(電流値で500mA)で二次電池14を充電することができる。
また、初期処理を失敗したときのホスト装置30とUSBケーブル35を通じて接続された状態で電源ON操作されてプリンター11が起動したときは、メモリー25(第2記憶領域25B)の値は「失敗」の旨の値のままとなる。また、初期処理を成功したときのホスト装置30とUSBケーブル35を通じて接続された状態で電源ON操作されてプリンター11が起動したときは、メモリー25(第2記憶領域25B)の値は「成功」の旨の値となる。
次に図10を参照して、電源ON時のUSB通信処理ルーチンについて説明する。ユーザーが電源スイッチ20Aを操作してUSBケーブル35を介してホスト装置30と接続しているプリンター11の電源をオンした際に、CPU24は図10に示すUSB通信処理ルーチンを実行する。また、プリンター11の電源がオン状態でUSB接続していないときに、USBが接続された際にも、CPU24は図10に示すUSB通信処理ルーチンを実行する。プリンター11が電源オン状態にあるとき、ユーザーはホスト装置30の入力装置(図示せず)を操作して印刷を指示すると、印刷データがホスト装置30からUSBケーブル35を通じてプリンター11へ送信される。但し、ホスト装置からの指示でプリンター11に印刷させるためには、初期処理が成功して両者の間でUSB通信が確立される必要がある。
まずステップS41〜43は、図8におけるステップS11〜S13と同様の処理である。すなわち、ステップS41で、ユーザー設定が、バスパワーであるかセルフパワーであるかを判断する。詳しくは、CPU24はメモリー25の第1記憶領域25Aに格納された値に基づいてユーザー設定されたパワーモードがバスパワーかセルフパワーかを判断する。ユーザー設定がバスパワーである場合はステップS42に進み、セルフパワーの場合はステップS44に進む。
ここで、ユーザーがセルフパワーを設定する目的の一つは、ホスト装置30がハブ60を介してプリンター11と接続されて第2電力(電流値で例えば500mA)での電力供給ができない場合でも、セルフパワーで初期処理を行って、電源ON時にUSB通信を確立し、ホスト装置30からの印刷データに基づく印刷をできるようにすることにある。但し、本実施形態では、ユーザー設定がバスパワーであっても、初期処理の失敗を検出してバスパワーからセルフパワーに切り替える制御を採用している。
ステップS42では、メモリー25(第2記憶領域25B)の値が成功であるか否かを判断する。「成功」の旨の値(例えば「1」)であればステップS43に進み、成功の旨の値でなければ(つまり失敗の旨の値(例えば「0」)であれば)、ステップS44に進む。
ステップS43では、プルアップを行う。すなわち、CPU24は、データ線D+,D−の電圧を変動させてプルアップを行う。このプルアップによりホスト装置30はUSBデバイス11A(プリンター11)の接続を検出し、初期処理(エニュメレーション)(図2、図3を参照)を開始する。
次のステップS45では、バスパワーを要求する初期処理(第1初期処理)を実行し、その初期処理が成功したか否かを判断する。このステップS45の処理は、CPU24が図9にフローチャートで示す初期処理ルーチンを実行することにより行われ、その詳細は以下のように行われる。
まず図9のステップS31において、タイマーの計時を開始する。すなわち、CPU24はタイマー24Aに計時を開始させる。この結果、タイマー24AはCPU24の起動時点(正確にはプルアップ時点)からの経過時間(計時時間T)を計時する。なお、タイマー24Aによる計時開始処理(S31)とプルアップ処理(S13)との順番は逆でもよい。
ステップS32では、バスパワーを要求する初期処理(第1初期処理)を行う。ここで、CPU24は、ホスト装置30からの要求に対してディスクリプターと呼ばれる構成情報を送信する。このとき、プリンター11の電源オン中は印刷が行われることを前提とするため、プリンタークラスが用いられる。CPU24は、プリンタークラスを指定し、バスパワーで第2電力(電流値で例えば500mA)を要求する構成情報をホスト装置30に応答する。ホスト装置30は、構成情報中のクラス情報がプリンタークラスであることから、USBデバイス11Aをプリンターと認識する。このため、ホスト装置30は、印刷要求を受け付ければ、印刷データをUSB通信を通じてプリンター11へ送信する。
この第1初期処理は、電源ON時も電源0FF時と同様に、図2に示すように行われる。プルアップによりUSB接続が検出されると、ホスト装置30とプリンター11との間で初期処理としてエニュメレーションが開始される。ホスト装置30から「GetDescriptor」を受信すると、プリンター11は、クラス情報(例えば「プリンター」)、パワーモード情報(「バスパワー」)及び要求電力情報(「第2電力(例えば500mA)」)を含む構成情報(ディスクリプター)を送信する。
ホスト装置30は、プリンター11から受信した構成情報に基づき、要求された条件でUSB通信接続を許可しうるか否かを判断する。そして、ホスト装置30は、バスパワーかつ第2電力で電源供給が可能と判断すれば、プリンター11の構成情報をメモリーに書き込んでデバイス構成等を設定するとともに、図2に示すように、プリンター11へ初期処理完了通知「SetConfiguration」を送信する。
一方、図4に示すように、ホスト装置30とプリンター11とがバスパワーハブ経由で接続されている場合、プリンター11が、バスパワーかつ第2電力を含む構成情報を送信しても、ホスト装置30はハブ経由との認識から、要求された第2電力での電源供給が不可能と判断し、USB通信の確立を許可しない。この場合、図3に示すように、ホスト装置30からプリンター11へ初期処理完了通知「SetConfiguration」は送信されない。よって、プリンター11は、ホスト装置30から送信されることのない初期処理完了通知「SetConfiguration」を、起動状態のまま待機することになる。この待機中は、起動中のCPU24によって電力が浪費される。
また、ホスト装置30がバッテリー駆動時に、USBデバイス11Aへの供給電力が制限されている場合、プリンター11から要求された第2電力(電流値で500mA)を許可できない。この場合も、プリンター11内のCPU24は、ホスト装置30から送信されることのない初期処理完了通知「SetConfiguration」を起動状態のまま待機することになり、電力を浪費する。これらの場合、初期処理完了通知が送られてくるまでの待機中に、ホスト装置30からUSBケーブル35を通じて第1電力(電流値で100mA)が供給されるものの、起動中のCPU24が初期処理で消費する電力が第1電力を上回る場合、二次電池14の残量が徐々に低下してしまう。
ステップS33では、初期処理完了通知を受信したか否かを判断する。そして、CPU24は、初期処理完了通知を受信しなければステップS34に進み、初期処理完了通知を受信して初期処理が成功すればステップS46(図10)へ進む。
ステップS34では、タイムアウトになったか否かを判断する。すなわち、タイマー24Aの計時時間Tがタイムアウト時間T1に達したか否かを判断する。タイムアウトでなければステップS33に戻る。こうして初期処理完了通知を受信して初期処理を成功するか(S33で肯定判定)、タイムアウトになって初期処理を失敗する(S34で肯定判定)まで、ステップS33,S34の処理を繰り返し実行する。タイムアウトになって初期処理に失敗した場合は、ステップS47(図10)へ進む。
図10に戻って、上記のステップS45の処理(図9)において、初期処理完了通知を受信して初期処理を成功した場合はステップS46に進み、一方、初期処理完了通知を受信する前にタイムアウトとなって初期処理を失敗した場合はステップS47に進むことになる。
ステップS46では、バスパワーでUSB通信処理を行う。ここで、USB通信処理とは、電源オン中のプリンター11がホスト装置30とUSB通信を介して行う処理を指し、例えば印刷処理やインク残量通知を含む各種の通知処理等が含まれる。このとき、バスパワーで供給される第2電力(電流値で500mA)を用いて印刷処理などのUSB通信処理が行われる。なお、第2電力のうちUSB通信処理で使用されない余りの電力があれば、その余りの電力を電源ON中における二次電池14の充電に使用してもよい。
一方、初期処理に失敗した場合は、ステップS47において、メモリーに失敗の旨の値を書き込み、セルフパワーに切り替える。CPU24はメモリー25の第2記憶領域25Bに、例えば図6(b)に示すように失敗の旨の値(例えば「0」)を書き込む。CPU24は、以後、メモリー25の値を参照して成功か失敗かを判定するので(S42)、このメモリー25の失敗の旨の値への書替えによって、バスパワーからセルフパワーに切り替えられる。なお、ステップS45において初期処理に成功した場合は、そのときメモリー25の第2記憶領域25Bに初期設定時の成功の旨の値(初期値(例えば「1」))が格納されているので、特に書き替えは行わない。もちろん、メモリー25に成功の旨の値を書き込んでもよい。
次のステップS48では、USB再接続処理を行う。すなわち、プルアップ状態を一旦解除した後、再びプルアップする。これによりUSBケーブル35が接続されたまま、ホスト装置30のUSBホスト30AがUSBデバイス11Aとの接続(USB接続)を検出する。この結果、ホスト装置30はプリンター11との間で初期処理を行うことが可能になる。
こうしてユーザー設定がセルフパワーである場合(S41)、メモリー25の値が失敗の旨の値である場合(S42で否定判定)、バスパワー要求時の初期処理を失敗した場合(S45で否定判定)は、共にプルアップ(S44又はS48)の後、ステップS49に進むことになる。
次のステップS49では、セルフパワーを要求する初期処理(第2初期処理)を実行する。
ここで、CPU24は、ホスト装置30からの要求に対して、プリンタークラスを指定し、セルフパワーを要求する構成情報をホスト装置30に応答する。このセルフパワー要求時の初期処理は、バスパワー要求時の初期処理と同様に、図2に示すように行われる。プルアップによりUSB接続が検出されてホスト装置30とプリンター11との間で初期処理が開始されると、プリンター11は、ホスト装置30からの要求「GetDescriptor」に対し、クラス情報「プリンタークラス」、パワーモード情報「セルフパワー」及び要求電力情報(例えば0〜10mAの範囲内の値)を含む構成情報を応答する。
ホスト装置30は、プリンター11から受信した構成情報に基づき、要求された条件でUSB通信接続を許可しうるか否かを判断し、セルフパワーなので、USB通信の確立を許可する。ホスト装置30は、プリンター11の構成情報をメモリーに書き込んでデバイス構成等を設定するとともに、図2に示すように、プリンター11へ初期処理完了通知「SetConfiguration」を送信する。この結果、初期処理は成功する。また、ホスト装置30は、構成情報中のクラス情報がプリンタークラスであることから、USBデバイス11Aをプリンターと認識する。このため、ホスト装置30は、印刷要求を受け付ければ、印刷データをプリンター11へ送信する。
ステップS50では、セルフパワーでUSB通信処理を行う。セルフパワーなので、ホスト装置30からの電源供給がないものの、ホスト装置30から印刷データを受信すれば、その印刷データに基づく印刷処理をUSB通信処理の一つとして行う。このとき、プリンター11は、ACアダプター50等の電源アダプターと接続されていれば、電源アダプターを通じて供給される電力で印刷動作を行い、電源アダプターと接続されていなければ、二次電池14の電力で印刷動作を行う。
このように、当初、バスパワーを要求する第1初期処理を行って、その初期処理に失敗すれば、セルフパワーに切り替え、セルフパワーを要求する第2初期処理を行うので、プリンター11とホスト装置30とのUSB通信を確立することができる。このため、ユーザーはホスト装置30からの指示でプリンター11に印刷処理を行わせることができる。例えば、第1初期処理を行って初期処理完了通知を受信できず、CPU24が待機状態になった場合、いつまで経ってもUSB通信が接続されないので、ユーザーはホスト装置30からの指示でプリンター11に印刷処理を行わせることができない。
しかし、本実施形態によれば、初期処理の失敗時にセルフパワーに切り替えて、再度、初期処理を行うので、プリンター11とホスト装置30とをより確実にUSB接続させることができる。この結果、印刷できない不都合を回避し、ホスト装置30からの指示でプリンター11に印刷させることができる。
また、電源OFF中の充電処理でバスパワーを要求する第1初期処理に失敗した場合、その失敗の旨の値をメモリー25に保存し、その後、電源ON時にメモリー25から読み出した値が失敗の旨の値であれば、セルフパワーを要求する第2初期処理を行う。このため、一旦、第1初期処理を行って、失敗したらセルフパワーに切り替えて第2初期処理を再度行う手順をとる場合に比べ、プリンター11とホスト装置30とのUSB通信をより速やかに確立することができる。よって、ユーザーはUSBケーブルを通じてプリンター11とホスト装置30とを接続した後、比較的速やかにホスト装置30から指示した印刷をプリンター11に行わせることができる。
このUSB通信処理中において、CPU24は次の処理を行う。すなわち、USB通信処理中においては、ステップS51で電源OFF操作があったか否かの判断、ステップS52でUSBケーブルが抜かれたか否かの判断を、このうち1つの判断処理で肯定判定が得られるまで繰り返し実行する。例えばステップS51で電源ON操作があれば、ステップS53に進んで電源OFF処理を行う。すなわち、電源スイッチ20Aの操作で第2スイッチ27のオンを検知すると、CPU24は制御IC22に指示して第3スイッチ28を遮断させる。また、二次電池14を電源としていた場合は、CPU24は制御IC22に指示して第1スイッチ26も遮断させる。この電源OFF処理の終了後、CPU24は、その処理を、電源OFF時の充電処理ルーチンへ移行させる。
また、ステップS52で、USBケーブルが抜かれた場合(肯定判定)は、ステップS54に進んで、メモリーを「成功」の旨の値に書き替えた後、当該ルーチンを終了する。この後は、プリンター11は、ACアダプター50等の電源アダプターと接続されていれば、電源アダプターを通じて供給される電力で印刷動作を行い、電源アダプターと接続されていなければ、二次電池14の電力で印刷動作を行う。また、このとき、USBケーブル35が抜かれることで、プリンター11とホスト装置30とのUSB通信は遮断される。このため、USBケーブルが抜かれてホスト装置30との接続が途絶えた後に、ホスト装置30とUSB接続されたときには、再開されたUSB通信処理ルーチン(図10)で、メモリーの値が「成功」(S42で肯定判定)なので、バスパワーを要求する第1初期処理(S45)が行われる。
また、USBケーブル35が抜かれることなくホスト装置30との接続を継続する状態で(S52で否定判定)、電源OFF操作があった場合(S51で肯定判定)は、電源OFF処理(S53)の後に、電源OFF時の充電処理ルーチン(図8)へ移行する。これによりプルアップ(S13)によってホスト装置30とプリンター11とが再接続され、メモリーの値がこの電源OFFになる前の前回の電源オン状態で第1初期処理を完了した「成功」であれば、第1初期処理を行い(S45)、一方、第1初期処理を失敗し第2初期処理を行っていた「失敗」であれば、充電は行われない(S17)。
バスパワーを要求する初期処理を失敗してセルフパワーで初期処理を行ってUSB通信が確立された状態でUSBケーブル35が接続されたまま電源OFFされた場合、メモリー25には失敗の旨の値が保存されている。このため、図8に示す電源OFF時の充電処理ルーチンにおいて、メモリー25の値が失敗の旨の値なので(S12で否定判定)、充電起動をオフにする(S17)。このとき、プリンター11の電源ON中のUSB通信処理を目的とする初期処理の失敗の旨の情報を利用するので、第1初期処理を試行することなく充電起動をオフさせる。例えば第1初期処理を行った際に、送られてくることのない初期処理完了通知をタイムアウトになるまで待ち続けることによるCPU24の電力の浪費及び二次電池14の残量の低減を抑制することができる。
以上詳述した本実施形態によれば、以下に示す効果を得ることができる。
(1)制御回路13は、電源スイッチ20Aがオフ状態でUSBコネクター12が接続している相手がUSBバッテリーチャージャー40(第1の装置の一例)であれば、初期処理(エニュメレーション)を行わずにUSBコネクター12が受け取った電力で二次電池14を充電する。また、USBコネクター12が接続している相手がホスト装置30(第2の装置の一例)であれば、制御回路13は初期処理を行い、初期処理が完了した後に、二次電池14を充電する。一方、USBコネクター12が接続している相手がホスト装置30であり、初期処理に失敗したときは、二次電池14の充電を行わない。よって、電源スイッチ20Aがオフ状態でUSBコネクター12が接続している相手がホスト装置30であり、初期処理に失敗したときは、制御回路13(特にCPU24)の電源をオフすることができ、電池14への充電をその開始前に中止できる。このため、初期処理が失敗しても長時間に亘って制御回路13が起動状態のまま放置されることによる電気の浪費や電池14の残量の低減を抑制することができる。
(2)制御回路13は、USBコネクター12が接続している相手を判定する制御IC22(判定回路の一例)と、初期処理の少なくとも一部を実行するCPU24(処理回路の一例)とを備える。USBコネクター12が接続している相手がUSBバッテリーチャージャー40(第1の装置の一例)と判定すれば、CPU24を電源オフ状態に維持する。また、USBコネクター12が接続している相手がホスト装置30(第2の装置の一例)と判定すれば、CPU24を電源オン状態に移行させる。このため、電源オン状態に移行したCPU24はホスト装置30との間で初期処理を行うことができる。
(3)初期状態において電源スイッチ20Aがオン状態でUSBコネクター12がホスト装置30と接続した場合に、制御回路13は、第2初期処理(セルフパワーを要求する初期処理)よりも大きな供給電力の要求を含む第1初期処理(バスパワーを要求する初期処理)を行う。第1初期処理が完了(成功)したのちに、二次電池14に充電を行う。この充電は、第1初期処理が完了したのちに供給される相対的に大きな電力(第2電力)で行われる。つまり、この充電は、第2初期処理が完了したのちに供給される相対的に小さな電力(供給電力が零の場合も含む)よりも大きな電力(第2電力)の供給を受けて行われる。一方、制御回路13は、第1初期処理を完了できず失敗したときは、より小さな供給電力を要求する第2初期処理を行う。よって、第1初期処理に失敗したときでも、第2初期処理を完了することができる。従って、制御回路13は、USBコネクター12を介してホスト装置30と通信を確立することができる。また、第2初期処理を完了できた後は、その小さな供給電力を用いて二次電池14の充電は行われないので、供給電力が小さな割にプリンター11が印刷処理等の処理を行う電力が比較的確保され易い。
(4)制御回路13は、第2初期処理を行った後、ホスト装置30との接続が継続している場合には、第1初期処理を行わずに第2初期処理を行う。一方、第2初期処理を行った後、ホスト装置30との接続が途絶えた後にホスト装置30と接続した場合には、初期状態に戻って第1初期処理を開始する。このようにそのホスト装置30が第1初期処理を一度失敗している同じ接続相手である場合、第1初期処理は行われず、第2初期処理が行われる。このため、制御回路13が第1初期処理を一度失敗している同じホスト装置30と行うことによる電力の浪費を抑制できる。一方、制御回路13は、第2初期処理を行った後、ホスト装置30との接続が途絶えた後にホスト装置30と接続した場合は、初期状態に戻って第1初期処理を行う。このように制御回路13の接続相手が第1初期処理を一度失敗したホスト装置と異なるホスト装置30である可能性がある場合は、初期状態に戻って第1初期処理が行われる。このとき、第1初期処理に成功すれば、ホスト装置30からの供給電力で二次電池14の充電を行うことができる。よって、二次電池14が充電される頻度を高めることができる。
(5)制御回路13は、第1初期処理を完了した後に、ホスト装置30との接続が継続された状態で、電源スイッチ20Aがオフされた場合は、第1初期処理を行い、第1初期処理が完了したのちに、二次電池14の充電を行う。このように電源オン状態で第1初期処理を成功した同じホスト装置30とは電源オフ後に第1初期処理を行う。このため、第1初期処理を完了すれば、二次電池14が充電され、第1初期処理を失敗すれば、二次電池14の充電は行われない。一方、制御回路13は、第2初期処理を行った後に、ホスト装置30との接続が継続された状態で、電源スイッチ20Aがオフされた場合は、第1初期処理を行わず、二次電池14の充電は行われない。このように電源オン状態で第1初期処理に失敗し、第2初期処理を行った場合は、第1初期処理を失敗した同じホスト装置30と電源オフ後に第1初期処理を行わないことで、二次電池14の充電は行われない。よって、電源スイッチ20Aがオフされた際に、制御回路13が第1初期処理を一度失敗している同じホスト装置30と第1初期処理を行うことによる電力の浪費を抑制できる。
(6)制御回路13は、電源スイッチ20Aがオンされる前のオフ状態で行われた第1初期処理を完了できた成功か、第1初期処理を完了できず第2初期処理を行った失敗かを示す値を不揮発性メモリー25に記憶する。電源スイッチ20Aがオンされた後、不揮発性メモリー25の第2記憶領域25Bの記憶内容が成功の旨の値であれば、第1初期処理を行う。一方、不揮発性メモリー25の第2記憶領域25Bの記憶内容が失敗の旨の値であれば、第1初期処理を行わずに第2初期処理が行われ、二次電池14の充電は行われない。よって、第1初期処理を失敗した後に、ホスト装置30との接続が継続された状態で、電源スイッチ20Aがオンされた場合に、制御回路13が電源オフ状態で一度失敗している同じホスト装置30と第1初期処理を行うことによる電力の浪費を抑制することができる。
(7)初期状態においてUSBコネクター12がホスト装置30と接続した場合に、制御回路13は、第1初期処理を行い、第1初期処理が完了したのちに、二次電池14に充電を行う。第1初期処理に失敗したときは、二次電池14に充電を行わない。また、第1初期処理が完了してホスト装置30との接続が継続している状態でホスト装置30と再接続を行う場合には、第1初期処理を行い、第1初期処理が完了したのちに、二次電池14に充電が行われる。一方、第1初期処理が失敗してホスト装置30との接続が継続している状態でホスト装置30と再接続を行う場合には、第1初期処理を行わず、電池に充電を行わない。よって、第1初期処理を失敗している同じホスト装置30と再接続する場合に、制御回路13が第1初期処理を失敗している同じホスト装置30と第1初期処理を行うことによる電力の浪費を抑制できる。
(8)制御回路13は、ホスト装置30との接続が途絶えた後にホスト装置30と接続した場合には、ホスト装置30との接続が途絶える前に第1初期処理が完了(成功)したか失敗したかに関わらず、初期状態に戻って、第1初期処理を開始する。よって、ホスト装置30との接続が途絶えた後にホスト装置30と接続した場合は、その接続相手は、接続が途絶える前のホスト装置30と異なる可能性(第1初期処理が成功する可能性)があるので、初期状態に戻って第1初期処理が行われる。第1初期処理に成功すれば、二次電池14への充電が可能になる。例えば第1初期処理を失敗したホスト装置30と接続が途絶え、次に接続したホスト装置30がそれまでのホスト装置と異なる可能性があるにも拘らず、第1初期処理を行わず、充電の機会を逸することを回避できる。よって、二次電池14が充電される頻度を高めることができる。
(9)制御回路13は、プリンター11の電源がオン状態であれば、プリンター(第1種の装置の一例)である旨のクラス情報(プリンタークラス(第1のクラス))の通知をすることで、プリンターとして第1初期処理を行う。一方、プリンター11の電源がオフ状態であれば、プリンターと異なるヒューマンインターフェイスデバイス(HID)(第2種の装置の一例)である旨のクラス情報(HIDクラス(第2のクラス))の通知をすることで、HIDとして第1初期処理を行う。よって、ホスト装置30は、電源オン状態にあるプリンター11をプリンターと認識し、プリンターとして扱う。一方、ホスト装置30は、電源オフ状態にあるプリンター11をHIDと認識し、HIDとして扱う。よって、電源オン状態にあるプリンター11をHIDと認識して印刷ができなくなる不都合や、電源オフ状態にあるプリンター11をプリンターと認識して電源オフ中であるにも拘らず印刷データを送信するなどの不都合を回避できる。
(10)制御回路13は、プリンター11の電源がオン状態の下で行った第1初期処理に失敗したときに、第1初期処理よりも小さい電力要求を含む第2初期処理を行う。第2初期処理が完了してホスト装置30との接続が継続している状態で、ホスト装置30と再接続を行う場合には、プリンター11の電源がオン状態であれば、第1初期処理を行わずに第2初期処理を行う。よって、第2初期処理が完了してホスト装置30との接続が継続している状態でホスト装置30と再接続を行う場合は、同じホスト装置30と一度失敗した第1初期処理を行わず第2初期処理を行う。よって、一度失敗している第1初期処理を行うことによる制御回路13の電力の浪費を抑制できるうえ、第1初期処理を省く分だけ早期に印刷開始可能状態となり、再接続後の印刷を早期に開始させることができる。
(11)制御回路13は、ホスト装置30との初期処理においてタイムアウトが発生した場合に、第1初期処理に失敗したと判断する。このため、タイムアウトを考慮することなく初期処理完了通知を受信するまで待機する構成である場合に比べ、早期に第2初期処理を行うことができるので、ホスト装置30とプリンター11との通信を早期に確立することができる。
(12)制御回路13は、タイムアウトと判定する際に用いるタイムアウト時間T1を、ホスト装置30のBIOS起動所要時間(起動所要時間の一例)に応じて設定する。よって、USBコネクター12が接続しているホスト装置30が起動途中の状態にあっても、その起動後のホスト装置30と初期処理を行ってホスト装置30からの電源供給により第2電力(例えば電流値500mA)で二次電池14を充電することができる。このため、ホスト装置30の起動所要時間に合っていない短過ぎるタイムアウト時間が設定されているために、ホスト装置30の起動途中でタイムアウトと判定されてしまい、少し待てば充電できたにも拘らず少し早くに失敗としたために充電されない不都合を減らすことができる。従って、二次電池14が充電される頻度を高めることができる。
(13)特にタイムアウト時間T1を、接続が想定される複数種のホスト装置30の起動所要時間のうち最長時間のものに所定のマージン時間を加えて設定している。よって、少し待てば充電できたにも拘らず短過ぎるタイムアウト時間によりホスト装置30の起動途中でタイムアウトになって第1初期処理が失敗と判断されたために、二次電池14を充電できなくなる事態を極力抑えることができる。このため、二次電池14が充電される頻度を一層高めることができる。
(14)電源OFF時の初期処理におけるタイムアウト時間T11よりも、電源ON時のタイムアウト時間T12の方を短く設定している。よって、電源OFF中は二次電池14の充電の頻度を高めることができ、電源ON中はユーザーがホスト装置30からプリンター11に指示した処理の開始遅れを短く抑えることができる。
(第2実施形態)
次に図11を参照して第2実施形態を説明する。本実施形態では、タイムアウトに加え、他の方法によっても、CPU24が第1初期処理を失敗と判断する。なお、プリンター11の構成は第1実施形態と同様であり、CPU24が実行する初期処理の失敗の判定方法が一部異なるだけなので、第1実施形態と共通の構成及び共通の処理については同一の符号を用いてその説明を省略し、特に異なる部分についてのみ説明する。
本実施形態では、初期処理の失敗を、第1実施形態と同様のタイムアウトの発生に加え、ホスト装置30のサスペンド状態(一時停止状態)への移行によっても判断する。ホスト装置30の種類によってはUSB接続中においてSOF(スタートオブフレーム)信号を定期的(例えば1ミリ秒未満の所定時間毎)にプリンター11に送信する。SOF信号は、例えば10マイクロ秒〜1ミリ秒の範囲内の一定時間Toの間隔毎にホスト装置30からプリンター11へ送信される信号である。
このため、初期処理中においてもホスト装置30からプリンター11へSOF信号が送信される。そして、ホスト装置30は、第1初期処理においてプリンター11から受信した構成情報に含まれるバスパワーでの要求電力(第2電力)を許可できない場合、構成情報の設定を行わず、サスペンド状態に移行する。このサスペンド状態への移行の際、ホスト装置30は、プリンター11へのSOF信号の送信を停止する。
プリンター11内の制御回路13を構成するCPU24は、ホスト装置30とのUSB接続中においてホスト装置30から送られてくるはずのSOF信号が途絶えて送られてこなくなると、ホスト装置30がサスペンド状態へ移行し、第1初期処理が失敗したとみなす。電源OFF時の充電処理においては、CPU24は、ホスト装置30から送られてくるはずのSOF信号が設定時間T2の間、途絶えて送られてこなくなると、ホスト装置30がサスペンド状態へ移行して第1初期処理が失敗したとみなす。
この場合、電源OFF時の充電処理(図8)中であれば、第1初期処理を失敗すると、その失敗の旨を不揮発性メモリー25に書き込んだ(S16)後、CPU24の電源をオフにする(S17の充電起動オフ)。また、電源ON時のUSB通信処理(図10)中であれば、第1初期処理を失敗すると、その失敗の旨を不揮発性メモリー25に書き込んでセルフパワーに切り替えるとともに(S47)、再接続処理(S48)を行った後、セルフパワーを要求する第2初期処理を実行する(S49)。
設定時間T2は、例えば1〜10ミリ秒の範囲内でかつT2>Toを満たす一定時間に設定されている。つまり、SOF信号が途絶えて設定時間T2以上アイドル状態になった時点で、第1初期処理を失敗したと判断する。
次に図11を参照して、本実施形態のプリンター11の作用を説明する。図11においてステップS31〜S34の各処理は、第1実施形態における図9で示されたステップS31〜S34の各処理と同様である。
ステップS31でタイマーの計時を開始する。ステップS32では、バスパワーを要求する初期処理(第1初期処理)を行い、ホスト装置30からの要求に対してクラス情報(例えば「HID」)と、パワーモード情報(「バスパワー」)と、要求電力情報(第2電力(電流値で500mA))とが含まれる構成情報を送信する。
ステップS33では、初期処理完了通知を受信したか否かを判断する。ここで、ホスト装置30は、初期処理において受信した構成情報中で要求された第2電力での電源供給を許可できるか否かを判断する。ホスト装置30は、第2電力での電源供給を許可できる場合は、その構成情報を設定するとともに初期処理完了通知「SetConfiguration」をプリンター11に送信する。そして、プリンター11のCPU24は、初期処理完了通知を受信しなければステップS34に進み、初期処理完了通知を受信して第1初期処理を成功すれば、ステップS15(図8の充電処理ルーチン)又はS46(図10のUSB通信処理ルーチン)に進む。
初期処理完了通知を受信しない場合(S33で否定判定)は、ステップS34において、タイムアウトか否かを判断する。すなわち、タイマー24Aの計時時間Tがタイムアウト時間T1に達したか否かを判断する。タイムアウトでなければステップS35に進み、一方、タイムアウトであれば、第1初期処理の失敗とみなし、ステップS16(図8の充電処理ルーチン)又はS47(図10のUSB通信処理ルーチン)に進む。
ステップS35では、SOF信号の受信が設定時間T2以上ないか否かを判断する。つまり、CPU24は、USB接続中はホスト装置30から送られてくるはずのSOF信号の受信が設定時間T2以上途絶えたアイドル状態になったか否かを判断する。SOF信号の受信が途切れたアイドル状態が設定時間T2に達していなければステップS33に戻り、そのアイドル状態が設定時間T2以上継続すれば、第1初期処理の失敗とみなし、ステップS16(図8)又はS47(図10)に進む。
こうして初期処理完了通知を受信するか(S33)、タイムアウトになるか(S34)、SOF信号の受信が設定時間T2以上ないか(S35)の各判定処理のうちいずれか1つが成立するまで、ステップS33,S34,S35の各処理を繰り返す。
タイムアウトになる前(S34で否定判定)に、SOF信号の受信が設定時間T2以上途切れることなく(S35で否定判定)、初期処理完了通知を受信すれば(S33で肯定判定)、第1初期処理が完了し、これをもって第1初期処理の成功とする。第1初期処理が成功した場合、電源OFF時の充電処理中であれば、ステップS15に進んで、第2電力で二次電池14を充電する。一方、電源ON時のUSB通信処理中であれば、ステップS46に進んで、USB通信処理と充電とを行う。
一方、タイムアウトになる前(S34で否定判定)に、初期処理完了通知を受信することなく(S33で否定判定)、SOF信号の受信が設定時間T2以上途切れると(S35で肯定判定)、第1初期処理が失敗したとみなす。また、初期処理完了通知を受信することなく(S33で否定判定)、かつSOF信号の受信が設定時間T2以上途切れることなく(S35で否定判定)、タイムアウトになると(S34で肯定判定)、第1初期処理が失敗したとみなす。第1初期処理が失敗した場合、電源OFF時の充電処理(図8)中であれば、不揮発性メモリー25に失敗の旨を書き込んだうえ(S16)、CPU24の充電起動をオフする(S17)。一方、電源ON時のUSB通信処理(図10)中であれば、ステップS46に進んで、USB通信処理と充電とを行う。
この第2実施形態によれば、第1実施形態と同様の効果が得られるうえ、更に以下に示す効果が得られる。
(15)プリンター11のCPU24は、USB接続中はホスト装置30から定期的に送られてくるはずのSOF信号が設定時間T2以上なくなると、第1初期処理が失敗したと判断する。このため、CPU24の起動時点からタイムアウト時間T1を待つことなく、第1初期処理の失敗をほぼリアルタイムに検出できる。このため、電源0FF時の充電処理においては、タイムアウトを待つことなく第1初期処理の失敗を早期に検出し、失敗の検出時点でCPU24等の充電起動を早期にオフさせることができる。このため、タイムアウトをもって第1初期処理の失敗とする構成に比べ、CPU24等の電力の浪費を一層抑制することができる。例えば制御回路13が起動状態に放置されることによる二次電池14の残量の低減を一層抑制できる。また、電源ON時のUSB通信処理においては、タイムアウトを待つことなく第1初期処理の失敗を早期に検出し、セルフパワーを要求する初期処理(第2初期処理)を早期に開始できる。この結果、タイムアウトのみを失敗とする前記第1実施形態の構成に比べ、プリンター11が早期にUSB通信処理を開始できる。例えばユーザーがホスト装置30から指示した印刷をプリンター11に早期に開始させることができる。
(16)第1初期処理の失敗の判定方法として、ホスト装置30から定期的に送られてくるはずのSOF信号が設定時間T2以上ないか否かの判定と、CPU24の起動時点からタイムアウト時間T1を経過したか否かの判定との複数種の判定方法を用いている。よって、SOF信号を送信する機能を有するホスト装置が接続相手である場合、第1初期処理の失敗をほぼリアルタイムに検出でき、SOF信号を送信する機能を有しないホスト装置であっても、タイムアウトをもって第1初期処理の失敗を検出できる。
なお、上記各実施形態は以下のような形態に変更したり、これらを組み合わせたりすることもできる。
・ユーザーの動作環境に応じてタイムアウト時間を変更できるようにしてもよい。データの入力のために操作される操作部の一例としての操作スイッチ20Bを備え、制御回路13は、タイムアウトと判定する際に用いるタイムアウト時間T1を、操作スイッチ20Bの操作による入力結果に基づき設定できる構成としてもよい。この場合、操作スイッチ20Bの操作によりタイムアウト時間T1を数値で入力設定してもよいし、タイムアウト時間T1の選択肢の中から所望の一つを選択する構成としてもよい。この構成によれば、操作スイッチ20Bを操作した入力結果に基づき、ユーザーが使用環境に合った適切なタイムアウト時間T1を設定することができる。よって、使用されるホスト装置30のBIOS起動所要時間に合っていない短過ぎるタイムアウト時間が変更不能な状態で設定されているために、少し待てば充電できるにも拘らず、少し早くに失敗としたためにホスト装置30の起動途中でタイムアウトと判断されてしまい充電されない不都合を低減できる。この結果、二次電池14が充電される頻度を高めることができる。
・タイムアウト時間T1を一定値としたが可変としてもよい。制御回路13は、USBコネクター12が接続している相手が第2の装置の一例であるホスト装置30であるときは、ホスト装置30から起動所要時間情報を取得するか、又はホスト装置30の起動所要時間を制御回路13内のタイマーで計時するかして取得し、その取得した起動所要時間に応じてタイムアウト時間T1を設定してもよい。この構成によれば、制御回路13は、取得した起動所要時間に応じたタイムアウト時間T1を設定できるので、ユーザーの使用環境に合った適切なタイムアウト時間T1を設定することができる。このため、ホスト装置30の起動所要時間に合っていない短過ぎるタイムアウト時間が設定されているために、ホスト装置30の起動途中でタイムアウトと判断されてしまい、もう少し待てば充電できたにも拘らず、少し早くにタイムアウト(失敗)になったために、充電されない不都合を減らすことができる。この結果、電池14が充電される頻度を高めることができる。また、制御回路13は、最大M個の起動所要時間のデータをメモリー25に記憶し、新規の起動所要時間を取得する度にM個を超える過去のデータのうち一番旧いデータを消去し、M個のうち最も長い起動所要時間に応じてタイムアウト時間を設定する。また、過去M個のうち予め設定された最長設定時間を超えるデータは採用せず、最長設定時間以下の起動所要時間のデータのうち最も長い起動所要時間に応じてタイムアウト時間T1を設定してもよい。これらの構成であれば、ユーザーがたまたま1回だけ起動所要時間の非常に長いホスト装置30をプリンター11に接続したために、そのホスト装置30の非常に長い起動所要時間に基づく長過ぎるタイムアウト時間が設定されることを回避し、適切なタイムアウト時間T1を設定できる。
・制御回路13は、二次電池14の残量又は残量の変化を示す値を計測し、二次電池14の残量又は残量の変化を示す値が閾値を超えると、初期処理に失敗したと判断してもよい。この場合、二次電池の残量の変化を示す値は、変化量でもよいし変化率でもよい。この構成によれば、制御回路13は、二次電池14の残量又は残量の変化を示す値(例えば変化量又は変化率)が閾値を超えたことをもって、初期処理に失敗したと判断する。このため、タイマー等の計時手段を用いなくても初期処理の失敗を判定することができる。また、残量の変化率を用いた場合、二次電池14の残量が相対的に少ないときは相対的に早めに初期処理の失敗と判断され、二次電池14の残量が相対的に多いときは相対的に遅めに初期処理の失敗と判断される。このため、二次電池14の残量が少ないにも拘らず、初期処理の失敗の判断が遅れて残量が極めて少なくなる事態を回避し易い。また、二次電池14の残量に応じてタイムアウト時間T1を設定した場合、例えば二次電池14の残量が閾値未満と少ない場合はタイムアウト時間T1を相対的に短く設定し、その残量が多い場合はタイムアウト時間T1を相対的に長く設定してもよい。
・タイムアウト時間T1は、接続が想定される複数種のホスト装置30のうち最も長い起動所要時間(BIOS起動所要時間)に応じた値に設定することが好ましいが、ホスト装置のBIOS起動所要時間と同じ時間又はBIOS起動所要時間よりも短い時間を設定してもよい。例えばBIOS起動所要時間の1/2又は1/3の時間でもよい。また、BIOS起動所要時間を考慮しないタイムアウト時間T1を設定してもよい。例えばタイムアウト時間T1をエニュメレーション所要時間以上、エニュメレーション所要時間に所定のマージン時間(例えば1〜10秒)を加えた時間以下の値に設定してもよい。
・計時時間Tの計時開始時期は、CPUの起動時点(充電起動オン時点)に限定されない。例えばUSB接続時点(例えばUSB接続検出時点)に、タイマー24Aの計時を開始してもよい。この場合、例えば制御IC22内のタイマー(例えばカウンター)により計時を行えば、CPUの起動前であっても計時を開始できる。また、CPU起動時点から所定時間経過時点にタイマーの計時を開始させてもよい。例えば構成情報の送信時点からタイマーによる計時を開始してもよい。
・第2実施形態において、ホスト装置30が、USB接続中に定期的にSOF信号をUSBデバイス11Aに送信することが前提であれば、図11に示すフローチャートにおいてタイムアウトであるか否かを判断する処理(S34)を廃止してもよい。
・初期状態がバスパワーであれば、操作スイッチ20Bの操作でパワーモードを設定するユーザー設定は無くてもよい。また、第1初期処理の成功/失敗の旨を不揮発性メモリーに保存する構成は廃止してもよい。この場合、初期処理はまず第1初期処理を行い、第1初期処理に失敗したら、第2初期処理を行う。
・図10において、電源ON中にUSB通信処理と充電とを行ったが、充電を行わない構成としてもよい。
・前記各実施形態では、第1初期処理がバスパワー、第2初期処理がセルフパワーをそれぞれ要求する構成としたが、第1初期処理及び第2初期処理が共にバスパワーを要求し、かつ第2初期処理が第1初期処理よりも小さな供給電力の要求を含むものであってもよい。例えば第1初期処理がバスパワーかつ500mAで、第2初期処理がバスパワーかつ100mAであってもよい。
・電子機器が外部装置から供給を受けた電力は、二次電池14の充電への使用に限定されない。電子機器が例えばプリンターである場合、外部装置から供給された電力を、例えば印刷機構16の印刷動作に使用してもよい。また、電子機器が例えばスキャナー装置である場合、外部装置から供給された電力を、例えば原稿の読取り動作に使用してもよい。
・電源がONからOFFへ、又はOFFからONへ切り換えられた場合、仮に制御回路が外部装置との接続を継続していても初期状態に戻してもよい。
・USB規格はUSB2.0に限定されることなく、USB3.0、USB3.1に適用してもよい。また、USB1.0やUSB1.1に適用してもよい。また、USB規格に限定されず、他の通信規格に適用してもよい。要するに、ホスト装置と電子機器との間で初期処理が行われ、初期処理完了通知(USB規格の「Set Configuration」に相当する通知)の受信をトリガーにして初期処理が完了し、この初期処理の完了をもってホスト装置から充電に必要な電力の供給を受ける構成であれば、他の通信規格でもよい。例えばIEEE1394、SCSI(Small Computer System Interface)、ATA(Advanced Technology Attachment)でもよい。また、通信方式は有線通信方式に限定されず、ホスト装置から電子機器への電源供給が可能な限りにおいて無線通信方式でもよい。
・電源スイッチ20Aは、プッシュ式に限定されず、トグル式でもよい。その他、電源のオンとオフを切り替え可能に操作されるスイッチであればよい。また、センサー式の電源スイッチでもよく、接触センサー式又は非接触センサー式の電源スイッチでもよい。
・制御回路を、ハードウェアで構成される制御IC22と、プログラムを実行するCPUによるソフトウェアとを備えた構成としたが、制御IC22やASIC等の電子回路によりハードウェアで実現したり、ソフトウェアのみにより実現したりしてもよい。
・プリンター(印刷装置)は、印刷専用機に限らず、コピー機能やスキャナー機能を備えた複合機であってもよい。さらに、プリンターは、シリアルプリンター、ラインプリンターの他、ページプリンターのいずれであってもよい。また、プリンターは、携帯型、小型、中型プリンター及び大型プリンターでもよい。例えばビジネス用プリンターや大判プリンターでもよい。
・電子機器は、プリンター(複合機を含む。)に限らず、スキャナー、プロジェクター、デジタルカメラ(撮影装置)、デジタルオーディオ装置(音響機器)などであってもよい。