(57)【特許請求の範囲】
【請求項１】
撮影手段によって撮影された被写体の画像信号をマルチタスクＯＳを搭載したプロセサによって記録媒体に記録するディジタルカメラであって、
前記プロセサは前記画像信号を内部メモリに書き込む第１タスクと前記内部メモリに格納された前記画像信号を前記記録媒体に記録する第２タスクとを並行して実行し、
前記第２タスクは前記第１タスクによる前記内部メモリのアクセス状況に応じて前記記録媒体への前記画像信号の転送を中断する転送中断処理を含む、ディジタルカメラ。
【請求項２】
前記第１タスクは前記内部メモリに書き込んだ前記画像信号のアドレス情報を管理する管理テーブルを作成する管理テーブル作成処理を含み、
前記第２タスクは前記管理テーブルに基づいて前記画像信号を前記内部メモリから読み出す画像読み出し処理を含む、請求項１記載のディジタルカメラ。
【請求項３】
前記第１タスクは、前記内部メモリに格納されたかつ未だ前記第２タスクを施されていない前記画像信号の信号量を判別する信号量判別処理、および前記信号量に応じて前記画像信号の書き込みを中断する中断処理を含む、請求項１または２記載のディジタルカメラ。
【請求項４】
前記信号量判別処理は、前記信号量が第１数値を超えたかどうかを判別する第１判別処理、および前記信号量が前記第１数値よりも大きい第２数値を超えたかどうかを判別する第２判別処理を含み、
前記中断処理は、前記信号量が前記第１数値を超えたときタイミング信号が発生するまで前記画像信号の書き込みを中断する第１中断処理、および前記信号量が前記第２数値を超えたとき前記第２タスクが終了するまで前記画像信号の書き込みを中断する第２中断処理を含む、請求項３記載のディジタルカメラ。
【請求項５】
前記第１タスクは、前記画像信号のサイズを検出するサイズ検出処理、前記サイズに基づいて前記記録媒体の残容量を予測する残容量予測処理、前記残容量に基づいて記録可能な画像枚数を算出する枚数算出処理、および前記画像枚数をモニタに表示する表示処理を含む、請求項１ないし４のいずれかに記載のディジタルカメラ。
【請求項６】
前記第１タスクは、撮影指示の入力の有無を判別する撮影指示判別処理、前記撮影指示が入力されたとき前記撮影手段を能動化する能動化処理、および前記能動化処理に基づいて前記撮影手段によって撮影された被写体の画像信号を前記内部メモリに書き込む画像書き込み処理を含む、請求項１ないし５のいずれかに記載のディジタルカメラ。
【請求項７】
前記第１タスクは、前記撮影指示判別処理に先立って撮影条件調整指示の入力の有無を判別する調整指示判別処理、および前記撮影条件調整指示が入力されたとき前記撮影条件を調整する調整処理をさらに含む、請求項６記載のディジタルカメラ。
【請求項８】
前記第１タスクは、前回の前記撮影指示の入力タイミングおよび今回の前記撮影条件調整指示の入力タイミングの差分に応じて今回の前記調整処理を不能化する不能化処理をさらに含む、請求項７記載のディジタルカメラ。
【請求項９】
前記撮影手段から出力された撮影画像信号を圧縮する圧縮手段をさらに備え、前記画像信号は前記圧縮手段によって生成された圧縮画像信号である、請求項１ないし８のいずれかに記載のディジタルカメラ。
【請求項１０】
前記記録媒体は着脱可能である、請求項１ないし９のいずれかに記載のディジタルカメラ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、ディジタルカメラに関し、特にたとえば、撮影指令に応答して被写体を撮影し、撮影画像信号を記録媒体に記録する、ディジタルカメラに関する。
【０００２】
【従来の技術】
従来のディジタルカメラでは、被写体像はＣＣＤイメージャのようなイメージセンサによって撮影され、撮影された画像信号は、所定の信号処理を施された後、ＣＰＵによって記録媒体に記録されていた。
【０００３】
【発明が解決しようとする課題】
しかし、記録媒体の多くは着脱可能であり、このような記録媒体はインタフェースを介してＣＰＵと接続される。このため、従来技術では、画像信号の記録に時間がかかり、この結果、シャッタボタンの操作間隔つまり撮影間隔が長くなるという問題があった。
【０００４】
それゆえに、この発明の主たる目的は、撮影間隔を短縮することができる、ディジタルカメラを提供することである。
【０００５】
【課題を解決するための手段】
この発明に従うディジタルカメラは、撮影手段によって撮影された被写体の画像信号をマルチタスクＯＳを搭載したプロセサによって記録媒体に記録するディジタルカメラであって、プロセサは画像信号を内部メモリに書き込む第１タスクと内部メモリに格納された画像信号を記録媒体に記録する第２タスクとを並行して実行し、第２タスクは第１タスクによる内部メモリのアクセス状況に応じて記録媒体への画像信号の転送を中断する転送中断処理を含む。
【０００６】
【作用】
第１入力キーによって撮影指示が入力されると、撮影回路が被写体像を撮影する。被写体像の画像信号は、前記内部メモリに一旦書き込まれ、その後記録媒体に記録される。画像信号を内部メモリに書き込む書き込み処理および内部メモリの画像信号を記録媒体に記録する記録処理は、マルチタスクＣＰＵによって並行して行われる。
【０００７】
この発明のある局面では、書き込み処理は、撮影指示の入力を所定タイミングで判別する撮影指示判別処理、撮影指示判別処理の処理結果に応じて撮影回路を能動化する撮影能動化処理、画像信号を内部メモリに書き込む画像書き込み処理、および画像信号のアドレス情報を管理する管理テーブルを作成する作成処理を含む。また、記録処理は、管理テーブルに基づいて画像信号を内部メモリから読み出す画像読み出し処理、および画像読み出し処理によって読み出された画像信号を記録媒体に記録する画像記録処理を含む。
【０００８】
つまり、書き込み処理によって内部メモリに書き込まれた画像信号のアドレス情報は、管理テーブルによって管理される。記録処理においては、このような管理テーブルに基づいて画像信号が内部メモリから読み出される。したがって、書き込み処理および記録処理が互いに独立しているにも拘わらず、画像信号は適切に記録される。
【０００９】
この発明のある実施例では、書き込み処理は、内部メモリに書き込まれかつ未だ記録処理が行われていない画像信号の信号量を管理テーブルに基づいて判別する信号量判別処理、および信号量判別処理の処理結果に応じて書き込み処理を中断する中断処理をさらに含む。
さらに、信号量判別処理は、信号量が第１所定値を超えたかどうかを判別する第１判別処理、および信号量が第２所定値を超えたかどうかを判別する第２判別処理を含み、中断処理は、信号量が第１所定値を超えたとき所定のタイミング信号が発生するまで書き込み処理を中断する第１中断処理、および信号量が第１所定値よりも大きい第２所定値を超えたとき記録処理が終了するまで書き込み処理を中断する第２中断処理を含む。
【００１０】
つまり、記録処理を施されていない画像信号が内部メモリに蓄積され、内部メモリの残容量がなくなってきたとき、書き込み処理が中断され、記録処理が集中して行われる。未処理の信号量が第１所定値を超えたときは所定のタイミング信号が発生するまで書き込み処理が中断され、信号量が第１所定値よりも大きい第２所定値を超えたときは記録処理が終了するまで書き込み処理が中断される。
【００１１】
この発明の他の実施例では、圧縮回路が撮影回路の出力を圧縮する。このとき、画像書き込み処理は、圧縮回路を能動化する圧縮能動化処理、および圧縮回路から出力された圧縮画像信号を内部メモリに書き込む圧縮画像書き込み処理を含む。このように圧縮回路が撮影回路の出力を圧縮することで、サイズが縮小された圧縮画像信号が短時間で生成される。つまり、高速で圧縮処理が行われ、かつ信号量が小さくなる。
【００１２】
また、書き込み処理は、前記画像書き込み処理の後に前記記録媒体の残容量を予測する予測処理を含む。この予測処理では、圧縮画像信号のサイズに基づいて残容量が算出される。このような予測処理に要する時間は、記録媒体に実際にアクセスして残容量を検出するよりも短い。
書き込み処理は、残容量に基づいて記録可能な画像枚数を算出する枚数算出処理、および画像枚数をモニタに表示する表示処理をさらに含む。オペレータは、モニタに表示された画像枚数によってこれ以降に撮影できる枚数を把握する。
【００１３】
この発明のその他の実施例では、撮影条件の調整指示を入力する第２入力キーがさらに備えられる。また、書き込み処理は、調整指示の入力を所定タイミングで判別する調整指示判別処理、調整指示判別処理の処理結果に応じて撮影条件を調整する調整処理、および撮影指示判別処理の処理結果に応じて調整指示判別処理を不能化する第１不能化処理をさらに含む。
【００１４】
撮影指示および調整指示の入力はそれぞれ、所定のタイミングで判別される。オペレータが撮影指示ではなく調整指示を入力した場合、この調整指示に基づいて撮影条件が調整される。しかし、オペレータが前回の撮影指示に続いて速いタイミングで撮影指示を入力したときは、撮影条件の調整処理が不能化される。つまり、今回の撮影指示に応答して、画像書き込み処理および管理テーブル作成処理が行われる。
【００１５】
書き込み処理はさらに、撮影指示判別処理によって所定の処理結果が得られた第１タイミングを検出する第１検出処理、調整指示判別処理によって所定の処理結果が得られた第２タイミングを第１タイミングの後に検出する第２検出処理、および第１タイミングおよび第２タイミングの差分に応じて調整処理を不能化する第２不能化処理を含む。所定の処理結果はいずれも入力有りを示す判別結果である。
【００１６】
つまり、前回の撮影指示の入力タイミングと今回の調整指示の入力タイミングが短ければ、調整処理が不能化される。そして、今回の撮影指示に応答して、画像書き込み処理および管理テーブル作成処理が行われる。
【００１７】
【発明の効果】
この発明によれば、画像信号を内部メモリに書き込む書き込み処理および内部メモリの画像信号を記録媒体に記録する記録処理を並行して行うようにしたため、撮影間隔を短縮することができる。
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００１８】
【実施例】
図１を参照して、この実施例のディジタルカメラ１０は、フォーカスレンズ１２および絞りユニット１４を含む。被写体の光像は、このような部材を介してＣＣＤイメージャ１２に照射される。モード設定スイッチ６０を“カメラ”側に切り換えると、システムコントローラ５２はＣＰＵ４２にカメラモードの設定を通知する。このときＣＰＵ４２は、シグナルジェネレータ（ＳＧ）１６，信号処理回路２２，バンク切換回路３６などを含む信号処理ブロックならびにビデオエンコーダ４４，モニタ４６などを含むエンコードブロックを起動する。
【００１９】
バンク切換回路３６は、ＳＧ３４から１／１５秒毎に出力される垂直同期信号に応答してバンク切換信号を生成し、メモリ制御回路２６に与える。垂直同期信号が１／１５秒毎に出力されることで、バンク切換信号のレベルもまた、１／１５秒毎に切り換わる。メモリ制御回路２６は、このようなバンク切換信号によってアクセス先の画像バンクを特定する。つまり、ＳＤＲＡＭ２８は、図２に示すように表示画像エリアを有し、この表示画像エリアには画像バンク０および画像バンク１が形成されている。バンク切換信号がローレベルであれば、メモリ制御回路２６は、書き込み先を画像バンク０と決定し、読み出し先を画像バンク１と決定する。逆にバンク切換信号がハイレベルであれば、メモリ制御回路２６は、書き込み先を画像バンク１と決定し、読み出し先を画像バンク０と決定する。
【００２０】
一方、ＴＧ３２は、ＳＧ３４から出力される垂直同期信号および水平同期信号に基づいてタイミング信号を生成し、ＣＣＤイメージャ１２をプログレッシブスキャン方式で駆動する。この結果、被写体のカメラ信号が１／１５秒毎にＣＣＤイメージャ１２から出力される。出力されたカメラ信号は、ＣＤＳ／ＡＧＣ回路１８で周知のノイズ除去およびレベル調整を施され、その後、Ａ／Ｄ変換器１６によってディジタル信号であるカメラデータに変換される。信号処理回路２２は、Ａ／Ｄ変換器１６から出力されたカメラデータにＹＵＶ変換を施し、ＹＵＶデータを生成する。各フレームのカメラ信号が１／１５秒毎に生成される結果、対応するＹＵＶデータもまた１／１５秒毎に生成される。信号処理回路２２は、生成したＹＵＶデータを書き込みリクエストとともにメモリ制御回路２６に与える。
【００２１】
メモリ制御回路２６は、書き込みリクエストに応答してＹＵＶデータを取り込み、バンク切換信号に基づいて特定した画像バンクにこのＹＵＶデータを書き込む。各フレームのＹＵＶデータが１／１５秒毎に生成され、バンク切換信号のレベルが１／１５秒毎に切り換わる結果、各フレームのＹＵＶデータは画像バンク０および画像バンク１に交互に書き込まれる。なお、ＹＵＶデータはバス２４ａを介してメモリ制御回路２６に与えられ、その後バス２４ｂを介してＳＤＲＡＭ２８に書き込まれる。
【００２２】
このようにして所望の画像バンクに書き込まれたＹＵＶデータは、その後、ビデオエンコーダ４４から出力された読み出しリクエストに基づいて、同じメモリ制御回路２６によって読み出される。ビデオエンコーダ４４は１／３０秒毎に読み出しリクエストを発生し、メモリ制御回路２６は、バンク切換信号に基づいて特定した画像バンクからＹＵＶデータを２回繰り返し読み出す。ＹＵＶデータは、書き込みが行われていない画像バンクからインタレーススキャン方式で読み出され、バス２４ａを介してビデオエンコーダ４４に与えられる。ビデオエンコーダ４４は入力されたＹＵＶデータをＮＴＳＣフォーマットのコンポジット画像信号に変換し、変換したコンポジット画像信号をモニタ４６に与える。この結果、被写体の動画像（スルー画像）が、リアルタイムでモニタ画面に表示される。
【００２３】
オペレータがシャッタボタン５４を半押し状態にすると、システムコントローラ５２は対応するキーステートデータをＣＰＵ４２に与える。すると、ＣＰＵ４２はＡＦ制御回路３８およびＡＥ制御回路４０を能動化し、フォーカスおよび露光量を調整する。これによってフォーカスレンズ１２が最適位置に移動し、絞り１４が最適値にセットされる。なお、シャッタボタン５８が半押し状態のとき、ＣＰＵ４２は、後述するＢＧ（Ｂａｃｋ  Ｇｒｏｕｎｄ  ）モードの起動処理や連続撮影できる最大枚数ＮＭＡＸ  の決定処理も行う。
【００２４】
シャッタボタン５４が全押し状態となると、システムコントローラ５２は対応するキーステートデータをＣＰＵ４２に与える。するとＣＰＵ４２は、垂直同期信号に応答してバンク切換回路３６を不能化するとともに、全押し時点で撮影された被写体像のＹＵＶデータが生成されるのを待って信号処理回路２２を不能化する。一方、ビデオエンコーダ４４は不能化されず、これまでと同様に読み出しリクエストをメモリ制御回路２６に与え続ける。バンク切換が停止されたとき、メモリ制御回路２６は、アクセス先をたとえば画像バンク０に統一する。このため、信号処理回路２２から出力されたＹＵＶデータは画像バンク０に書き込まれ、ビデオエンコーダ４４に与えるＹＵＶデータは画像バンク０から読み出される。この結果、同じＹＵＶデータが繰り返しビデオエンコーダ４４に与えられ、モニタ４６には対応する静止画像（フリーズ画像）が表示される。なお、シャッタボタン５８の全押し時点で撮影された被写体像のＹＵＶデータを、以下の説明の便宜上、オリジナル画像データと定義する。
【００２５】
オリジナル画像データが画像バンク０に確保された後、ＣＰＵ４２はＪＰＥＧコーデック３０に圧縮処理を命令する。ＪＰＥＧコーデック３０は、このような圧縮処理命令に応答して、オリジナル画像データの読み出しをメモリ制御回路２６にリクエストする。オリジナル画像データはメモリ制御回路２６によって画像バンク０から読み出され、バス２４ａを介してＪＰＥＧコーデック３０に与えられる。ＪＰＥＧコーデック３０は、入力されたオリジナル画像データからサムネイル画像データを生成し、オリジナル画像データおよびサムネイル画像データに個別に圧縮処理を施す。これによってオリジナル画像の圧縮データ（オリジナル圧縮データ）およびサムネイル画像の圧縮データ（サムネイル圧縮データ）が生成される。
【００２６】
ＪＰＥＧコーデック３０は、このようにして生成された圧縮データの書き込みをメモリ制御回路２６にリクエストし、圧縮データはメモリ制御回路２６によってＳＤＲＡＭ２８に書き込まれる。ＳＤＲＡＭ２８には、図２に示すようにオリジナル画像エリアおよびサムネイル画像エリアが形成されており、オリジナル圧縮データおよびサムネイル圧縮データはそれぞれ、このようなオリジナル画像エリアおよびサムネイル画像エリアに書き込まれる。また、対応するヘッダデータがＣＰＵ４２によって作成され、作成されたヘッダデータの書き込みがメモリ制御回路２６にリクエストされる。この結果、ヘッダデータはメモリ制御回路２６によって図２に示すヘッダエリアに書き込まれる。
【００２７】
このようにして、１枚分のオリジナル圧縮データ，サムネイル圧縮データおよびヘッダデータがＳＤＲＡＭ２８に確保されると、ＣＰＵ４２は図４に示すような指示リスト４２ａを作成する。この指示リスト４２ａには、上述のオリジナル圧縮データ，サムネイル圧縮データおよびヘッダデータのアドレス情報およびサイズ情報が書き込まれる。ＳＤＲＡＭ２８に書き込まれたデータは、この指示リスト４２ａによって管理される。つまり、指示リスト４２ａは、ＳＤＲＡＭ２８に書き込まれたオリジナル圧縮データ，サムネイル圧縮データおよびヘッダデータを管理する管理テーブルである。
【００２８】
ＣＰＵ４２は、以上のようなＳＤＲＡＭ２８への書き込み処理と並行して、ＢＧモード処理を実行し、ＳＤＲＡＭ２８に格納されたオリジナル圧縮データ，サムネイル圧縮データおよびヘッダデータをメモリカード４８に記録する。このときＣＰＵ４２は、上述の指示リスト４２ａを参照してＳＤＲＡＭ２８からの読み出し処理を行い、読み出されたデータをメモリカード４８に記録する。メモリカード４８には、ヘッダ，サムネイル画像，オリジナル画像の順でデータが収納された画像ファイルが形成される。このときも、ＳＤＲＡＭ２８からのデータの読み出しは、メモリ制御回路２６によって行われる。
【００２９】
なお、メモリカード４８は着脱可能であり、装着時はインタフェース４７を介してバス２４ａと接続される。このため、ＣＰＵ４２は、メモリ制御回路２６によって読み出されたデータをバス２４ａおよびインタフェース４７を介してメモリカード４８に書き込む。
オリジナル画像エリアは２０枚分のオリジナル圧縮データを格納できる容量を持ち、サムネイル画像エリアおよびヘッダエリアもまた、２０枚分のサムネイル圧縮データおよびヘッダデータを格納できる容量を持つ。さらに、これらのデータのＳＤＲＡＭ２８への書き込み処理とＳＤＲＡＭ２８からメモリカード４８への記録処理とが並行して行われる。このため、シャッタボタン５８の全押しが繰り返された場合、オリジナル画像データ，サムネイル画像データおよびヘッダデータは、オリジナル画像エリア，サムネイル画像エリアおよびヘッダエリアに循環的に書き込まれ、かつこれらのエリアから循環的に読み出される。
【００３０】
なお、ＣＰＵ４２は、以上のようなＳＤＲＡＭ２８への書き込み処理およびメモリカード４８への記録処理の他に、メモリカード４８の残容量の予測処理，予測結果に基づく残枚数の算出処理，残枚数の表示の更新処理なども行う。
また、メモリ制御回路２６には、信号処理回路２２，ビデオエンコーダ４４，ＪＰＥＧコーデック３０およびＣＰＵ４２のそれぞれからリクエストが入力される。このため、メモリ制御回路２６はそれぞれのリクエストを調停しながらＳＤＲＡＭ２８にアクセスする。
【００３１】
システムコントローラ５２は、具体的には図５に示すフロー図を処理する。一方、ＣＰＵ４２は、図６〜図１６に示すフロー図および図１７および図１８に示すフロー図を並行して処理する。つまり、ＣＰＵ４２はμｉＴＲＯＮのようなマルチタスクＯＳ（リアルタイムＯＳ）が搭載されたマルチタスクＣＰＵであり、図６〜図１６に示す書き込み処理および図１７および図１８に示す記録処理は、互いに並行して実行される。
【００３２】
まず、図５を参照して、システムコントローラ５２の処理を説明する。システムコントローラ５２は、まずステップＳ１でシステムフラグｆＳＹＳ  をセットし、ステップＳ３で図３に示すレジスタ５２ａの全てのビットをリセットする。レジスタ５２ａの第０ビットはシャッタボタン５８が半押し状態かどうかを示し、第１ビットはシャッタボタン５８が全押し状態かどうかを示し、そして第２ビットはモード切換スイッチ６０がカメラ側にあるか再生側にあるかを示す。システムコントローラ５２は、このようなレジスタ５２ａをまず初期状態にセットする。
【００３３】
システムコントローラ５２は続いてステップＳ４に進み、キースキャンによってシャッタボタン５８およびモード切換スイッチ６０の状態を検出する。そして、ステップＳ５でキーの状態に変化があったかどうかを判別する。状態に変化がなければ、ＣＰＵ４２はステップＳ７に進み、システムフラグｆＳＹＳ  の状態を判別する。システムフラグｆＳＹＳ  がセット状態であればステップＳ４に戻り、システムフラグｆＳＹＳ  がリセット状態であれば、ステップＳ９でＣＰＵ４２から何らかの入力があったかどうかを判別する。ここでＮＯであれば上述と同様にステップＳ４に戻るが、ＹＥＳであれば、ステップＳ１１，Ｓ１３およびＳ１５で入力信号の内容を判別する。
【００３４】
入力信号がキーステートデータの送信リクエストであれば、システムコントローラ５２はステップＳ１１でＹＥＳと判断し、ステップＳ２７でレジスタ５２ａに格納されたキーステートデータをＣＰＵ４２に送信する。そして、ステップＳ２９でシステムフラグｆＳＹＳ  をリセットしてからステップＳ４に戻る。入力信号がキーステートのリセットリクエストであれば、システムコントローラ５２はステップＳ１３でＹＥＳと判断し、ステップＳ３に戻る。入力信号が処理終了通知であれば、システムコントローラ５２はステップＳ１５でＹＥＳと判断し、ステップＳ１に戻る。なお、ステップＳ１５でＮＯであれば、システムコントローラ５２はステップＳ４に戻る。
【００３５】
ステップＳ５でシャッタボタン５８またはモード設定スイッチ６０の状態が変化したと判断されると、システムコントローラ５２はステップＳ１９に進み、レジスタ５２ａの対応するビットをセットする。たとえばシャッタボタン５８が半押し状態となると、システムコントローラ５２はレジスタ５２ａの第０ビットを“１”とする。その後、ステップＳ２１でシステムフラグｆＳＹＳ  がセットされているかどうか判別し、ＮＯであればステップＳ４に戻るが、ＹＥＳであればステップＳ２３に進む。
【００３６】
ステップＳ２３ではバッテリ５４の残量を検出し、ステップＳ２５では検出した残量データをレジスタ５６に格納する。続いて、ステップＳ２７でレジスタ５２ｇに格納されたキーステートデータをＣＰＵ４２に送信し、ステップＳ２９でシステムフラグｆＳＹＳ  をリセットし、ステップＳ４に戻る。
システムフラグｆＳＹＳ  のセット状態はシステムコントローラ５２に主導権があることを示し、リセット状態はＣＰＵ４２に主導権があることを示す。ステップＳ１でシステムフラグｆＳＹＳ  がセットされるため、電源投入直後はシステムコントローラ５２が主導権をとり、ステップＳ２７で現時点のキーステートデータをＣＰＵ４２に送信する。システムフラグｆＳＹＳ  はキーステートデータの送信完了後にリセットされ、これによって主導権がＣＰＵ４２に移る。
【００３７】
主導権がＣＰＵ４２に移っている間でも、システムコントローラ５２は所定タイミングでキースキャンを行い、変化があればレジスタ５２のキーステートデータを更新する。キーステートに変化がなければ、システムコントローラ５２はＣＰＵ４２からの入力を待ち、キーステートデータの送信リクエストが与えられたときに、現時点のキーステートデータを送信する。このため、ＣＰＵ４２が所定の処理を行っている最中のキー操作は、キーステートデータの送信リクエストが与えられる毎に有効となる。送信されるキーステートデータは、送信リクエスト入力時点のキーステートに対応する。
【００３８】
ＣＰＵ４２から処理終了通知が出力されると、システムコントローラ５２はシステムフラグｆＳＹＳ  をセットし、主導権を再度獲得する。但し、システムフラグｆＳＹＳ  がセットされた直後にレジスタ５２ａがリセットされ、これ以降に改めて行われたシャッタ操作が有効となる。
次に、図６を参照してＣＰＵ４２の処理について説明する。ＣＰＵ４２は、まずステップＳ５１で図１１に示すサブルーチンを処理する。具体的には、ステップＳ５１０１でＢＧフラグｆＢＧをリセットする。次に、ステップＳ５１０３でオリジナル圧縮データの書き込みアドレスＶＷＡおよび読み出しアドレスＶＲＡを図２に示すオリジナル画像エリアの開始アドレスＶＳＡにセットし、サムネイル圧縮データの書き込みアドレスＳＷＡおよび読み出しアドレスＳＲＡをサムネイル画像エリアの開始アドレスＳＳＡにセットし、そしてヘッダデータの書き込みアドレスＨＷＡおよび読み出しアドレスＨＲＡをヘッダエリアの開始アドレスＨＳＡにセットする。さらに、ステップＳ５１０５でシャッタボタン５８の全押し時刻を示す時刻データＲＴＩＭＥをリセットする。続いて、ステップＳ５１０７でメモリカード４８の残容量を検出し、ステップＳ５１０９でメモリカード５８に記録できる画像の枚数を数１に従って算出する。
【００３９】
【数１】
γ＝ＲＥＭＳＩＺＥ／ＦＭＡＸＳＩＺＥ  
γ：残枚数
ＲＥＭＳＩＺＥ：残容量
ＦＭＡＸＳＩＺＥ  ：画像ファイルの最大サイズ
ＣＰＵ４２はその後、算出された残枚数のキャラクタをステップＳ５１１１でモニタ４６にＯＳＤ表示し、図６に示すステップＳ５１に復帰する。なお、残枚数のキャラクタは、図示しないキャラクタジェネレータを制御することによって表示される。
【００４０】
ＣＰＵ４２は続いて、ステップＳ５３でシステムコントローラ５２からキーステートデータが入力されたかどうかを判断する。ここでＹＥＳであればステップＳ５５に進み、オペレータが希望するモードがカメラモードおよび再生モードのいずれであるかをこのキーステートデータから判断する。そして、希望するモードが再生モードであれば、ステップＳ５５でＮＯと判断し、ステップＳ５７で再生処理を実行する。処理を終えると、ＣＰＵ４２はステップＳ５９で終了通知をシステムコントローラ４２に出力し、ステップＳ５３に戻る。
【００４１】
一方、希望するモードがカメラモードであれば、ＣＰＵ４２はステップＳ６１でカメラモードを起動する。つまり、上述の信号処理ブロックおよびエンコードブロックを起動する。この結果、被写体のスルー画像がモニタ４６に表示される。ＣＰＵ４２はその後、ステップＳ６３で終了通知をシステムコントローラ５２に出力し、ステップＳ６５でキーステートデータの入力を待つ。
【００４２】
システムコントローラ５２からキーステートデータが入力されると、ＣＰＵ４２は、ステップＳ６７およびＳ６９のそれぞれで、オペレータによって行われたキー操作がモード変更であるかどうか、およびシャッタボタン５８の半押しであるかどうかを判断する。キー操作がモード変更であれば、ＣＰＵ４２はステップＳ６７からステップＳ５７に進み、キー操作がシャッタボタン５８の半押しであればステップＳ６９からステップＳ７１に進む。
【００４３】
なお、ディジタルカメラ１０にはカメラモードに関係しないカーソルキー（図示せず）も設けられ、レジスタ５２ａはカーソルキーに対応するビットデータも保持する。キーステートデータの入力がこのようなカーソルキーの操作に基づく場合、ＣＰＵ４２はステップＳ６９からステップＳ６３に戻る。
ステップＳ７１では、ＢＧフラグｆＢＧがセットされているかどうか判断する。ＢＧフラグｆＢＧは上述のステップＳ５１０１でリセットされるため、１回目のステップＳ７１の処理ではＮＯと判断される。すると、ＣＰＵ４２はステップＳ７３でＢＧモードを起動し、ステップＳ７５でＢＧフラグｆＢＧをセットし、そしてステップＳ７７に進む。ステップＳ７１の処理でＹＥＳと判断された場合、ＣＰＵ４２はそのままステップＳ７７に進む。
【００４４】
ステップＳ７７では、図１２に示すサブルーチンによって連続撮影が可能な最大枚数ＮＭＡＸを決定する。つまり、ステップＳ７７０１〜Ｓ７７１１のそれぞれで、バッテリ５４の残量が満杯時の何パーセントであるか判別する。判別には、レジスタ５６に保持されたバッテリ残量データを用いる。残量が０％〜１０％であれば、ステップＳ７７１３で最大枚数ＮＭＡＸ  ＝０と決定し、ステップＳ６３に戻る。残量が１０％〜２５％であればステップＳ７７１５で最大枚数ＮＭＡＸ  ＝１と決定し、残量が２５％〜４０％であればステップＳ７７１７で最大枚数ＮＭＡＸ  ＝６と決定し、残量が４０％〜６０％であればステップＳ７７１９で最大枚数ＮＭＡＸ  ＝１２と決定する。残量が６０％〜７５％であればステップＳ７７２１で最大枚数ＮＭＡＸ  ＝１８と決定し、残量が７５％〜９５％であればステップＳ７７２３で最大枚数ＮＭＡＸ  ＝３６と決定し、残量が９５％〜１００％であればステップＳ７７２５で最大枚数ＮＭＡＸ  ＝４８と決定する。ステップＳ７７１５〜Ｓ７７２５のいずれの処理を経たときでも、ＣＰＵ４２は図７に示すステップＳ７７に復帰する。
【００４５】
ＣＰＵ４２は続いてステップＳ７９に進み、時計回路５０から検出した現在時刻を時刻データＣＴＩＭＥにセットする。ステップＳ８１では、時刻データＣＴＩＭＥと時刻データＲＴＩＭＥの時間差“ＲＴＩＭＥ−ＣＴＩＭＥ”を算出し、算出された時間差が１．２秒をこえているかどうか判断する。ここでＮＯであればそのままステップＳ８５に進むが、ＹＥＳであれば、ステップＳ８３でフォーカスおよび絞り量を調整してからステップＳ８５に進む。“ＲＴＩＭＥ−ＣＴＩＭＥ”は、前回のシャッタボタン５８の全押し時刻とその後のシャッタボタン５８の半押し時刻との差分を意味する。この時間差が短ければ、被写体は大きく変化しておらず、フォーカスおよび露光量を再度調整する必要性はあまりない。このため、この時間差に応じてステップＳ８３の処理をジャンプするようにしている。
【００４６】
ステップＳ８５では、システムコントローラ５２に対してキーステートデータの送信をリクエストする。これに応じてキーステートデータが入力されると、ＣＰＵ４２は、このデータに基づいてシャッタボタン５８が全押しされたかどうか判断する。オペレータがシャッタボタン５８の半押し状態を続けていたり、半押しの後シャッタボタン５８から指を離した場合、ＣＰＵ４２はこのステップでＮＯと判断し、ステップＳ６３に戻る。
【００４７】
一方、オペレータがシャッタボタン５８を半押し状態から全押しに変更すれば、ＣＰＵ４２はステップＳ８８以降の処理を実行し、全押し時点の被写体像をメモリカード５８に記録する。具体的には、まずステップＳ８８で垂直同期信号が入力されたかどうか判断し、ＹＥＳとの判断結果が得られたときにステップＳ８９でバンク切換動作を停止させる。このように垂直同期信号に応答してバンク切換を停止させることで、フリーズ画像の出力時に有効となる画像バンクは最適タイミングで特定される。ＣＰＵ４２は次にステップＳ９１で、現在時刻つまり全押し時点の時刻を時計回路５０から検出し、検出した時刻を時刻データＲＴＩＭＥにセットする。続いて、ステップＳ９３でシステムコントローラ５２にキーステートデータのリセットをリクエストする。
【００４８】
ステップＳ９５ではＪＰＥＧコーデック３０に初期圧縮率による画像圧縮を命令し、続くステップＳ９７ではオリジナル画像データがＳＤＲＡＭ２８の画像バンク０に格納された時点で信号処理回路２２を不能化する。ステップＳ９７の処理は、オリジナル画像データが生成されるまで信号処理回路２２を能動化することを意味する。シャッタボタン５８が全押しされた場合、対応するＹＵＶデータに圧縮などの処理を施す必要性が生じる一方、これ以降に得られるＹＵＶデータは必要ではない。このため、全押しとの判別結果が得られた後の所定期間だけ信号処理回路２２を能動化し続け、オリジナル画像データが得られた時点で信号処理回路２２を不能化する。
【００４９】
ＪＰＥＧコーデック３０は、画像圧縮命令に応答して、オリジナル画像データの読み出しをメモリ制御回路２６にリクエストする。このため、オリジナル画像データがメモリ制御回路２６によって画像バンク０から読み出され、ＪＰＥＧコーデック３０に与えられる。ＪＰＥＧコーデック３０は、このようなオリジナル画像データを初期圧縮率で圧縮する。圧縮処理が終了すると、ＪＰＥＧコーデック３０は、生成されたオリジナル圧縮データのデータサイズおよび圧縮処理の終了信号をＣＰＵ４２に与える。
【００５０】
ＣＰＵ４２は、終了信号が入力されたときステップＳ９９でＹＥＳと判断する。するとＣＰＵ４２は、ステップＳ１０１で上述のデータサイズおよび初期圧縮率に基づいて最適圧縮率を算出する。この最適圧縮率は、オリジナル圧縮データを所定のデータサイズ（記録可能最大サイズ）以下に抑えることができる圧縮率である。
【００５１】
ステップＳ１０３では、このようにして得られた最適圧縮率での圧縮ならびに圧縮データのＳＤＲＡＭ２８への書き込みをＪＰＥＧコーデック３０に命令する。このとき、ＣＰＵ４２は、圧縮のために最適圧縮率を、ＳＤＲＡＭ２８への書き込みのために上述の書き込みアドレスＶＷＡおよびＳＷＡを、ＪＰＥＧコーデック３０に与える。
【００５２】
ＪＰＥＧコーデック３０は、オリジナル画像データを最適圧縮率で圧縮し、オリジナル圧縮データを生成する。ＪＰＥＧコーデック３０はまた、オリジナル画像データからサムネイル画像データを作成し、サムネイル画像データも最適圧縮率で圧縮する。そして、これらの圧縮データの書き込みリクエストを、書き込みアドレスＶＷＡおよびＳＷＡとともにメモリ制御回路２６に与える。この結果、オリジナル圧縮データがオリジナル画像エリア内に位置する書き込みアドレスＶＷＡ以降に書き込まれ、サムネイル圧縮データがサムネイル画像エリア内に位置する書き込みアドレスＳＷＡ以降に書き込まれる。
【００５３】
ＪＰＥＧコーデック３０は、圧縮処理が終了したときに、終了信号ならびにオリジナル圧縮データのデータサイズＶＳＩＺＥおよびサムネイル圧縮データのデータサイズＳＳＩＺＥをＣＰＵ４２に与える。ＣＰＵ４２は、終了信号が与えられたときにステップＳ１０５でＹＥＳと判断し、続くステップＳ１０６で上述のデータサイズＶＳＩＺＥおよびＳＳＩＺＥを取得する。ステップＳ１０７では、数２に従って書き込みアドレスＶＷＡおよびＳＷＡを更新する。
【００５４】
【数２】
ＶＷＡ＝ＶＷＡ＋ＶＳＩＺＥ
ＳＷＡ＝ＳＷＡ＋ＳＳＩＺＥ
このため、次回のシャッタボタン５８の全押しに基づくオリジナル圧縮データおよびサムネイル圧縮データは、現オリジナル圧縮データおよび現サムネイル圧縮データに続いて書き込まれる。
【００５５】
ＣＰＵ４２はその後ステップＳ１０８に進み、現オリジナル圧縮データおよび現サムネイル圧縮データに対応するヘッダデータを作成する。ステップＳ１０９では、このようなヘッダデータの書き込みリクエストを書き込みアドレスＨＷＡとともにメモリ制御回路２６に与える。メモリ制御回路２６は、入力されたヘッダデータをＳＤＲＡＭ２８の書き込みアドレスＨＷＡ以降に書き込む。ＣＰＵ４２は、ステップＳ１０９で書き込みリクエストを出力した後、ステップＳ１１０で数３に従って書き込みアドレスＨＷＡを更新する。
【００５６】
【数３】
ＨＷＡ＝ＨＷＡ＋ＨＳＩＺＥ
この結果、次回の全押し操作に基づいて生成されるヘッダデータも、現ヘッダデータに続いて格納される。
数２によって更新された書き込みアドレス以降に記録可能最大サイズ以上の空きエリアがなければ、次回の全押し操作によって得られるオリジナル圧縮データをオリジナル画像エリアに連続して書き込むことはできない。このためＣＰＵ４２は、ステップＳ１１１で数４の条件が満たされるかどうかを判別する。
【００５７】
【数４】
ＶＷＡ＋ＶＭＡＸＳＩＺＥ  ＞ＶＥＡ
ＶＭＡＸＳＩＺＥ  ：オリジナル圧縮データの記録可能最大サイズ
ＶＥＡ：オリジナル画像エリアの末尾アドレス
この条件を満たせば、次回のオリジナル圧縮データを現書き込みアドレスＶＷＡ判以降に連続的に書き込むことができる。この場合、ＣＰＵ４２はそのままステップＳ１１３に進む。一方、数３の条件が満たされなければ、ステップＳ１１２で書き込みアドレスＶＷＡ，ＳＷＡおよびＨＷＡを開始アドレスＶＳＡ，ＳＳＡおよびＨＳＡにセットしてからステップＳ１１３に進む。この結果、オリジナル圧縮データ，サムネイル圧縮データおよびヘッダデータのいずれについても連続性が保証される。また、互いに関連するオリジナル圧縮データ，サムネイル圧縮データおよびヘッダデータの書き込み位置は、同じ要領でかつ循環的に更新される。
【００５８】
ステップＳ１１３では、図１３〜図１５に示すサブルーチンを処理し、図４に示す指示リスト４２ａを作成する。ＣＰＵ４２は、まずステップＳ１１１０１でヘッダデータの読み出しアドレスＨＲＡおよびヘッダデータのデータサイズＨＳＩＺＥを図４に示す指示リスト４２ａに書き込む。具体的には、メール書き込み番号ＷＮ  と同じ値のメール番号を検出し、検出したメール番号に対応する位置に読み出しアドレスＨＲＡおよびデータサイズＨＳＩＺＥを書き込む。読み出しアドレスＨＲＡは図１１に示すステップＳ５１０３で初期化され、メール書き込み番号ＷＮ  は図１７に示すステップＳ２０１でリセットされ、そしてデータサイズＨＳＩＺＥは予め決まっている。このため、１回目のステップＳ１１１０１の処理では、ＷＮ  ＝０に対応する位置に読み出しアドレスＨＲＡ（＝ＨＳＡ）および所定のデータサイズＨＳＩＺＥが書き込まれる。
【００５９】
ＣＰＵ４２はその後、ステップＳ１１１０３でメール書き込み番号ＷＮ  およびカウント値ｍをインクリメントし、ステップＳ１１１０５で現メール書き込み番号ＷＮ  をメール番号の最大値“Ｌ−１”と比較する。“Ｌ−１”は、たとえば“１９９９”である。ここでＷＮ  ≦Ｌ−１であれば、そのままステップＳ１１１０９に進むが、ＷＮ  ＞Ｌ−１であれば、ステップＳ１１１０７でメール書き込み番号ＷＮ  をリセットしてからステップＳ１１１０９に進む。
【００６０】
ステップＳ１１１０９では、カウント値ｍを“Ｌ−１”と比較する。カウント値ｍは、指示リスト４２ａにおける未処理のアドレスの数を示し、ＳＤＲＡＭ２８に書き込まれかつ未だ読み出されていないデータ量を意味する。このようなカウント値ｍは、通常、ｍ≦Ｌ−１の条件を満たし、ステップＳ１１１０９ではＹＥＳと判断される。このとき、ＣＰＵ４２はステップＳ１１１１３で数５に従って読み出しアドレスＨＲＡを更新し、その後ステップＳ１１１１５に進む。
【００６１】
【数５】
ＨＲＡ＝ＨＲＡ＋ＨＳＩＺＥ
なお、ＢＧモード処理が異常に遅いためにカウント値ｍのインクリメント速度がディクリメント速度を大きく上回る場合にｍ＞Ｌ−１となり、ステップＳ１１１０９でＹＥＳと判断される。このとき、ＣＰＵ４２は、ステップＳ１１１１１でエラー処理を行い、書き込み処理を強制終了する。
【００６２】
ステップＳ１１１１５では、サムネイル圧縮データの読み出しアドレスＳＲＡおよびサムネイル圧縮データのデータサイズＳＳＩＺＥをメール書き込み番号ＷＮ  に対応付けて指示リスト４２ａに書き込む。ＣＰＵ４２は続いて、ステップＳ１１１１７〜Ｓ１１１２３で上述のステップＳ１１１０３〜Ｓ１１１０９と同様の処理を行う。そして、ステップＳ１１１２３でＹＥＳのときにステップＳ１１１１１に移行し、ＮＯのときにステップＳ１１１２５で数６に従って読み出しアドレスＳＲＡを更新する。
【００６３】
【数６】
ＳＲＡ＝ＳＲＡ＋ＳＳＩＺＥ
ＣＰＵ４２はその後ステップＳ１１１２７に進み、オリジナル圧縮データの読み出しアドレスＶＲＡおよびオリジナル圧縮データのデータサイズＶＳＩＺＥを指示リスト４２ａのメール書き込み番号ＷＮ  に対応する位置に書き込む。そして、ステップＳ１１１２９〜Ｓ１１１３５でステップＳ１１１０３〜Ｓ１１１０９と同様の処理を行う。ステップＳ１１１３５でＮＯと判断されれば、ＣＰＵ４２は、ステップＳ１１１３７で数７に従って読み出しアドレスＶＲＡを更新する。
【００６４】
【数７】
ＶＲＡ＝ＶＲＡ＋ＶＳＩＺＥ
このようにして、互いに関連するヘッダデータ，サムネイル圧縮データおよびオリジナル圧縮データのアドレス情報ならびにサイズ情報が、この順序で指示リスト４２ａに書き込まれる。ＣＰＵ４２はその後、ステップＳ１１１３９に進み、上述のステップＳ１１２と同様の理由で、数８の条件が満たされるかどうかを判別する。
【００６５】
【数８】
ＶＲＡ＋ＶＭＡＸＳＩＺＥ  ＞ＶＥＡ
そして、ＹＥＳであればそのまま図９に示すステップＳ１１３に復帰するが、ＮＯであれば、ステップＳ１１１４１で読み出しアドレスＶＲＡ，ＳＲＡおよびＨＲＡを開始アドレスＶＳＡ，ＳＳＡおよびＨＳＡにセットしてからステップＳ１１３  に復帰する。
【００６６】
ステップＳ１１４では、連続撮影が可能な最大枚数ＮＭＡＸ  をディクリメントし、続くステップＳ１１５では、信号処理回路２２を能動化する。この結果、スルー画像がモニタ４６に表示される。但し、バンク切換は未だ停止されたままであり、ＹＵＶデータの書き込みおよび読み出しは画像バンク０に対して行われる。ＣＰＵ４２は続いて、ステップＳ１１７で数９を演算し、メモリカード４８の残容量を予測する。つまり、上述のステップＳ１０６で取得したデータサイズＳＳＩＺＥおよびＶＳＩＺＥ、予め決まっているデータサイズＨＳＩＺＥおよびクラスタサイズＣＳＩＺＥを残容量ＲＥＭＳＩＺＥから減算する。なお、画像ファイルはＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ  ）方式でメモリカード４８に記録され、１つの画像ファイルを記録する毎にクラスタサイズＣＳＩＺＥに相当する容量が消費される。このため、数９の演算にクラスタサイズＣＳＩＺＥが加味される。
【００６７】
【数９】
ＲＥＭＳＩＺＥ＝ＲＥＭＳＩＺＥ−（ＨＳＩＺＥ＋ＳＳＩＺＥ＋ＶＳＩＺＥ＋ＣＳＩＺＥ）
ＣＳＩＺＥ：クラスタサイズ
ＣＰＵ４２はまたステップＳ１１９で上述の数１を演算し、数８によって得られた残容量の予測値に基づいて残枚数を算出する。残枚数が算出されると、ＣＰＵ４２はステップＳ１２１に進み、モニタ４６に表示される残枚数を更新する。
【００６８】
続くステップＳ１２３では、算出された残枚数が“１”よりも大きいかどうか判断する。ここで残枚数≦１であれば、ＣＰＵ４２はＮＯと判断し、ステップＳ１３５でＢＧフラグｆＢＧをリセットする。さらに、ステップＳ１３７で図１７および図１８に示すＢＧモード処理が終了されたかどうか判断し、ＹＥＳとの判断結果が得られたときにステップＳ１４１に進む。このステップでは、図１６に示すサブルーチンを処理する。まずステップＳ１４１０１で書き込みアドレスＶＷＡ，ＳＷＡおよびＨＷＡを開始アドレスＶＳＡ，ＳＳＡおよびＨＳＡにそれぞれセットし、次に、ステップＳ１４１０３でメモリカード４８に実際にアクセスして残容量を検出する。さらに、ステップＳ１４１０５で上述の数１に従って残枚数を算出し、ステップＳ１４１０７でこの残枚数をモニタ４６に表示する。そして、図１０に示すステップＳ１４１に復帰する。ＣＰＵ４２はその後、ステップＳ１４３で垂直同期信号が入力されたか判断する。そして、ＹＥＳとの判断結果が得られたときにステップＳ１４３でバンク切換動作を再開し、その後ステップＳ６３に戻る。
【００６９】
この結果、残枚数≦１であれば、ステップＳ１３７の処理が繰り返され、実質的にＢＧモード処理だけが実行される。これによってオリジナル画像エリア，サムネイル画像エリアおよびヘッダエリアに格納された全てのデータがメモリカード４８に記録されると、バンク切換動作が再開され、シャッタボタン５８の操作が有効になる。
【００７０】
一方、ステップＳ１２３で残枚数＞１と判断されると、ＣＰＵ４２は、ステップＳ１２５でカウント値ｍを所定値ｍＡ  （＝５０）と比較し、ステップＳ１２７でカウント値ｍを所定値ｍＢ  （＝５５）と比較する。上述のように、カウント値ｍは指示リスト４２ａにおける未処理のアドレスの数を示し、ＳＤＲＡＭ２８から読み出されていないデータ量に関連する。オリジナル画像エリア，サムネイル画像エリアおよびヘッダエリアは２０枚分のデータに相当する容量しか持たず、カウント値ｍ＝６０はこれらのエリアが満杯であることを意味する。このため、カウント値ｍを所定値ｍＡ  およびｍＢ  と比較し、比較結果に応じて処理方法を切り換えている。
【００７１】
具体的に説明すると、ｍ＞５５であれば、ＳＤＲＡＭ２８の残容量はわずかである。このとき、ＣＰＵ４２はステップＳ１２７でＹＥＳと判断し、ステップＳ１３５に移行する。この結果、ＢＧモード処理が完了し、バンク切換動作が再開されるまで、書き込み処理が中断される。５０＜ｍ≦５５であれば、ＳＤＲＡＭ２８の残容量は十分とは言えないが、ＳＤＲＡＭ２８のデータを一掃しなければならないほど事態が切迫している訳ではない。このとき、ＣＰＵ４２はステップＳ１４３に移行し、バンク切換動作を再開してからステップＳ６３に戻る。バンク切換動作は垂直同期信号に応答して再開されるため、垂直同期信号の入力を待つ間、書き込み処理が中断され、ＢＧモード処理が集中的に実行される。この結果、ＳＤＲＡＭ２８の残容量が拡大される。
【００７２】
ｍ≦ｍＡ  であれば、ＣＰＵ４２はＳＤＲＡＭ２８に十分な残容量が存在すると判断し、ステップＳ１２９で最大枚数ＮＭＡＸ  を“０”と比較する。ここでＮＭＡＸ  ＞０であれば、連続撮影の余地が残っている。このときＣＰＵ４２は、ステップＳ１３１でキーステートデータの送信をシステムコントローラ５２にリクエストし、ステップＳ１３３でシャッタボタン５８が全押しされたかどうかをキーステートデータから判断する。そして、ＹＥＳであれば、ステップＳ９１に戻る。つまり、ステップＳ１３１でシステムコントローラ５２にリクエストを発した時点でシャッタボタン５８が全押しされていれば、ＣＰＵ４２はオペレータが速いタイミングでの撮影を望んでいると判断し、ステップＳ６３ではなくステップＳ９１に戻る。ＮＭＡＸ  ≦０であったり、ＮＭＡＸ  ＞０であってもシャッタボタン５８が全押しされてなければ、ＣＰＵ４２はステップＳ１４３に移行する。ＣＰＵ４２は、バンク切換動作を再開してから、ステップＳ６３に戻る。
【００７３】
シャッタボタン５８の操作タイミングによって、処理の流れは次のように変化する。実際には、ステップＳ８７からステップＳ１３３までに０．８秒程度かかり、この程度の時間間隔でシャッタボタン５８が全押しされれば、ステップＳ６３〜Ｓ８９の処理がジャンプされる。一方、上述のように、時間差“ＲＴＩＭＥ−ＣＴＩＭＥ”が１．２秒以下であればステップＳ８３の処理がジャンプされる。したがって、０．８秒間隔でシャッタボタン５８の全押しが行われれば、ステップＳ９１以降の処理が繰り返される。これに対して、全押しの後１．２秒以内に半押しされ、かつ半押しの後の全押しが前回の全押しから０．８秒以上経過していれば、ステップＳ８３の処理だけがジャンプされる。全押しされてから半押しされるまでに１．２秒以上かかったときは、ステップＳ８３の処理が実行される。
【００７４】
図１７を参照して、ＢＧモード処理を説明する。ＣＰＵ４２は、まずステップＳ２０１でメール書き込み番号ＷＮ  ，メール読み出し番号ＲＮ  およびカウント値ｍをリセットする。次に、ステップＳ２０３およびＳ２０５で、カウント値ｍが“０”よりも大きいかどうか、およびＢＧフラグｆＢＧがリセットされているかどうかを判断する。ｍ＞０であればステップＳ２０３からステップＳ２０７に進み、ｍ≦０でかつＢＧフラグｆＢＧがセット状態であればステップＳ２０５に進み、そしてｍ≦０でかつＢＧフラグｆＢＧがリセット状態であれば処理を終了する。
【００７５】
カウント値ｍはステップＳ２０１でリセットされるが、ステップＳ１１３の指示リスト作成処理によってインクリメントされる。これによってｍ＞０となり、ステップＳ２０３でＹＥＳと判断される。すると、ＣＰＵ４２はステップＳ２０７でファイルポインタＦＰをメール読み出し番号ＲＮ  に対応する読み出し開始アドレスにセットし、カウント値Ｓをメール読み出し番号ＲＮ  に対応するデータサイズにセットする。上述のステップＳ１１３では、図４に示すような指示リスト３２ａが作成される。図４によれば、読み出し開始アドレスならびにバイト数で表されるデータサイズが、各メール番号に対応付けられる。ステップＳ２０７およびＳ２０９では、現メール読み出し番号ＲＮ  と同じ値を持つメール番号を検出し、検出したメール番号に対応する読み出し開始アドレスおよびデータサイズを読み出す。そして、読み出されたアドレスデータおよびサイズデータをファイルポインタＦＰおよびカウント値Ｓにそれぞれセットする。
【００７６】
ＣＰＵ４２は続いて、ステップＳ２１１でＳＤＲＡＭ２８へのアクセスが可能かどうか判断する。シャッタボタン５８が押されている期間、メモリ制御回路２６は、複数の回路からリクエストを受け、これらのリクエストを調停しながらＳＤＲＡＭ２８にアクセスする。このため、ステップＳ２１１では、読み出しリクエストをファイルポインタＦＰが持つアドレスデータとともにメモリ制御回路２６に出力する。メモリ制御回路２６は、このような読み出しリクエストを処理するとき、まず許可信号をＣＰＵ４２に出力し、次にファイルポインタＦＰのアドレスデータに従ってＳＤＲＡＭ２８から１バイト分のデータを読み出す。読み出された１バイトのデータは、許可信号に続いてＣＰＵ４２に与えられる。
【００７７】
ＣＰＵ４２は、メモリ制御回路２６から許可信号が返ってきたときにステップＳ２１１でＹＥＳと判断し、続いて入力される１バイトのデータをステップＳ２１３でメモリカード４８に記録する。その後、ステップＳ２１５およびＳ２１７でファイルポインタＦＰおよびカウント値Ｓを更新する。つまり、ファイルポインタＦＰのアドレスデータをインクリメントし、カウント値Ｓをディクリメントする。ステップＳ２１９ではカウント値Ｓを“０”と比較し、Ｓ＞０であればステップＳ２１１に戻る。この結果、現メール読み出し番号ＲＮ  に対応するデータが全てメモリカード４８に記録されるまで、ステップＳ２１１〜Ｓ２１９の処理が繰り返される。
【００７８】
カウント値Ｓが“０”となると、ＣＰＵ４２は、現メール読み出し番号ＲＮ  に対応するデータの読み出し処理が完了したと判断し、ステップＳ２２１でカウント値ｍをディクリメントする。カウント値ｍは、指示リスト作成処理によってインクリメントされ、このステップでディクリメントされる。
ＣＰＵ４２はその後、ステップＳ２２３でメール読み出し番号ＲＮ  をインクリメントし、ステップＳ７５で現メール読み出し番号ＲＮ  を“Ｌ−１”と比較する。そして、ＲＮ  ≦Ｌ−１であればそのままステップＳ２２５に進むが、ＲＮ  ＞Ｌ−１であれば、ステップＳ２２５でメール読み出し番号ＲＮ  をリセットしてからステップＳ２２９に進む。この結果、メール読み出し番号ＲＮ  も循環的に更新される。ステップＳ２２９では、カウント値ｍを“Ｌ−１”と比較する。通常、カウント値ｍが“Ｌ−１”を超えることはなく、ＣＰＵ４２はこのステップでＮＯと判断してステップＳ２０３に戻る。この結果、上述のステップＳ２０３〜Ｓ２２９の処理が繰り返され、ＳＤＲＡＭ２８のヘッダエリア，サムネイル画像エリアおよびオリジナル画像エリアおよびに格納されたデータが、メモリカード３６に順次記録されていく。一方、カウント値ｍが“Ｌ−１”を超えてしまったときは、ステップＳ２２９でＹＥＳと判断し、ステップＳ２３１のエラー処理を経てＢＧモード処理を強制的に終了する。
【００７９】
この実施例によれば、ＣＰＵにマルチタスクＯＳが搭載され、ＳＤＲＡＭへの書き込み処理とメモリカードへの記録処理とが同時に行われる。このため、シャッタボタンの操作によって被写体像が撮影されてから対応する画像データがメモリカードに記録されるまでの時間を短縮できる。換言すれば、シャッタボタンの操作間隔つまり撮影間隔を短縮できる。
【００８０】
また、オリジナル圧縮データ，サムネイル圧縮データおよびヘッダデータは、ＳＤＲＡＭのオリジナル画像エリア，サムネイル画像エリアおよびヘッダエリアに循環的に書き込まれ、記録処理が完了していないデータ量が所定値を超えると、書き込み処理が中断される。書き込み処理は、記録処理によって空き容量が確保されたときに再開される。このため、ＳＤＲＡＭへのアクセス処理が破綻することはない。
【００８１】
さらに、メモリカードの残容量は１回の撮影によって得られるデータのデータ量に基づいて求められる。つまり、残容量は、メモリカードに実際にアクセスすることなく求められる。このため、残容量の検出に要する時間を短縮することができる。
さらにまた、シャッタボタンの全押しタイミングに応じて、半押し時に行われるＡＦ制御処理およびＡＥ制御処理がジャンプされる。このため、今回の全押しによって撮影される被写体像がメモリカードに記録されるまでの時間を短縮できる。
【００８２】
なお、この実施例では、図１０から分かるように、書き込み処理を中断するかどうかをカウント値ｍから判断するようにしている。つまり、カウント値ｍが所定値を超えたとき、ＢＧモードが終了するまで、または垂直同期信号が入力されるまで、書き込み処理を中断している。このような判断手法は、この実施例のように静止画像を撮影する場合だけでなく、複数の静止画像からなる動画像を撮影する場合にも適用できる。
【図面の簡単な説明】
【図１】この発明の１実施例を示すブロック図である。
【図２】ＳＤＲＡＭを示す図解図である。
【図３】システムコントローラに設けられたレジスタを示す図解図である。
【図４】指示リストを示す図解図である。
【図５】図１実施例の動作の一部を示すフロー図である。
【図６】図１実施例の動作の他の一部を示すフロー図である。
【図７】図１実施例の動作のその一部を示すフロー図である。
【図８】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図９】図１実施例の動作の他の一部を示すフロー図である。
【図１０】図１実施例の動作のその他の一部を示すフロー図である。
【図１１】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図１２】図１実施例の動作の他の一部を示すフロー図である。
【図１３】図１実施例の動作のその他の一部を示すフロー図である。
【図１４】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図１５】図１実施例の動作の他の一部を示すフロー図である。
【図１６】図１実施例の動作のその他の一部を示すフロー図である。
【図１７】図１実施例の動作のさらにその他の一部を示すフロー図である。
【図１８】図１実施例の動作の他の一部を示すフロー図である。
【符号の説明】
１０  …ディジタルカメラ
２２  …信号処理回路
２６  …メモリ制御回路
２８  …ＳＤＲＡＭ
３０  …ＪＰＥＧコーデック
４２  …ＣＰＵ
４４  …ビデオエンコーダ
４８  …メモリカード
【図１】
0003631034.tif 000002
【図２】
0003631034.tif 000003
【図３】
0003631034.tif 000004
【図４】
0003631034.tif 000005
【図５】
0003631034.tif 000006
【図６】
0003631034.tif 000007
【図７】
0003631034.tif 000008
【図８】
0003631034.tif 000009
【図９】
0003631034.tif 000010
【図１０】
0003631034.tif 000011
【図１１】
0003631034.tif 000012
【図１２】
0003631034.tif 000013
【図１３】
0003631034.tif 000014
【図１４】
0003631034.tif 000015
【図１５】
0003631034.tif 000016
【図１６】
0003631034.tif 000017
【図１７】
0003631034.tif 000018
【図１８】
0003631034.tif 000019