(57)【要約】【課題】電子機器における外部機器とのデータ通信を効率良く行え、その通信処理の実行管理を簡素化できる。【解決手段】タスク管理プログラム４３は、ホストコントローラから発行されるコマンドに応じたタスク（たとえば残量表示タスクＴ１）を指定する。残量表示タスクＴ１は複数のサブタスクＡ〜Ｅから構成され、残量表示タスクＴ１は、それぞれのサブタスクＡ〜Ｅを、外部機器に対して通信インタフェースを通じてデータ送信を行うための前処理５０ａ〜５４ａと、それぞれのデータ送信に対する応答としてのデータ受信に対応する後処理５０ｂ〜５４ｂとの組合せを単位として管理し、それらのサブタスクＡ〜Ｅを、あらかじめ決められた順番で実行させることで、通信処理を実行させる。【選択図】図５
2008158658.tif 000002
【特許請求の範囲】
【請求項１】
通信機能を備えた外部機器との間で通信を行う電子機器において、
コマンドを発行して、前記外部機器との間の通信処理を指示するホストコントローラと、
前記外部機器との間でデータを送受信する通信インタフェースと、
前記ホストコントローラから受信したコマンドに応じたタスクを指定するタスク指定手段と、
前記外部機器に対して前記通信インタフェースを通じてデータ送信を行うための前処理と、前記データ送信に対する応答としてのデータ受信に対応する後処理との組合せを単位としてそれぞれ構成される複数のサブタスクにより、前記タスクを管理し、前記タスク指定手段により指定された前記タスクに対応する前記サブタスクを、あらかじめ決められた順番で実行させるサブタスク管理手段と、
を有することを特徴とする電子機器。
【請求項２】
前記後処理は、前記データ受信の後に通信処理が正常に終了したか否かを判定する異常判定処理を含み、また、
前記後処理の実行により得られた正常／異常終了の判定結果を基に、つぎの前記サブタスクを実行させるか否かを前記サブタスク管理手段に指令するサブタスク移行判定手段をさらに有することを特徴とする請求項１記載の電子機器。
【請求項３】
前記サブタスク移行判定手段は、前記後処理の実行により前記通信処理が正常に終了したと判断された場合は、前記サブタスク管理手段に対してつぎの前記サブタスクを実行するように指令し、正常に終了しなかったと判断された場合は、前記サブタスク管理手段に対して同じ前記サブタスクを実行するように指令することを特徴とする請求項２記載の電子機器。
【請求項４】
前記異常判定処理では、受信されたデータを基に前記通信処理が正常に終了したか否かを判定することを特徴とする請求項２記載の電子機器。
【請求項５】
前記サブタスクはそれぞれ個別の関数により構成され、
前記サブタスク管理手段は、前記サブタスクを実行させる際に、前記前処理の実行要求と前記後処理の実行要求とを引数を用いて区別することを特徴とする請求項１記載の電子機器。
【請求項６】
前記サブタスク管理手段は、前記サブタスクを一定の周期で実行させることを特徴とする請求項１記載の電子機器。
【請求項７】
通信インタフェースを通じて外部機器と通信するための通信制御装置において、
ホストコントローラから受信したコマンドに応じたタスクを指定するタスク指定手段と、
前記外部機器に対して前記通信インタフェースを通じてデータ送信を行うための前処理と、前記データ送信に対する応答としてのデータ受信に対応する後処理との組合せを単位としてそれぞれ構成される複数のサブタスクにより、前記タスクを管理し、前記タスク指定手段により指定された前記タスクに対応する前記サブタスクを、あらかじめ決められた順番で実行させるサブタスク管理手段と、
を有することを特徴とする通信制御装置。
【請求項８】
通信インタフェースを通じて外部機器と通信するための通信制御方法において、
タスク指定手段が、ホストコントローラから受信したコマンドに応じたタスクを指定し、
サブタスク管理手段が、前記外部機器に対して前記通信インタフェースを通じてデータ送信を行うための前処理と、前記データ送信に対する応答としてのデータ受信に対応する後処理との組合せを単位としてそれぞれ構成される複数のサブタスクにより、前記タスクを管理し、前記タスク指定手段により指定された前記タスクに対応する前記サブタスクを、あらかじめ決められた順番で実行させる、
ことを特徴とする通信制御方法。
【請求項９】
通信インタフェースを通じて外部機器と通信するための通信制御プログラムにおいて、
コンピュータを、
ホストコントローラから受信したコマンドに応じたタスクを指定するタスク指定手段、
前記外部機器に対して前記通信インタフェースを通じてデータ送信を行うための前処理と、前記データ送信に対する応答としてのデータ受信に対応する後処理との組合せを単位としてそれぞれ構成される複数のサブタスクにより、前記タスクを管理し、前記タスク指定手段により指定された前記タスクに対応する前記サブタスクを、あらかじめ決められた順番で実行させるサブタスク管理手段、
として機能させることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信機能を備えた外部機器との間で通信を行う電子機器、その機器に設けられる通信制御装置、方法およびプログラムに関する。
【背景技術】
【０００２】
従来、ビデオカメラやデジタルスチルカメラのような撮像装置、携帯用電話機、あるいはパーソナルコンピュータなどの電子機器には、電源としてリチウムイオン電池、ニッケルカドミウム（ＮｉＣｄ）電池、ニッケル水素電池などの２次電池を内蔵したバッテリパックが広く使用されている。今日では、マイクロコンピュータ（いわゆるマイコン）の低価格化や集積回路化が進み、こうしたバッテリパックにマイコンを内蔵して、電子機器との間で通信を行うようにしたものが普及している。
【０００３】
この種のバッテリパックには、バッテリを電源とする電子機器との間の通信を行うためのマイコンによって残容量を正確に算出し、あるいは充電回数の管理を行い、その寿命を検出するなどして、電子機器側のホストマイコンに必要なバッテリ情報を送信し、バッテリ残量表示を電子機器の液晶パネルなどに表示するようにしたものがある（たとえば、特許文献１参照）。
【０００４】
また、こうしたバッテリを電源とする電子機器では、純正品以外のバッテリパックを使用すると機器本体の破損、損傷などの原因となることから、専用に準備されたバッテリパックであることの認証が必要とされる場合があった。そこで、機器本体側のホストマイコンは、当該機器本体に装着されたバッテリパックが認証処理により正規のバッテリパックではないと判定した場合に、その旨を表示した後、当該機器本体の電源を遮断するようにしていた。
【特許文献１】特開２００６−２５０７１８号公報（段落番号［００２３］〜［００８７］、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、従来の撮像装置などに備えられているホストマイコンは、バッテリパックとの通信制御以外に、撮像装置自体の動作をコントロールするために使用されている。そのため、ホストマイコンで管理すべきタスクは多岐にわたるので、ホストマイコンで処理されるタスクとしてのバッテリ残量表示やバッテリパックの認証処理を迅速に行えないおそれがあった。
【０００６】
一般に通信制御用のプログラムは、従来からＣＰＵやメインメモリなどのハードウェア資源（プログラムソース）を効率的かつ安全に利用するための基本ソフトウェアであるオペレーティングシステム（ＯＳ）によって管理されている。しかし、従来のＯＳによって管理される、外部機器との間の通信処理は、データの送信処理と受信処理とが、それぞれ別の周期に実行される別の処理単位として管理されていた。そのため、２周期分で外部機器との通信が１回しか実行できず、外部機器との間での通信速度が遅くなるという問題があった。また、１回の通信（送受信）に対して２つの処理単位を個別に呼び出して実行させる必要があるため、処理の実行管理が複雑になり、各処理手順を記述したプログラムのソース構造も複雑になって、たとえば外部機器の変更に対応したプログラム書換えなどが容易でなくなるという問題もあった。
【０００７】
本発明はこのような点に鑑みてなされたものであり、外部機器とのデータ通信を効率化するとともに、その通信処理の実行管理を容易にした電子機器、この電子機器における通信制御装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では、上記問題を解決するために、通信機能を備えた外部機器との間で通信を行う電子機器において、コマンドを発行して、前記外部機器との間の通信処理を指示するホストコントローラと、前記外部機器との間でデータを送受信する通信インタフェースと、前記ホストコントローラから受信したコマンドに応じたタスクを指定するタスク指定手段と、前記外部機器に対して前記通信インタフェースを通じてデータ送信を行うための前処理と、前記データ送信に対する応答としてのデータ受信に対応する後処理との組合せを単位としてそれぞれ構成される複数のサブタスクにより、前記タスクを管理し、前記タスク指定手段により指定された前記タスクに対応する前記サブタスクを、あらかじめ決められた順番で実行させるサブタスク管理手段とを有することを特徴とする電子機器が提供される。
【０００９】
このような電子機器では、タスク指定手段により、ホストコントローラから発行されるコマンドに応じたタスクが指定されて、そのタスクが実行されることで、通信インタフェースを通じた外部機器との通信処理が制御される。また、タスクは複数のサブタスクから構成され、サブタスク管理手段は、それぞれのサブタスクを、外部機器に対して通信インタフェースを通じてデータ送信を行うための前処理と、そのデータ送信に対する応答としてのデータ受信に対応する後処理との組合せを単位として管理する。そして、サブタスク管理手段は、タスク指定手段により指定されたタスクに対応するサブタスクを、あらかじめ決められた順番で実行させることで、通信処理を実行させる。
【発明の効果】
【００１０】
本発明によれば、タスクを構成するサブタスクが、外部機器に対して通信インタフェースを通じてデータ送信を行うための前処理と、そのデータ送信に対する応答としてのデータ受信に対応する後処理との組合せを単位として管理され、それらのサブタスクがあらかじめ決められた順番で実行されるので、データの送受信処理が高速化されるとともに、その送受信処理の実行管理が容易になる。
【発明を実施するための最良の形態】
【００１１】
以下、この発明の電子機器として、デジタルスチルカメラあるいはデジタルビデオカメラなどとして実現される撮像装置に適用した場合を例にして、本発明の実施の形態を図面を参照しながら説明する。
【００１２】
図１は、実施の形態に係る撮像装置およびバッテリパックの構成を示すブロック図である。
図１において、撮像装置１は、バッテリパック２から供給される電源によって駆動される装置であり、電源供給を受けるための正極端子１１および負極端子１２、通信端子１３、ホストコントローラとしてのマイクロコンピュータ（以下、ホストマイコンという。）１４、レギュレータ１５、撮像・記録処理部１６、表示部１７、通信制御装置１８などを備えている。また、この撮像装置１に対して着脱可能に接続されるバッテリパック２は、撮像装置１との通信機能を備えている。このバッテリパック２は、電源供給用の正極端子２１および負極端子２２、通信端子２３、バッテリセル２４、マイクロコンピュータ（以下、バッテリマイコンという。）２５、ならびに通信インタフェース２６などを備えている。
【００１３】
撮像装置１にバッテリパック２が装着されると、バッテリパック２の正極端子２１、負極端子２２および通信端子２３が、それぞれ撮像装置１の正極端子１１、負極端子１２および通信端子１３に接続される。そして、正極端子１１および負極端子１２を通じてバッテリパック２から撮像装置１に電源が供給される。
【００１４】
撮像装置１のホストマイコン１４は、撮像装置１の動作を統括的に制御する制御部である。このホストマイコン１４は、通信制御装置１８に対してコマンドを送信することで、バッテリパック２側と通信して、バッテリパック２から所望のデータを受信することが可能になっている。そして、たとえば、受信したデータを利用して、バッテリ残量を表示するための表示情報を生成して、表示部１７に出力する。
【００１５】
通信制御装置１８は、バッテリパック２側と通信するための電気的なインタフェース回路と、その通信手順を制御するための制御回路とが一体化された回路であり、ＩＣ（Integrated Circuit）などとして実現される。この通信制御装置１８は、ホストマイコン１４からのコマンドに応じて、バッテリパック２側と通信端子１３を介して通信する。
【００１６】
レギュレータ１５は、正極端子１１および負極端子１２に印加された電源電圧を所定の電圧に安定化して、装置内部に供給する。撮像・記録処理部１６は、画像の撮像や、撮像により得られた画像データの記録媒体への記録、撮像中の画像や記録された画像の表示データ生成などの処理を行うブロックである。表示部１７は、たとえばＬＣＤ（Liquid Crystal Display）などを備え、撮像・記録処理部１６およびホストマイコン１４において生成された表示データを受けて画像を表示する。
【００１７】
一方、バッテリパック２は、バッテリセル２４が発生する電圧を正極端子２１および負極端子２２を通じて撮像装置１に供給する。バッテリセル２４としては、たとえばリチウムイオン型などの二次電池を用いることができる。なお、リチウムイオン二次電池のように、放電電圧が比較的緩やかでかつ直線的に低下する放電特性を有する二次電池を用いることにより、撮像装置１側でバッテリ残量を高精度に検出して、たとえば使用可能な残り時間としてバッテリ残量を表示することが可能となる。
【００１８】
バッテリマイコン２５は、バッテリセル２４の電圧やこれに流れる電流を検出する。また、通信インタフェース２６および通信端子２３を介して、撮像装置１の通信制御装置１８と通信し、撮像装置１側から送信される認証情報を処理して応答したり、撮像装置１側から要求されたデータを送信する。
【００１９】
通信インタフェース２６は、撮像装置１側と通信するための電気的なインタフェース回路であり、通信端子２３を介して撮像装置１側と信号を送受信する。
ここで、撮像装置１とバッテリパック２との間で通信する目的は、主に、バッテリ残量を撮像装置１側で表示すること、接続されたバッテリパック２が正しい通信相手であることを確認（認証処理）すること、およびバッテリパック２に使用履歴を書き込むことなどである。
【００２０】
バッテリ残量の表示は、以下のように行われる。バッテリマイコン２５では、バッテリマイコン２５が、バッテリセル２４の電圧および放電電流（または充電電流、または充放電電流でもよい）を、内蔵するＡＤコンバータを介して測定する。なお、放電電流は、電流検出抵抗２７の両端電圧を基に測定できる。バッテリマイコン２５は、これらの電圧および放電電流の測定情報から、撮像装置１に送信すべき情報を計算する。たとえば、放電流を一定周期で積算した積算値を計算する。
【００２１】
バッテリマイコン２５は、これらの情報を、撮像装置１からの要求に応じて送信する。撮像装置１では、ホストマイコン１４が、撮像装置１での消費電力などの情報をあらかじめ保持しており、この保持している情報と、バッテリパック２から供給された情報とから、たとえばバッテリセル２４を使用可能な残り時間などの残量情報を計算する。そして、計算結果に応じた残量表示画像が表示部１７に表示される。
【００２２】
また、バッテリパック２に対する認証処理では、たとえば、ホストマイコン１４とバッテリマイコン２５の双方が複数個の固有のデータを持っていて、バッテリマイコン２５が通信インタフェース２６、通信端子２３、通信端子１３を介して通信制御装置１８と複数回の通信を実行する。ホストマイコン１４は、通信制御装置１８を通じて供給された、バッテリマイコン２５側の固有のデータを鍵情報で解読した後、自身が持つ固有のデータと比較して、バッテリパック２が正しい通信相手であることを確認する。ホストマイコン１４では、通信相手のバッテリパック２が正規のものではないと判定した場合、撮像装置１を電源オフの状態に移行させて、不正なバッテリパック２を使用できないように制御する。
【００２３】
また、バッテリパック２に使用履歴を書き込むには、ホストマイコン１４からバッテリパック２を使用した記録データを通信制御装置１８、通信端子１３、通信端子２３、通信インタフェース２６を介して、バッテリマイコン２５へ通信する。バッテリマイコン２５は、そのデータを保存する。バッテリマイコン２５に保存されたデータは、たとえば、バッテリパック２が充電器などに挿されたとき、「撮像装置１に挿入された場合に使用可能な時間」として充電器で表示するために読み出される。
【００２４】
つぎに、通信制御装置１８の構成および動作について説明する。
図２は、撮像装置に内蔵された通信制御装置のハードウェア構成を示すブロック図である。
【００２５】
この撮像装置１に内蔵された通信制御装置１８は、ＣＰＵ３１とそのバスライン３２に接続された通信インタフェース３３、パラレルＩ／Ｏ（Input/Output）ユニット３４、ＲＯＭ（Read Only Memory）３５、およびＲＡＭ（Random Access Memory）３６などから構成され、通信インタフェース３３には通信端子１３を介してバッテリパック２が接続される。また、通信制御装置１８は、パラレルＩ／Ｏユニット３４を介してホストマイコン１４に接続されている。
【００２６】
ＣＰＵ（Central Processing Unit）３１は、ホストマイコン１４からコマンドを受け取って、コマンドに応じた処理を実行する演算手段であって、通信インタフェース３３を介してバッテリパック２との間で行われるデータ送受信を制御するとともに、パラレルＩ／Ｏユニット３４を介してホストマイコン１４との間でパラレル信号の授受を行っている。このＣＰＵ３１のバスライン３２に接続されたＲＯＭ３５、およびＲＡＭ３６には、上記のタスクを構成する処理の手順が記述されたプログラムや、つぎの図３に示すようなタスク管理などを行う制御プログラムなどが格納されている。
【００２７】
図３は、図２の通信制御装置におけるタスク管理を行う制御プログラムのプログラム構造を示す図である。
通信制御装置１８で実行されるプログラムは、図３に示すように、ホストマイコン１４からのコマンドを受付ける非同期制御部分と、独自の周期で定期的にタスク処理を実行する同期部分とに大別される。
【００２８】
非同期部部分では、ホストマイコン１４から送信される制御コマンドを受信してこれを解釈するコマンド解釈プログラム４１が実行されている。コマンド解釈プログラム４１は、ホストマイコン１４からバッテリパック２との通信のための制御コマンドが発行されると、この制御コマンドが指し示す内容を判断して、判断に応じてコマンド受付フラグ４２を設定する。
【００２９】
一方、同期部分では、タスク管理プログラム４３が実行されている。タスク管理プログラム４３は、たとえば、通信制御装置１８内の基本ソフトウェアであるオペレーティングシステムに搭載される機能であり、コマンド受付フラグ４２を定期的に参照し、そのフラグ状態からつぎのどのコマンドを実行すべきか判断し、コマンドに対応するタスクＴ１あるいはタスクＴ２などを順次にコールする。
【００３０】
タスクＴ１，Ｔ２は、タスク管理プログラム４３の管理下で、それぞれ１つ以上のサブタスクの実行を管理しているプログラムであり、たとえばタスク管理プログラム４３の一部として構成される。この例では、タスクＴ１がサブタスクａ１，ａ２，……を管理し、タスクＴ２がサブタスクｂ１，ｂ２，……を管理している。タスクＴ１，Ｔ２は、それぞれの管理プログラム自体でどういう処理プログラムを実行すればよいかを管理している。したがって、タスク管理プログラム４３によってタスクＴ１がコールされると、適切なサブタスクａ１，ａ２などが順次にコールされ、その後にタスクＴ２がコールされると、適切なサブタスクｂ１，ｂ２などが順次にコールされることになる。
【００３１】
つぎに、上記のようなプログラム構造を有するシステムにおけるプログラム実行管理手法について、具体的に説明する。ここではまず、タスク管理プログラム、タスク、およびサブタスクの三層のプログラム構造を有するシステムにおける従来の一般的な動作について説明した後、本実施の形態での動作を説明して、従来の動作と対比することにする。
【００３２】
図４は、従来のプログラム実行管理手法を説明するための図である。
ここでは、通信制御装置１８においてタスク管理プログラム４３の管理下で実行されるタスクの例として、バッテリセル２４の残量表示のためのタスク（以下、残量表示タスクＴ１とする）とバッテリパック２の認証確認のためのタスク（以下、認証確認タスクＴ２とする）とが実行されるものとする。また、各タスクの管理下にあるサブタスクは、たとえば３０ｍ秒などの一定の周期で実行される。
【００３３】
残量表示タスクＴ１は、１０個のサブタスクａ１〜ａ１０を順次に実行するように管理するプログラムである。ここで、サブタスクａ１〜ａ１０は、それぞれバッテリ情報を授受するための最初の通信リセット処理、その受信データの処理、バッテリ電圧情報を要求するための処理、その受信データの処理、バッテリ電流情報を要求するための処理、その受信データの処理、バッテリ温度情報を要求するための処理、その受信データの処理、バッテリ劣化率情報を要求するための処理、その受信データの処理を実行する。
【００３４】
残量表示タスクＴ１がコールされると、最初にバッテリパック２との間で通信リセットが行われる。この通信リセット処理では、サブタスクａ１に対応する処理プロセス（処理の実体）５０が実行されて通信リセットに必要な送信データがセットされ、バッテリマイコン２５との間で通信インタフェース３３を介して送受信６１が開始される。つぎに、データ処理のためのサブタスクａ２に対応する処理プロセス５１が実行され、ＲＡＭ３６に格納されている受信データに基づいて、通信リセットが完了したかどうか判断される。なお、その判断結果は、たとえば、残量表示タスクＴ１に引き渡され、残量表示タスクＴ１は、受信データに基づく判断が正常であった場合に、つぎのサブタスクを実行させる。この点は、サブタスクａ４，ａ６，ａ８，ａ１０についても同様である。
【００３５】
つぎのバッテリ電圧処理では、サブタスクａ３に対応する処理プロセス５２が実行されて、バッテリセル２４の残量表示のための電圧データ取得が命令され、バッテリマイコン２５との間で通信インタフェース３３を介して送受信６２が開始される。そして、データ処理のためのサブタスクａ４に対応する処理プロセス５３が実行され、ＲＡＭ３６に格納されている受信データに基づいて、バッテリ電圧データが正常に取得されたかどうか判断される。判断結果は、残量表示タスクＴ１に引き渡される。
【００３６】
つぎのバッテリ電流処理では、サブタスクａ５に対応する処理プロセス５４が実行されて、バッテリセル２４の電流データ取得が命令され、バッテリマイコン２５との間で通信インタフェース３３を介して送受信６３が開始される。そして、データ処理のためのサブタスクａ６に対応する処理プロセス５５が実行され、ＲＡＭ３６に格納されている受信データに基づいて、バッテリ電流データが正常に取得されたかどうか判断される。判断結果は、残量表示タスクＴ１に引き渡される。
【００３７】
つぎのバッテリ温度処理では、サブタスクａ７に対応する処理プロセス５６が実行されて、バッテリセル２４の温度データ取得が命令され、バッテリマイコン２５との間で通信インタフェース３３を介して送受信６４が開始される。そして、データ処理のためのサブタスクａ８に対応する処理プロセス５７が実行され、ＲＡＭ３６に格納されている受信データに基づいて、バッテリ温度データが正常に取得されたかどうか判断される。判断結果は、残量表示タスクＴ１に引き渡される。
【００３８】
最後のバッテリ劣化率処理では、サブタスクａ９に対応する処理プロセス５８が実行されて、バッテリセル２４の劣化率データ取得が命令され、バッテリマイコン２５との間で通信インタフェース３３を介して送受信６５が開始される。そして、データ処理のためのサブタスクａ１０に対応する処理プロセス５９が実行され、ＲＡＭ３６に格納されている受信データに基づいて、バッテリ劣化率データが正常に取得されたかどうか判断される。判断結果は、残量表示タスクＴ１に引き渡される。
【００３９】
このようにして、通信制御装置１８側でバッテリパック２からバッテリ残量表示に必要な全てのデータが取得されたとき、それらのデータがホストマイコン１４に送信される。ホストマイコン１４では、撮像装置１の消費電力データを基に、送信されたデータからバッテリ残量を計算して、表示部１７で表示できる。そして、通信制御装置１８におけるタスク管理プログラム４３は、バッテリセル２４の残量表示タスクＴ１に続いて、バッテリパック２の認証確認タスクＴ２に進み、そのために必要な通信リセット処理のためのサブタスクｂ１などが順次に実行される。
【００４０】
ところで、上記のプログラムの実行管理手法では、各サブタスクが１つの処理プロセスに対応しており、２回のサブタスク（たとえばサブタスクａ１，ａ２）の実行に対して、送受信処理（たとえば送受信６１）が１回しか実行されないため、通信速度に限界があった。また、１回の送受信処理が２つのサブタスクに分かれて実行されているため、サブタスクの移行先の判断処理が煩雑になり、各サブタスクに対応するプログラムソースの管理もやりにくいなどの問題があった。
【００４１】
そこで、つぎの図５で説明するプログラム実行管理動作では、タスク管理される各サブタスクの処理を、それぞれ前処理と後処理に分けて管理するようにした。
図５は、本実施の形態のプログラム実行管理手法を説明するための図である。
【００４２】
ここで、バッテリセル２４の残量表示タスクＴ１は、５個のサブタスクＡ〜Ｅを順次に実行するように管理している。ここでは、サブタスクＡ〜Ｅが、それぞれバッテリ情報を授受するための最初の通信リセット処理、バッテリ電圧情報を受信するための処理、バッテリ電流情報を受信するための処理、バッテリ温度情報を受信するための処理、バッテリ劣化率情報を受信するための処理にそれぞれ対応し、サブタスクＡ〜Ｅはそれぞれ送受信６１〜６５と１対１で対応している。なお、サブタスクＡ〜Ｅ（サブタスクＦ〜Ｈも同様）は、たとえば３０ｍ秒などの一定の周期で実行される。
【００４３】
そして、各サブタスクの処理の実体は、大別して前処理と後処理とに分割されている。たとえば通信リセット処理を管理するサブタスクＡは、前処理５０ａと後処理５０ｂとに分割されている。前処理は、通信先（すなわちバッテリパック２）に対する処理の要求（ここでは主にデータ送信の要求）を行う処理であり、後処理は、その要求に対する応答の受信（ここでは主に要求したデータの受信）とその受信結果に基づく処理の正常終了の判定を行う処理である。また、サブタスクはそれぞれ１つの関数に対応しており、上位層（タスク）から渡される引数を基に前処理および後処理のどちらが要求されたかを判別し、その関数に含まれる前処理あるいは後処理を実行できるようになっている。
【００４４】
たとえば、サブタスクＡの実行の際には、まず前処理の実行を指定する引数がサブタスクＡに対して渡されて、それに対応する前処理５０ａが実行されて、通信リセットに必要なデータがセットされる。これに応じて通信インタフェース３３では送受信６１が実行され、データがバッテリパック２に送信された後、その応答としてのデータが受信されて、ＲＡＭ３６（あるいは通信インタフェース３３内部のメモリ）に記憶される。この後、後処理の実行を指示する引数がサブタスクＡに渡されて、これに対応する後処理５０ｂが実行される。このとき、ＲＡＭ３６（あるいは通信インタフェース３３内部のメモリ）に格納された受信データが取得されるとともに、その受信データに基づいて、通信リセットが完了したかどうか判断される。そして、通信リセット処理のサブタスクＡが正常に完了したとき、残量表示タスクＴ１はつぎのバッテリ電圧処理のサブタスクＢをコールし、電圧データ取得が命令される。
【００４５】
サブタスクＢでは、引数に応じて、バッテリ電圧情報を要求するための前処理５１ａが実行される。この後、対応する送受信６２が完了して、前処理を行うように引数が指定されると、対応する後処理５１ｂが実行され、ＲＡＭ３６に格納されている受信データが取得されるとともに、その受信データに基づいて、正常に電圧データの受信が完了したかどうか判断される。同様に、サブタスクＣ〜Ｅが送受信６３〜６５とそれぞれ１対１に対応して実行され、その後、認証確認タスクＴ２に進んでサブタスクＦ〜Ｈが実行される。
【００４６】
なお、サブタスクＦ〜Ｈは、認証確認タスクＴ２を構成するものであり、たとえば、通信リセット処理、認証のための固有データ送信、固有データ受信にそれぞれ対応している。
【００４７】
このように、本実施の形態のプログラム実行管理手法では、通信制御装置１８の通信インタフェース３３での、バッテリパック２へのデータ送信処理およびバッテリパック２からのデータ受信処理を含む通信処理が、ＣＰＵ３１によるサブタスクＡ〜Ｆの実行周期と１対１に対応して実行される。したがって、データ送信およびそれに応じたデータ受信の一連の処理が高速化される。これとともに、バッテリパック２などの外部機器との送受信１回に対して、サブタスクＡ〜Ｆの処理が１個という具合に１対１に対応して管理され、タスクを構成するプログラムの実行管理が簡単になり、そのプログラムのソースの管理もやりやすくなるなどの利点がある。
【００４８】
なお、上記の前処理、後処理は、実際にはさらに小さい単位の処理に分割されていてもよい。たとえば、後処理は、バッテリパック２からの受信データを取得する処理と、その受信データを基に、通信が正常に終了したか否かを判定する処理とに分割されていてもよい。
【００４９】
ここで、上記のプログラム実行管理手法を実現するためのソースプログラムおよび処理関数のテーブル構成の一例を示す。図６は、サブタスクのソースプログラムの一例を示す図である。
【００５０】
図６には、タスクを構成するサブタスクのソースプログラムの例が示されている。ここでは、それぞれがサブタスクに対応する関数Ｓ＿Ａ、Ｓ＿Ｂ、Ｓ＿Ｃが記述され、各関数には前処理と後処理に対応するソースが記述されている。そして、処理の実体である前処理と後処理の実行は引数（Ａｒｇ：Ａｒｇｕｍｅｎｔ）が与えられることで区別される。これらの関数は、あらかじめ通信制御装置１８のＲＯＭ３５などに書き込まれているもので、通信インタフェース３３を通じたデータ送受信の手順を制御するものである。
【００５１】
図７は、処理関数テーブルの例を示す図である。
図７に示したテーブルには、各タスクにおける関数（すなわちサブタスク）が実行順に記述されており、各タスクはこのテーブルを保持して、テーブル内の関数を上から順に指示するポインタのカウンタをインクリメントによって、つぎに実行すべきサブタスクを、管理することができる。
【００５２】
図８は、タスク管理プログラムのソースの一例を示す図である。
図８には、タスク管理プログラム４３のソースの一部の例が示されている。このプログラムは、後述するサブタスクの移行処理の手順（図１０）を制御するものである。
【００５３】
タスク管理プログラム４３は、最初に後処理を実行させるための引数を指定して、処理関数のテーブルにおいてポインタが指示する関数をコールする。このとき、後処理の実行により処理が正常に終了したか否かがチェックサム（Ｃｈｅｃｋ＿ｓｕｍ）を用いて判定され、その判定結果に応じて、一連のサブタスクの処理を進捗させるかどうかを決定される。処理が正常に終了した場合には、テーブル上の関数を指示するポインタのカウンタをインクリメントするが、正常に終了していない場合にはカウンタの値を変更しない。
【００５４】
つぎに、前処理を実行させるための引数を指定し、このときのポインタが指示する関数をコールする。これにより、直前の通信処理が正常に終了した場合には、引数が変更されたつぎのサブタスクがコールされ、新たな受信データの送信が行われる。また、バッテリパック２との間の送受信に通信エラーが生じて、正常に終了していなければ、同じサブタスクの前処理が繰り返される。これらの制御は、タスクを構成するそれぞれのサブタスクＡ，Ｂ，Ｃが所定の周期で実行するように管理されている。
【００５５】
図９は、サブタスクの実行によるバッテリパックと通信処理の手順を示すフローチャートである。
サブタスクに対応する関数が実行されると、ＣＰＵ３１はまず、ステップＳＴ１１において、タスク（たとえば残量表示タスクＴ１）からサブタスクに対して渡された情報から引数を判別する。
【００５６】
ステップＳＴ１２では、ＣＰＵ３１は引数から前処理か後処理のいずれかを判別する。ここでは、引数が１であれば前処理を実行するステップＳＴ１３に進んで、ＣＰＵ３１は通信インタフェース３３に対して送信データをセットし、バッテリパック２との間でのデータ送信の実行を要求する。また、ステップＳＴ１２で引数が１以外であれば、後処理を実行するステップＳＴ１４に進む。ステップＳＴ１４では、ＣＰＵ３１は通信インタフェース３３から受信データを取得するとともに、チェックサムを用いた処理終了の判定処理を実行する。
【００５７】
タスクによって所定のサブタスクがコールされると、それに対応する関数が実行されて、上記図９の処理手順が２回繰り返されることになる。
図１０は、サブタスクの移行制御処理の手順を示すフローチャートである。
【００５８】
タスクは、図７に示したようなテーブルによって、サブタスクの実行順を認識している。そして、サブタスクの実行結果に基づいて、以下のような手順でつぎに実行するサブタスクを指定する。
【００５９】
ステップＳＴ２１では、あるサブタスクの後処理が実行され、ＣＰＵ３１は、直前の通信による受信データを取得する。
ステップＳＴ２２では、ＣＰＵ３１は、後処理の一部として受信データからチェックサムを演算して、つぎにどのサブタスクの処理を行うか判断する。通信が成立していれば、ステップＳＴ２３に進み、テーブル上の関数を指示するポインタのカウンタをインクリメントして、つぎのサブタスクの処理を指示する。通信エラーであれば、ステップＳＴ２４に進み、カウンタの値をそのままにすることで、同じサブタスクの処理を指示する。あるいは通信終了処理を実行する。
【００６０】
ステップＳＴ２５では、直前のステップＳＴ２３、あるいはステップＳＴ２４で指示されたサブタスクの後処理が実行され、つぎのデータが送信される。
以上のプログラム実行管理手法によれば、通信インタフェース３３を通じたデータ送信処理と、その応答としてのデータ受信処理とが、サブタスクの実行周期と１対１で対応しているので、データ送受信処理を高速化できるとともに、サブタスクの実行管理や、そのソースプログラムの管理を簡易化することができる。
【００６１】
たとえば、図４のような手法を採った場合には、データの送信と受信とを個別のサブタスクとして管理するので、管理すべきタスク（およびそのソースプログラム）の数が増えて、その実行管理も煩雑になる。具体的には、たとえば、データを送信し、それに応じたデータ受信のためのサブタスクが実行された後、通信の異常が確認されると、あらためてサブタスクをコールする必要が生じ、このときにどのサブタスクをコールすべきかを判断するための処理が必要となる。これに対して、本実施の形態によれば、通信の異常が確認された場合には別のサブタスクをコールする必要はなく、同じサブタスクが実行されればよい。また、サブタスクがコールされたときには、前処理と後処理のどちらを実行するかが指定されるが、これらの指定は別の管理処理手段（図８に示すソースプログラムおよび図１０の処理手順の実行手段）によって単に前処理と後処理とが交互に指定されるだけなので、適切な処理を確実に実行することができる。
【００６２】
さらに、このようにサブタスクの実行管理が容易になるので、新たに別の通信手順を加えるような場合でも、単にサブタスクを加え、サブタスクの処理順（図７のテーブル）を更新するだけで対応できるので、通信相手機器・通信元機器の仕様変更などにも容易に対応可能になる。とくに、通信制御のための機能をホストマイコン１４とは別体の通信制御装置１８として設けたので、通信元機器の仕様変更に対する対応はさらに容易になる。
【００６３】
なお、本発明は撮像装置だけでなく、携帯用電話機、あるいはパーソナルコンピュータなど、通信機能を備えた電子機器に広く適用できる。たとえば、著作権保護されたコンテンツを暗号化して送受信する送受信制御装置に本発明を適用して、上記のサブタスクとしてそのコンテンツの復号化処理手順を含めた場合に、新たな暗号化の仕様に対応するために、その仕様に対応する復号化処理のためのサブタスクを容易に加えることが可能になる。
【００６４】
また、上記のプログラム実行管理処理の機能は、コンピュータによって実現することができる。その場合、上記処理機能の内容を記述したプログラムが提供される。そして、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００６５】
プログラムを流通させる場合には、たとえば、そのプログラムが記録された光ディスクや半導体メモリなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００６６】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【００６７】
【図１】実施の形態に係る撮像装置およびバッテリパックの構成を示すブロック図である。
【図２】撮像装置に内蔵された通信制御装置のハードウェア構成を示すブロック図である。
【図３】通信制御装置におけるタスク管理を行う制御プログラムのプログラム構造を示す図である。
【図４】従来のプログラム実行管理手法を説明するための図である。
【図５】本実施の形態のプログラム実行管理手法を説明するための図である。
【図６】サブタスクのソースプログラムの一例を示す図である。
【図７】処理関数テーブルの例を示す図である。
【図８】タスク管理プログラムのソースの一例を示す図である。
【図９】サブタスクの実行によるバッテリパックと通信処理の手順を示すフローチャートである。
【図１０】サブタスクの移行制御処理の手順を示すフローチャートである。
【符号の説明】
【００６８】
１……撮像装置、２……バッテリパック、１１，２１……正極端子、１２，２２……負極端子、１３，２３……通信端子、１４……ホストマイコン、１５……レギュレータ、１６……撮像・記録処理部、１７……表示部、１８……通信制御装置、２４……バッテリセル、２５……バッテリマイコン、２６……通信インタフェース、２７……電流検出抵抗、３１……ＣＰＵ、３２……バスライン、３３……通信インタフェース、３４……パラレルＩ／Ｏユニット、３５……ＲＯＭ、３６……ＲＡＭ、４１……コマンド解釈プログラム、４２……コマンド受付フラグ、４３……タスク管理プログラム、５０〜６０……処理プロセス、５０ａ〜５７ａ……前処理、５０ｂ〜５７ｂ……後処理、６１〜６８……送受信、Ｔ１……タスク（残量表示タスク）、Ｔ２……タスク（認証確認タスク）、ａ１〜ａ１０，ｂ１，Ａ〜Ｈ……サブタスク
【図１】
2008158658.tif 000003
【図２】
2008158658.tif 000004
【図３】
2008158658.tif 000005
【図４】
2008158658.tif 000006
【図５】
2008158658.tif 000007
【図６】
2008158658.tif 000008
【図７】
2008158658.tif 000009
【図８】
2008158658.tif 000010
【図９】
2008158658.tif 000011
【図１０】
2008158658.tif 000012