(57)【要約】【課題】  データを複数のメモリへ短時間、且つ効率よくコピーすることができるようにする。【解決手段】  複数のメモリへそれぞれデータをコピーする際、それぞれのデータを分割し、分割されたそれぞれの部分データを複数のメモリへ書き込んでいく際、シングルタスクの書き込み制御プロセス（２０４）により最初のメモリへの部分データ出力（２００）後に、次のメモリへの部分データ出力（２０２）も行い、それぞれの出力状態を保持したまま、一定時間（１msec）待ち、それぞれのメモリへのデータコピーが完了したかをチェックし、未完了ならば、さらに１msec待ち、完了ならば、次の部分データを出力する（２００又は２０２））ことを循環的に行う。シングルタスクのプロセス（２０４）で複数メモリへの書き込みを実質的に並行的に行う。【選択図】  図８
2006092414.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なるメモリに、それぞれデータを書き込む装置において、
経過時間をカウントするタイマ手段と、
複数の前記メモリへ書き込まれるべき前記データを複数の部分データに分割して、前記メモリへの前記部分データの書き込みを制御する、複数の前記メモリにそれぞれに対応した複数の書き込み手段とを備え、
複数の前記書き込み手段と前記タイマ手段とは、逐次に動作し、
複数の前記書き込み手段と前記タイマ手段との逐次の動作は、循環過程として繰り返し実行され、
前記書き込み手段の各々は、動作する都度に、対応の前記メモリに対して、現在出力中の前記データの書き込みが完了しているか否かを判断し、否ならば現在の出力を維持し、完了していると判断したならば、次の前記部分データを前記メモリへ出力し、
前記タイマ手段は、動作する都度、所定の管理時間分の待ちを行い、
前記循環過程の繰り返しより、複数の前記メモリへのデータ書き込みを、実質的に並行して行うことを特徴とするアクセス制御装置。
【請求項２】
書き込みを行う前に、記憶データを確認する必要がある少なくとも一つの前記メモリに対して、前記記憶データの読み出しを、前記循環過程を開始する前に、実行することを特徴とする請求項１記載のアクセス制御装置。
【請求項３】
それぞれの前記メモリへの書き込み処理中に、まだ前記データが書き込み終わっていない前記メモリが一つだけになった時、前記一つだけになったメモリに対応する前記書き込み手段は、常にその前記メモリを監視し続けて、順次分割された前記データを書き込んでいくことを特徴とする請求項１記載のアクセス制御装置。
【請求項４】
前記メモリへ書き込むべき前記データを全て書き込んだら、前記メモリの前記書き込み手段はとばして、前記タイマ手段と残りの前記書き込み手段とを、逐次に繰り返して動作することを特徴とする請求項１記載のアクセス制御装置。
【請求項５】
少なくとも一つの前記メモリに対応する前記書き込み手段は、最初のうちは繰り返し動作の中で行われず、前記少なくとも一つのメモリ以外の前記メモリの内の少なくとも一つに書き込むべきデータが全て書き込まれた後に、繰り返し動作の中で行われるようになることを特徴とする請求項１記載のアクセス制御装置。
【請求項６】
前記管理時間は、複数の前記メモリへの前記部分データの書き込みに対する待ち時間より短い時間に設定されている請求項１記載のアクセス制御装置。
【請求項７】
前記管理時間は、複数の前記メモリへの前記部分データの書き込みに対する待ち時間の公約数にほぼ等しく設定されている請求項１記載のアクセス制御装置。
【請求項８】
複数の異なるメモリに、それぞれデータを書き込む方法において、
経過時間をカウントするタイマステップと、
複数の前記メモリへ書き込まれるべき前記データを複数の部分データに分割するステップと、
複数の前記メモリへの前記部分データの書き込みを制御する複数の書き込みステップと、
複数の前記書き込みステップと前記タイマステップとを、逐次に実行するステップと、
複数の前記書き込みステップと前記タイマステップとの逐次の動作を、循環過程として繰り返し実行するステップと、
を有し、
前記書き込みステップの各々は、実行される都度に、対応の前記メモリに対して、現在出力中の前記データの書き込みが完了しているか否かを判断し、否ならば現在の出力を維持し、完了していると判断したならば、次の前記部分データを前記メモリへ出力し、
前記タイマステップは、実行される都度、所定の管理時間分の待ちを行ない、
前記循環過程の繰り返しより、複数の前記メモリへのデータ書き込みを、実質的に並行して行うことを特徴とするアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のメモリに対して効率よくアクセスするための制御技術に関する。
【背景技術】
【０００２】
近年、デジタルカメラやコンピュータ等の多くの電子機器において、フラッシュメモリやEPROMやEEPROMといったPROM（Programmable Read-Only Memory）が、広く使用されている。特に、EEPROMは、電源を切ってもデータは消えない不揮発性の記憶デバイスであるという特徴と、記憶されている内容に電気的に書き込みをすることができるという特徴とを備えており、システムのレジストリ情報や電子機器を動かすために必要な基本部分のプログラムなどが保存するために使われる。
【０００３】
このようなEEPROMは、プリンタシステムにおいても利用されている。例えば、インクの消費量やヘッドクリーニング時期等のインクのメンテナンスに関する情報を、EEPROMに記憶しておくことにより、プリンタシステムの電源をOFFにしても、次回に電源がONになるときに、カートリッジの交換時期やクリーニングの時期をユーザに対して通知することができる。
【０００４】
ところが、例えば停電のように突発的に電源がOFFになる場合は、プリンタシステム起動中のインクのメンテナンスに関する情報等がEEPROMに記憶されないまま、電源が切れてしまう恐れがある。そこで、プリンタシステム起動中のRAM上に保存されている少なくとも最低限に必要な情報については、プリンタシステムの主電源パワーが完全にOFFになるまでの短時間の間にEEPROMへ記憶される必要がある。
【０００５】
従来、プリンタシステムが突発的に電源OFFとなった場合でも、総消費インク量の測定値に有害な誤差が生じることがない消費インク量測定機能が備えられているプリンタシステムがある（特許文献１）。
【０００６】
【特許文献１】特開２００１−３４７６８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１の方法では、突発的な電源OFFが生じても、総消費インク量の測定値に有害な誤差（例えば、インクジェット方式のプリントヘッドノズルに空打ちをさせてしまうこと）を生じさせないようにすることができる。
【０００８】
しかし、突発的に電源がOFFになった際には、インク等の情報を、プリンタシステムの電源が完全にOFFになる前に、残在している電力を用いて、短期間に効率よくEEPROMへ保存しておく必要がある。
【０００９】
従って、本発明の目的は、データを複数のメモリへ短時間、且つ効率よくアクセスすることができるようにすることにある。
【００１０】
本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本発明の第１の側面に従うアクセス制御装置は、複数の異なるメモリに、それぞれデータを書き込む装置において、経過時間をカウントするタイマ手段と、複数のメモリへ書き込まれるべきデータを複数の部分データに分割して、メモリへの部分データの書き込みを制御する複数のメモリにそれぞれに対応した複数の書き込み手段とを備え、複数の書き込み手段とタイマ手段とは、逐次に動作し、複数の書き込み手段とタイマ手段との逐次の動作は、循環過程として繰り返し実行され、書き込み手段の各々は、動作する都度に、対応のメモリに対して、現在出力中の前記部分データの書き込みが完了しているか否かを判断し、否ならば、現在の出力を維持し、完了していると判断したならば、次の部分データをメモリへ出力し、タイマ手段は、動作する都度、所定の管理時間分の待ちを行い、循環過程の繰り返しより、複数のメモリへのデータ書き込みを、実質的に並行して行うことができる。
【００１２】
また、書き込みを行う前に、記憶データを確認する必要がある少なくとも一つのメモリに対して、記憶データの読み出しを、循環過程を開始する前に、実行することもできる。
【００１３】
また、それぞれのメモリへの書き込み処理中に、まだデータが書き込み終わっていないメモリが一つだけになった時、この一つだけになったメモリに対応する書き込み手段は、常にそのメモリを監視し続けて、順次分割されたデータを書き込んでいくこともできる。
【００１４】
前記メモリへ書き込むべき前記データを全て書き込んだら、前記メモリの前記書き込み手段はとばして、前記タイマ手段と残りの前記書き込み手段とを、逐次に繰り返して動作するようにすることができる。
【００１５】
また、少なくとも一つのメモリに対応する書き込み手段は、最初のうちは繰り返し動作の中で行われず、当該メモリ以外のメモリの内の少なくとも一つに書き込むべきデータが全て書き込まれたら、繰り返し動作の中で行われるようにすることができる。
【００１６】
また、管理時間は、複数のメモリへの部分データの書き込みに対する待ち時間より短い時間に設定することができる。
【００１７】
また、管理時間は、複数のメモリへの部分データの書き込みに対する待ち時間の公約数にほぼ等しく設定することができる。
【００１８】
本発明の別の側面に従うアクセス制御方法は、経過時間をカウントするタイマステップと、複数のメモリへ書き込まれるべきデータを複数の部分データに分割するステップと、複数のメモリへの部分データの書き込みを制御する複数の書き込みステップと、複数の書き込みステップとタイマステップとを、逐次に実行するステップと、複数の書き込みステップとタイマステップとの逐次の動作を、循環過程として繰り返し実行するステップとを有し、書き込みステップの各々は、実行される都度に、対応のメモリに対して、現在出力中のデータの書き込みが完了しているか否かを判断し、否ならば現在の出力を維持し、完了していると判断したならば、次の部分データをメモリへ出力し、タイマステップは、実行される都度、所定の管理時間分の待ちを行ない、循環過程の繰り返しより、複数のメモリへのデータ書き込みを、実質的に並行して行うことを特徴としている。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明の実施の形態を説明する。
【００２０】
図１は、本実施形態のプリンタ装置１０のハードウェアを表すブロック図である。
【００２１】
図１では、プリンタ装置１０の本発明に直接関連する情報の記憶に係る回路や、電源に係る回路のみを示しており、プリント用紙搬送機構やキャリッジ駆動機構のような本発明の理解に不必要な構成要素については示していない。
【００２２】
プリンタ装置１０は、図１に示すように、プリンタ装置１０内での情報処理を行うプリンタ制御回路２０と、印字を行うときに利用する複数色のインク（例えば、６色）をそれぞれ保管する複数のインクカートリッジ３０と、プリンタ装置１０を駆動させるために必要な電力を生成する電源４０とを備えている。プリンタ制御回路２０は、RAM２１、本体EEPROM２２、及びCPU２３を備えている。インクカートリッジ３０の各々は、インクカートリッジEEPROM３１を備えている。
【００２３】
RAM２１と本体EEPROM２２とは、CPU２３に、データバス２５とアドレスバス２６とを介して接続されている。また、本体EEPROM２２は、CPU２３に、BUSYライン２７でも通信可能に接続されている。各インクカートリッジEEPROM３１は、CPU２３に、シリアルデータライン３２とシリアルクロックライン３３とを介して接続される。本体EEPROM２２は、アドレスで指定される記憶場所に、データをワード単位でパラレルに読み出しと書き込みをする、一般的なタイプのEEPROMである。一方、インクカートリッジEEPROM３１は、シリアルクロックに同期して、データを１ビットずつシリアルに読み出しと書き込みをする、シリアルタイプのEEPROMである。
【００２４】
RAM２１は、CPU２３によりメインメモリやワーク領域として用いられる。RAM２１内には、プリンタ装置１０が作動中に行うヘッドクリーニング等の操作情報や、インクカートリッジ３０内のインクメンテナンスに関する情報等が記憶されており、その記憶されている情報は、任意のアドレスを指定して読み書きされることが可能である。RAM２１は、揮発性の記憶デバイスであるから、RAM２１に記憶される情報は、電源４０がOFFになると消えてしまう。
【００２５】
本体EEPROM２２は、不揮発性メモリであるから、本体EEPROM２２に記憶される情報は、電源４０がOFFになっても消えない。そのため、プリンタ装置１０の電源４０がOFFになる前に、RAM２１に記憶されている情報を本体EEPROM２２へコピーしておくことにより、次回以降にプリンタ装置１０を起動する時にも、本体EEPROM２２に記憶されている情報を利用して、再び、前回のプリンタ装置１０の状態でプリンタ装置１０を使用することが出来る。本体EEPROM２２へコピーされる情報は、RAM２１に記憶されている情報の中で、特に電源OFFで消去されるべきでない、プリンタ制御回路２０が必要とする特定の情報である。
【００２６】
各インクカートリッジEEPROM３１は、本体EEPROM２２と同様、不揮発性メモリであるから、各インクカートリッジEEPROM３１に記憶される情報は、電源４０をOFFにしても消えない。そのため、プリンタ装置１０の電源４０がOFFになる前に、RAM２１に記憶されている情報をインクカートリッジEEPROM３１へコピーしておくことにより、次回以降にプリンタ装置１０を起動する時にも、インクカートリッジEEPROM３１に記憶されている情報を利用して、再び、プリンタ装置１０を使用することが出来る。各インクカートリッジEEPROM３１へコピーされる情報は、RAM２１に記憶されている情報の中で、特に、各インクカートリッジ３０に関する制御に必要があるインクメンテナンス等に関する特定の情報である。
【００２７】
CPU２３は、NMI（マスク不能割り込み：CPUのソフトウェアで禁止することができない割り込み）入力ポートを有し、電源４０からの割り込み信号が入力される。電源４０からの割り込み信号は、突発的に電源４０がOFFとなると発生する。CPU２３は、NMIプログラム２４を備えており、NMIプログラム２４は、NMI入力ポートへの割り込みが入力された時（つまり、突発的に電源がOFFとなった時）に、起動される。NMIプログラム２４は、電源４０が突発的にOFFになるときに起動し、電源４０が完全にOFFになるまでの短い時間内に、揮発性のメモリであるRAM２１に記憶されているインクメンテナンス等の特別の情報を確認し、それらの情報の中で不揮発性のメモリである本体EEPROM２２とインクカートリッジEEPROM３１とに記憶されていない情報を、本体EEPROM２２とインクカートリッジEEPROM３１とへそれぞれコピーする。それにより、次回以降にプリンタ装置１０が起動するときに、不揮発性のメモリである本体EEPROM２２とインクカートリッジEEPROM３１に記憶されている情報を利用して、前回のプリンタ装置１０の状態で、プリンタ装置１０を利用することが出来るようになる。
【００２８】
この実施形態は、上述したように、突発的に電源４０がOFFになった場合に、CPU２３に備えられているNMIプログラム２４の制御指示により、RAM２１に記憶されている特定の情報が本体EEPROM２２とインクカートリッジEEPROM３１へコピーされることができる制御技術に関するものである。特に、短時間、且つ効率よく上記本体EEPROM２２とインクカートリッジEEPROM３１へのデータコピーが行われる必要がある。
【００２９】
図２は、本体EEPROM２２とインクカートリッジEEPROM３１へのデータコピー動作に関するものであり、特に、それぞれのEEPROMへのデータコピー動作に利用することが出来る時間を表す図である。
【００３０】
図２に示すように、突発的な電源OFFが生じることにより（図２（A））、電源４０の電圧は、動作時の電圧（例えば、４２V）から０Vへ向けて減衰していく（図２（B））。本体EEPROM２２とインクカートリッジEEPROM３１へのデータコピー動作は、電源４０の電圧が４２Vから減衰し始める時から開始され、電源４０の電圧が例えば１５V以下となる時（図２（B））までの間に実行される。よって、図２において、Tで示される期間が本体EEPROM２２とインクカートリッジEEPROM３１へのアクセスが可能なアクセス可能期間となる。
【００３１】
限られたアクセス可能期間Tの時間内に、本体EEPROM２２とインクカートリッジEEPROM３１へのデータコピーを、上述したアクセス可能期間T内に完了させる必要がある。ところが、アクセス可能期間Tを長く確保するためには、コストの高い大容量のコンデンサを用いなければならない。そこで、複数のメモリにアクセスする際に、アクセスに要する時間を増加させることなく、短時間、且つ効率よくアクセス制御を行う必要がある。
【００３２】
図３は、本体EEPROM２２とインクカートリッジEEPROM３１とへのアクセス方法に関しての概略順序を表す図である。
【００３３】
CPU２３は、図３に示すように、電源４０の突発な停止命令、ＮＭＩ割り込みを受け（S１１０）、その瞬間から、ＣＰＵ２３は、上記アクセス可能期間Ｔを利用して、ＲＡＭ２１から特定のデータを読み出し（S１１１）（S１１２）、そして、そのデータが、本体EEPROM２２とインクカートリッジEEPROM３１に、既に記憶されてあるかを確認し、まだ記憶されていないデータを、本体EEPROM２２とインクカートリッジEEPROM３１とへそれぞれコピーする（S１１３）（S１１４）。
【００３４】
図４は、インクカートリッジEEPROM３１へのデータコピー制御処理を表すタイミングチャートである。
【００３５】
図４（A）には、図１のシリアルデータライン３２上のシリアルデータ（SDA）が示される。図４（B）には、図１のシリアルクロックライン３３上のシリアルクロック（SCK）が示される。又、図４（C）には、それぞれの動作に必要な時間が示される。
【００３６】
一つのインクカートリッジEEPROM３１には、例えば、８ビットのデータが記憶される。インクカートリッジEEPROM３１へのデータコピー制御処理は、インクカートリッジEEPROM３１から８ビットのデータをREADする動作から始まる。READデータは、CPU２３により、WRITEデータと一致するかをチェックされる（ベリファイ動作）。ベリファイの結果、異なっていれば、WRITEデータのWRITE動作が行われる。READ動作では、１０数ビット程度のREADのオペレーションコード（OPコード）が、１ビットずつシリアルにインクカートリッジEEPROM３１へ与えられ、続いて、インクカートリッジEEPROM３１から８ビットのREADデータが１ビットずつシリアルに読み出される。WRITE動作に関しては、１０数ビット程度のWRITEのOPコードが１ビットずつシリアルにインクカートリッジEEPROM３１へ与えられ、続いて８ビットのWRITEデータが１ビットずつシリアルにインクカートリッジEEPROM３１に書き込まれる。
【００３７】
READのOPコードと、READデータと、WRITEのOPコードの操作は、高速に行うことができ、それぞれ数１０μsec程度である。これに対して、WRITE動作は長い時間がかかる。すなわち、１ビットをWRITEするために必要な時間は、例えば、図４（C）に示すように、３msec＋９μsecであり、この実施形態では、最低でも３msecの時間、シリアルクロックをハイレベルにしてWAITする必要がある。そして、インクカートリッジ３０が、シアン、ライトシアン、マゼンタ、ライトマゼンタ、イエロー、ブラックの６色の場合、全インクカートリッジEEPROM３１へのデータWRITEに必要な時間は、（３msec＋９μsec）×８ビット×６色＝１４４msec＋４３２μsecである。ここで、４３２μsecは、１４４msecに比べると、非常に小さな値なので、無視できる。よって、例えば、６色のインクカートリッジEEPROM３１へ８ビットデータをWRITEするのに必要な時間は、約１４４msecとなる。
【００３８】
図５は、本体EEPROM２２へのデータコピー制御処理を表すタイミングチャートである。
【００３９】
図５（A）には、本体EEPROM２２からのREAD動作と、CPU２３からのWRITE動作が示されており、この実施形態では３４ワードを１ワード単位で本体EEPROM２２へコピーする。１ワードは例えば、１６ビットである
【００４０】
本体EEPROM２２へのデータコピー制御処理は、本体EEPROM２２から１ワードのデータをREADする動作から始まる。READデータは、CPU２３により、WRITEデータと一致するかをチェックされる（ベリファイ動作）。ベリファイの結果、異なっていれば、WRITEデータのWRITE動作が行われる。READ動作は高速に行うことができ、１ワード当たり７５μsec程度である。これに対して、WRITE動作は長い時間がかかる。すなわち、１ワードをWRITEするために必要な時間は、例えば、図５（B）に示すように、６２μsec＋（１０μsec〜５msec）であり、本体EEPROM２３の内部の動作状況に応じて上述した（１０μsec〜５msec）の部分時間が変わってくるが、最大に必要な時間は６２μsec＋５msecである。１ワードのWRITE動作中は、BUSY信号がBUSYラインを介してCPU２３へ送られ続ける。１ワードのデータコピーが完了すると、BUSY信号が停止する。BUSY信号が５msecを過ぎても停止しない場合には、５msecを経過した時点でデータコピー完了とみなして良い。
【００４１】
３４ワードすべてが本体EEPROM２２へWRITEされるために必要な最大時間は、図５（B）に示すように、（５msec＋６２μsec）×３４ワード＝１７０msec＋２３０８μsecである。ここで、２３０８μsecは、１７０msecに比べると、非常に小さな値なので、無視できる。よって、例えば、本体EEPROM２２へ、３４ワードのデータをWRITEするのに必要な時間は、約１７０msecとなる。
【００４２】
図６は、インクカートリッジEEPROM３１と本体EEPROM２２とへのデータコピー制御処理の流れの一例の図である。
【００４３】
図６に示すように、インクカートリッジEEPROM３１（図６（A））へのデータコピーと、本体EEPROM（図６（B））へのデータコピーとが、直列に行われている。インクカートリッジEEPROM３１へのREADと、インクカートリッジEEPROM３１へのWRITEが終了したら、次に、本体EEPROM２２へのREADとWRITEを行う。そして、それぞれに必要な時間は、図６（C）より、約１４４msecと約１７０msecであるから、両方にかかる時間の合計は、３１４msecとなることが分かる。
【００４４】
これに対して、図７は、インクカートリッジEEPROM３１と本体EEPROM２２とへのデータコピーを並行に行う方法を示す図である。
【００４５】
並行でのインクカートリッジEEPROM３１と本体EEPROM２２とへのデータコピー方法だと、それぞれのEEPROMへのデータコピーを行う際に必要な時間の合計を短縮することができる。図６に示した直列の場合だと、それぞれのデータコピー制御手段に必要な時間の和が全体のデータコピー制御手段にかかる時間であるが、図７の並行の場合だと、全体のデータコピー制御手段の完了に必要な時間を短縮することができる。並行で行うデータコピー制御処理の詳細については、図８から説明する。
【００４６】
並行でデータコピーを行う際に、図７（A）のように、インクカートリッジEEPROM３１と本体EEPROM２２とへのコピー開始を同時にする方法と、図７（B）のように、全てのインクカートリッジEEPROM３１のREADをまずまとめて行い、そして、そのインクカートリッジEEPROM３１のREAD完了後に、インクカートリッジEEPROM３１のWRITEと本体EEPROM２２のデータコピーとを開始する方法とがある。前者の方法では、インクカートリッジEEPROM３１へのREADは、WRITEのWAIT時間に対して非常に早いので、状態管理する際に必要になるポーリング処理の分解能を上げる必要があり、かえって処理全体から見て、その処理がオーバヘッドになる恐れがある。そのため、後者では、一般には一つの処理としてまとめていた、インクカートリッジEEPROM３１へのREADとWRITEとを分割し、全てのインクカートリッジEEPROM３１のREAD処理を事前にまとめて処理しておき、WRITE処理のみを、本体EEPROM２２のデータコピー処理と並行して行うことが望ましい。
【００４７】
図８は、本体EEPROM２２とインクカートリッジEEPROM３１とへのWRITE処理を直列で行う場合と並行で行う場合のデータ操作の方法を表す図である。
【００４８】
図８（A）に示すように、インクカートリッジEEPROM３１へ例えばN個のデータ（Nビット）をWRITEし、その次に、本体EEPROM２２へ例えばMデータ（Mワード）を、WRITEする場合、まず、インクカートリッジEEPROM３１への１データ出力を開始し（２００）、その１データのWRITEが完了するまで、その１データの出力状態を保持し、WAIT時間２０１（例えば、３msec）待つ。そして、次の１データの出力開始２００があり、そして、その１データのデータコピーが完了するまで、WAIT時間２０１待つ。これを繰り返して、すべてのインクカートリッジEEPROM３１へのNデータのWRITEを完了させてから、次の、本体EEPROM２２へのデータWRITEを開始する。本体EEPROM２２へのWRITE処理では、まず、本体EEPROM２２への１データ出力を開始し（２０２）、その１データのWRITEが完了するまで、データ出力状態を保持して、WAIT時間２０３（例えば、最大５msec）待ち、これをMデータ分続ける。よって、全WRITE制御処理が完了するために必要な時間の合計は図示のT２となる。
【００４９】
図８（B）は、インクカートリッジEEPROM３１へのWRITEと本体EEPROM２２へのWRITEとを並行に行う場合のデータ操作が、図８（A）の直列の場合のそれとどのように異なるかが分かる図である。
【００５０】
この方法では、図８（B）に示すように、１データ出力開始処理と、その後のWAIT処理とを分離し、両処理を切り替えて実行する構成をとる。
【００５１】
例えば、インクカートリッジEEPROM３１への１データ出力を開始し（２００）、続いて、本体EEPROM２２への１データ出力を開始（２０２）する。そして、それぞれのEEPROM３１、２２のデータ出力状態を保持したまま、それらのWAIT時間２０１，２０３より短い所定の管理時間（例えば、両WAIT時間２０１，２０３の最大公約数的な時間である１msec）だけWAITする。このWAIT処理が終わると、インクカートリッジEEPROM３１への１データデータコピーが完了した（つまり、WAIT時間２０１が経過した）かをチェックし、未完了ならば、現在のデータ出力状態を維持し、完了ならば、現在のデータ制御処理を終了させ、次の１データ出力を開始する（２００）。続いて、本体EEPROM２２への１データデータコピーが完了した（つまり、WAIT時間２０３が経過した）かをチェックし、未完了ならば、現在のデータ出力状態を維持し、完了ならば、現在のデータ制御処理を終了させ、次の１データ出力を開始する（２０２）。このように、それぞれのEEPROMに対する１データ出力開始処理（前データデータコピー完了のチェック、つまりWAIT時間経過チェックを含む）と、所定の管理時間分のWAIT処理とを逐次的に行う動作を循環過程として繰り返すのである。
【００５２】
その結果、図８（B）に矢印２０４で示すような一本のシーケンシャルなプロセス（つまり、マルチタスク制御を用いないシングルタスクのプロセス）で、本体EEPROM２２とインクカートリッジEEPROM３１とのデータコピーが並行に行われ、全データコピー時間T3が、ほぼT2の半分くらいに短縮することが出来る。図１に示したNMIプログラム２４は、CPU２３のOSが動作しない環境下で動作するものであり、OSがもつマルチタスク制御を利用できない。そこで、図８（B）に示したシーケンシャルなプロセスを行うシングルタスクとして、NMIプログラム２４が構成される。
【００５３】
次に、図９〜図１３を用いて、NMIプログラム２４による、本体EEPROM２２とインクカートリッジEEPROM３１とへのデータコピーの具体的制御手順についての詳細をフローチャートで説明する。
【００５４】
図９は、インクカートリッジEEPROM３１と本体EEPROM２２とへのデータコピー制御の全体フローチャートである。図１０は、図９内のインクカートリッジEEPROM３１のデータコピー（S１３）の詳細についてのフローチャートである。また、図１１は、図１０内の１インクカートリッジEEPROM３１分のWRITE制御処理（S２４）の詳細についてのフローチャートである。また、図１２は、図９内の本体EEPROM２２データコピー（S１４）の詳細についてのフローチャートである。また、図１３は、図１２内の本体EEPROM２２の１ワード分のデータコピー（S５４）の詳細についてのフローチャートである。
【００５５】
まず、CPU２３（NMIプログラム２４）は、図９に示すように、インクカートリッジEEPROM３１と、本体EEPROM２２とへのデータコピー準備を行う（S１１）、（S１２）。Ｓ１１では、６つのインクカートリッジEEPROM３１からのデータＲＥＡＤとベリファイの処理も行われる。
【００５６】
次に、図９内の点線Pで囲まれている循環過程で、インクカートリッジEEPROM３１へのWRITE制御（S１３）と、本体EEPROM２２へのREADとWRITE制御（S１４）とが順次に行われる。このときのインクカートリッジEEPROM３１へのWRITEは、後述する図１０、図１１で詳しく示すが、８ビットのデータが各ビットに分割され、１ビットずつ行われる。また、本体EEPROM２２へのREADとWRITEは、後述する図１２、図１３で詳しく示すが、３４ワードのデータが各ワードに分割され、１ワードずつ行われる。インクカートリッジEEPROM３１への１ビットのWRITE制御処理（S１３）と本体EEPROM２２への１ワードのREADとWRITE制御処理（S１４）とが、逐次に行われる。この動作の後は、S１６で、タイマにより１msec時間のカウントが行われる。つまり、１msecのWAITが行われる。
【００５７】
このように、複数のEEPROM３１，２２への逐次的なWRITE制御処理と、その後の１msecのWAIT処理とからなる循環過程が、繰り返し実行される。S１６を通る毎に1msecずつWAITする。すなわち、１msecずつ時間を計ることにより、図４（C）に示した１ビットWRITEのための３msecのWAIT時間と、図５（B）に示された１ワードWRITEのための最大５msecのWRITE時間の状況を１msec単位で確認することができる。これにより、複数のEEPROM３１、２２へのデータコピーが実質的に並行して行われることになる。
【００５８】
次に、図１０で、図９のインクカートリッジEEPROM３１へのWRITE制御処理（S１３）の詳細を説明する。
【００５９】
まず、インクカートリッジEEPROM３１のWAIT状態を調べる（S２１）。初期設定は０である。ここで、WAIT状態とは、WRITE制御の進捗状況を表す値であり、この値は図９のS１６で１msec時間をWAITする都度に１上がる。S２１の結果、WAIT状態が初期値０以外ならば、制御は後述するS２４へ進む。一方、WAIT状態が初期値０ならば、制御はS２２へ進んで、６つ全部のインクカートリッジEEPROM３１のWRITEが終了したかを確認し（S２２）、全てのインクカートリッジEEPROM３１へのWRITEが終了していると判定されれば、このWRITE制御処理を終了し（S２６）、図９のS１４へ進む。また、S２２で、まだWRITEが終了していないインクカートリッジEEPROM３１が存在すると検知したら、S２３へ制御は進む。S２３では、これからWRITEを始める一つのインクカートリッジEEPROM３１に対する８ビットのWRITEデータを取得する。そして、一つのインクカートリッジEEPROM３１に対するWRITE制御（以下、１カートリッジ分WRITE制御と言う）を開始する（S２４）。１カートリッジ分WRITE制御の詳細は、後述する図１１で説明する。その後、再び、今制御中のインクカートリッジEEPROM３１のWAIT状態を調べる（S２５）。ここでのWAIT状態が、初期値０ならば、制御は上述したS２１へ戻る。一方、WAIT状態が、初期値０以外ならば、S２７で現在の制御状態をそのまま維持して処理され、図９のS１４へ進む。図１０の制御が図９の循環過程Pでくり返されることにより、６つのインクカートリッジEEPROM３１への８ビットデータのWRITEが逐次に行われることになる。
【００６０】
次に、図１１で、図１０内の１カートリッジ分WRITE制御処理（S２４）についての詳細を説明する。
【００６１】
まず、WAIT状態を調べる。次のステップへは、このWAIT状態の値によって異なる。１カートリッジ分の８ビットデータのWRITEが終了するためには、WAIT状態が０から３まで通過して再び０に戻らなければならない。WAIT状態が０の場合は、８ビットデータ中のどのビットデータの出力もまだ開始していないということである。WAIT状態が１又は２の場合は、あるビットデータの出力開始後WAIT中であって、そのWAIT状態の数値が示す時間（msec）だけ、すでにWAITしたということである。WAIT状態が３の場合は、３msecのWAIT時間が経過して１ビットWRITEの最終段階に来たということである。
【００６２】
S３１のWAIT状態＝０では、まず、WRITEのOPコードをインクカートリッジEEPROM３１へ送る（S３２）。その後、最初の１ビットのWRITEデータをシリアルデータライン３２へ出力する（S３３）。この１ビットデータの出力状態を維持したまま、１μsec時間WAITし（S３４）、シリアルクロックをハイにあげる（S３５）。そして、WAIT状態が０から１へ更新され（S３６）、制御は、図１０のS２５へ進む。前述したように、図１０のS２５では、更新されたWAIT状態が確認され、確認されたWAIT状態が未だ０でないならば、１カートリッジ分の８ビットデータのWRITEがまだ終了してなければ、このWRITE制御処理を継続され（S２７）るので、次の循環過程で再び図１１のルーチンが実行される。
【００６３】
図１１のS３１で、WAIT状態が１又は２と確認された場合は、WRITEデータとシリアルクロックの状態を数えるように、WAIT状態が更新される（S３７）、（S３８）。この過程は、図４（C）に示した３msecのWAIT処理の途上にあたる。この後、制御は図１０のS２５へ進む。
【００６４】
S３１でWAIT状態が３と確認された場合は、図４（C）に示した３msecのWAIT処理が終わった事を意味する。まず、シリアルクロックをローにさげ（S３９）、８μsec時間WAITする（S４０）。そして、８ビット全てが送信済みかを判定し（S４１）、まだ送出されていないビットがあるならば、送出されていない１ビットを出力する（S４３）。この１ビットデータの出力状態を維持したまま、１μsec時間WAITし（S４４）、シリアルクロックをハイにあげる（S４５）。そして、WAIT状態が３から１へ更新され（S４６）、制御は、図１０のS２５へ進む。
【００６５】
S４１で８ビットが送出済みと判定されれば、制御はS４７へ進み、WAIT状態が再び０へ戻される。そして、制御は、図１０のS２５へ進む。
【００６６】
図１１内のWAIT状態の数字１〜３は、主として、前述したように、図４（C）に示した１ビットをコピーする際に必要な３msecのWAIT時間を測るための数字である。このWAIT状態の値は、図９のS１６の１msecのWAITを通る都度１ずつ増えていく。
【００６７】
図１２は、図９内の本体EEPROM２２のREADとWRITE制御処理（S１４）の詳細についてのフローチャートである。
【００６８】
図１２のS５１で、本体EEPROM２２のWAIT状態を確認する。このWAIT状態は、この制御処理の進捗状況（主に、WAIT時間の経過状況）を示すものであり、図９のステップS１６の１msecのWAITを行う都度に１ずつ上がる。各ワードについて、まだREADを開始してないとき、WAIT状態は初期値０である。S５１でWAIT状態が０でないとの判定結果が出たら、後述するS５４へ進む。S５１でWAIT状態＝０との判定結果が出たら、S５２で、３４のワード全てのWRITEが終了されたかを判定する（S５２）。ここで、全てのワードのデータコピーが終了されたと判定されれば、この制御処理を終了し（S５６）、図９のS１５へ進む。もし、まだ、全てのワードのデータコピーが終了されていないと判定結果が出れば、本体EEPROM２２へのコピーするべき１ワード分のデータを取得する（S５３）。その後、S５４で、本体EEPROM２２の１ワード分のREADとWRITEの制御処理が行われる。ここでの１ワード分のREADとWRITE制御処理の詳細は、後述する図１３で説明する。その後、S５５では、S５４により更新されたWAIT状態の値か判定され、それが０（１ワードのWRITE完了）と判定されれば、制御は再び、S５１へ戻る。S５５で、WAIT状態が０以外（１ワードのWRITE処理の中のWAIT処理中）と判定されれば、そのWAIT処理の状態を維持したまま、図９のS１５へ進む（S５７）。
【００６９】
図１３は、図１２のフローチャート内のワード分のREADとWRITE制御処理（S５４）の詳細についてのフローチャートである。
【００７０】
ここでも、S６１で、本体EEPROM２２へのWAIT状態かを判定され、その結果に応じて、次のステップが決まる。WAIT状態が０の場合は、まだREADを開始していないことを意味する。WAIT状態が１〜４の場合は、WRITEを開始後WAIT中ということを意味し、WAIT状態の数値は、すでにWAITした時間（msec）を表す。WAIT状態が５の場合は、１ワードのWRITEが完了したということである。
【００７１】
S５１で、WAIT状態が０の場合は、本体EEPROM２２のWRITEすべきアドレスから１ワードをREADする（S６２）。そして、READしたワードが、WRITEすべきワードと一致するかを確認し（S６３）、もし、一致していたならば、次のアドレスへアドレスポインタを移し（S６６）、WAIT状態＝０を維持したまま図１２のS５５へ進む。S６３で、不一致してあったならば、そのWRITEすべきワードを本体EEPROM２２へ出力し（S６４）、WAIT状態を１に更新する（S６５）。そして、WRITEワードの出力状態を維持したまま、図１２のS５５へ進む。
【００７２】
図１３のS６１で、WAIT状態が１〜４と判定されたら、すでに、本体EEPROM２２へのWRITEワードの出力を開始して、そのままWAIT状態の数値にあたる時間（msec）だけWAITしたということである。ここでは、本体EEPROM２２でのWRITEワードのWRITEが完了したかどうかを、BUSY信号により判定する（S６８）。S６８でBUSYであると判定されたら、まだWAITを続けるべきと言うことで、WAIT状態が更新され（S６９）、制御は図１２のS５５へ進む。S６８でBUSYであると判定されなかったら、WAITは終わり、次のWRITEワードを出力するために、次のアドレスへアドレスポインタを移し（S７１）、WAIT状態＝０を維持したまま（S７２）、図１２のS５５へ進む。
【００７３】
また、図１３のS６１で、WAIT状態が５と、判定されたら、本体EEPROM２２へのWRITEワードのWRITEが完了したということである。S７３で、次のアドレスへアドレスポインタを移動し（S７３）、WAIT状態を０へ更新する（S７４）。そして、制御は、図１２のS５５へ進む。
【００７４】
図１３内のWAIT状態の数字１〜５は、前述したように、図５（B）に示す１ワードをコピーする際に必要な最大５msecのWAIT時間を測るための数字である。このWAIT状態の数値は、図９のS１６の１msecのWAITを行う都度に１ずつ増えていく。
【００７５】
このように、シングルタスクであるNMIプログラム２４による本体EEPROM２２とインクカートリッジEEPROM３１へのデータコピー制御において、本体EEPROM２２とインクカートリッジEEPROM３１へのWRITEデータ出力とWAIT時間の計測とを、所定の管理時間（１msec）間隔で交互に逐次に行っていくことで、並行的なデータコピーが行われる。この方法により、図８で明らかなように、コピーするのに必要な時間が短縮される。
【００７６】
また、本発明のアクセス制御方法は、プリンタ装置におけるデータコピー制御に限定されるものではない。複数のメモリを実装しており、これらのメモリに対してアクセス制御を行うことが要求される構成であれば、同様に適用することができる。
【００７７】
また、本発明のアクセス制御装置は、次のような処理を行うこともできる。
【００７８】
あるメモリへ書き込むべきデータを全て書き込んだら、そのメモリの書き込み手段はとばして、タイマと残りの書き込み手段を、逐次に繰り返して動作することができる。
【００７９】
また、あるメモリの書き込みは、最初のうちは繰り返し動作の中で行われず、別のメモリが書き込むべきデータを全て書き込まれたら、繰り返し動作の中で、行われるようにすることもできる。
【００８０】
また、あるメモリへ書き込むべきデータを全て書き込み、まだ書き込みが残っているメモリが一つだけになった時、常にその一つだけ残ったメモリだけを監視し続けて、順次分割されたデータを書き込んでいくこともできる。
【図面の簡単な説明】
【００８１】
【図１】プリンタ装置１０のハードウェアを表すブロック図。
【図２】本体EEPROM２２とインクカートリッジEEPROM３１とへのデータコピー動作に利用することができる時間を表す図。
【図３】本体EEPROM２２とインクカートリッジEEPROM３１とへのアクセス方法に関しての概略順序を表す図。
【図４】インクカートリッジEEPROM３１へのデータコピー制御処理を表すタイミングチャート。
【図５】本体EEPROM２２へのデータコピー制御処理を表すタイミングチャート。
【００８２】
【図６】インクカートリッジEEPROM３１と本体EEPROM２２とへのデータコピー制御処理の流れの一例の図。
【図７】インクカートリッジEEPROM３１と本体EEPROM２２とへのデータコピー方法を並行に行う方法を示す図。
【図８】本体EEPROM２２とインクカートリッジEEPROM３１とへのWRITE処理を直列で行う場合と並行で行う場合のデータ操作の方法を表す図。
【図９】インクカートリッジEEPROM３１と本体EEPROM２２とへのデータコピー制御の全体フローチャート。
【図１０】図９内のインクカートリッジEEPROM３１へのWRITE制御処理（S１３）の詳細を説明するフローチャート。
【図１１】図１０内のインクカートリッジEEPROM３１の１カートリッジ分WRITE制御処理（S２４）についての詳細を説明するフローチャート。
【図１２】図９内の本体EEPROM２２のREADとWRITE制御処理（S１４）の詳細についてのフローチャート。
【図１３】図１２内のワード分のREADとWRITE制御処理（S５４）の詳細についてのフローチャート。
【符号の説明】
【００８３】
１０…プリンタ装置、  ２０…プリンタ制御回路、  ２１…RAM、  ２２…本体EEPROM、  ２３…CPU、  ２４…NMIプログラム、  ２５…データバス、  ２６…アドレスバス、  ２７…BUSYライン、  ３０…インクカートリッジ、  ３１…インクカートリッジEEPROM、  ３２…シリアルデータライン、３３…シリアルクロックライン、  ４０…電源、  １００…主電源スイッチがOFFとなるタイミング、  １０１…主電源パワーが１５V以下となるタイミング、  ２００…インクカートリッジEEPROM  WRITEデータ出力開始、  ２０１…インクカートリッジEEPROM  WAIT時間、  ２０２…本体EEPROM  WRITEデータ出力開始、  ２０３…本体EEPROM  WAIT時間
【図１】
2006092414.tif 000003
【図２】
2006092414.tif 000004
【図３】
2006092414.tif 000005
【図４】
2006092414.tif 000006
【図５】
2006092414.tif 000007
【図６】
2006092414.tif 000008
【図７】
2006092414.tif 000009
【図８】
2006092414.tif 000010
【図９】
2006092414.tif 000011
【図１０】
2006092414.tif 000012
【図１１】
2006092414.tif 000013
【図１２】
2006092414.tif 000014
【図１３】
2006092414.tif 000015