カメラのチェックシステム
【目的】カメラに搭載したプログラムの一部を、カメラ機能のチェック調整に兼用できるようにして、チェック調整専用ソフトの開発を必要最小限にすること。
【構成】本発明は、カメラのメイン処理を行なう中央処理回路、およびこの中央処理回路に接続された周辺回路を有するカメラと、中央処理回路との接続が可能で、この中央処理回路を介してカメラ機能のチェック調整を行なうコマンドを有する計算機とを有し、中央処理回路に備えられた、カメラの機能のチェック調整を行なうコマンドにおいて、中央処理回路と周辺回路を動作させるサブルーチンソフト等の任意のサブルーチンを計算機からアドレス指定して実行させる機能を有するものである。
【構成】本発明は、カメラのメイン処理を行なう中央処理回路、およびこの中央処理回路に接続された周辺回路を有するカメラと、中央処理回路との接続が可能で、この中央処理回路を介してカメラ機能のチェック調整を行なうコマンドを有する計算機とを有し、中央処理回路に備えられた、カメラの機能のチェック調整を行なうコマンドにおいて、中央処理回路と周辺回路を動作させるサブルーチンソフト等の任意のサブルーチンを計算機からアドレス指定して実行させる機能を有するものである。
【発明の詳細な説明】
【0001】
【技術分野】本発明は、カメラ機能をチェック調整するカメラのチェックシステムに関する。
【0002】
【従来技術およびその問題点】近時、カメラの電子化に伴い、アナログ回路の調整、受光素子の受光レベルの、レンズの補正データの設定、各回路素子のチェック等、様々なチェック調整処理のため、これらの各項目に応じた、計算機と中央処理回路用の多量のチェック用のソフトが必要とされている。
【0003】これにより、チェック調整用ソフトの開発に要する時間は益々増大され、チェック調整用のソフトの容量も益々増大されている。
【0004】
【発明の目的】本発明は、カメラに搭載したプログラムの一部を、カメラ機能のチェック調整に兼用できるようにして、チェック調整専用ソフトの開発を必要最小限にすることを目的とする。
【0005】
【発明の概要】本発明は、カメラのメイン処理を行なう中央処理回路、およびこの中央処理回路に接続された周辺回路を有するカメラと、中央処理回路との接続が可能で、この中央処理回路を介してカメラ機能のチェック調整を行なうコマンドを有する計算機とを有し、中央処理回路に備えられた、カメラの機能のチェック調整を行なうコマンドにおいて、中央処理回路と周辺回路を動作させるサブルーチンソフト等の任意のサブルーチンを上記計算機からアドレス指定して実行させる機能を有することを特徴とする。
【0006】
【発明の実施例】以下図示実施例に基づいて本発明を説明する。図1Aは、本実施例の制御ブロックを示す図である。中央処理回路11は、内部にA/D変換器12、インターバルタイマ13およびROM14a、RAM14bを有するマイクロコンピュータ(以後マイコンという)である。中央処理回路11には、アナログ信号Aと通信ラインBを介してBV検出部18とEEPROM19と外部データ操作F20が接続されている。中央処理回路11にはさらに、発振器15、LCD表示器26、レンズ情報入力部27、パトローネ情報入力部28、スイッチ情報入力部29、シーケンス制御部32、レギュレータ16、バッテリ21と接続されたDC/DCコンバータ17が接続されている。
【0007】外部データ操作F20は、通信ラインBに接続された端子群Cを介して中央処理回路11に接続されている。この外部データ操作部20は、DTC30と、端子群CおよびDTC30に接続されるインターフェース31(図1B)を有している。これらのDTC30とインターフェース31は、通信端子群Dを介して互いに接続されている。
【0008】バッテリ21は、カメラ33のシステムに、メイン電源を接続する。本実施例では、このカメラ33を一眼レフカメラとして説明するが、本発明の適用は一眼レフカメラに限られるものではなく、電子回路を有するカメラであれば他のいかなるものにも適用可能である。レギュレータ16は、バッテリ21の電圧を入力し、中央処理回路11に一定の電圧を出力する。DC/DCコンバータ17は、バッテリ電圧を入力し、中央処理回路11からのパワーホールド信号を入力して周辺回路に電源を出力する。BV検出部18は、中央処理回路11からの制御により指定されたBV情報を中央処理回路11に出力する。発振器15は、中央処理回路11に高速と低速のクロック信号を供給する。
【0009】LCD表示器26は、中央処理回路11からのLCD表示データを表示する。レンズ情報入力部27は、装着されているレンズの種類により、レンズのA/M、開放絞り、最小絞り、および焦点距離等の情報を中央処理回路11に出力する。パトローネ情報入力部28は、パトローネの有無、フィルムの感度等の情報を中央処理回路11に出力する。スイッチ情報入力部29は、ミラーアップスイッチ、ミラーダウンスイッチ、フィルムスイッチ、レリーズスイッチ、測光スイッチ、リワインドスイッチ、裏蓋スイッチ、UP/DOWNスイッチおよびモード設定スイッチの情報を中央処理回路11に出力する。
【0010】シーケンス制御部32は、中央処理回路11の信号によりミラーの制御、フィルムの露光およびフィルムの巻き上げ等の制御を行なう。EEPROM19は、中央処理回路11と通信ラインBを介して接続されており、EEPROMデータの読み出し/書き込みを行なう。外部データ操作部20は、中央処理回路11と端子群Cを介して接続され、中央処理回路11を介してカメラの調整、機能のチェック、仕様変更および撮影情報の入力等を行なう。
【0011】DTC(計算機)30は、カメラ機能チェックRAM、EEPROMのセットダンプ等を行なうソフトを有するコンピュータである。DTC30は、EEPROM19にソフト的にデータを書き込みたいとき書込モードに設定し、このときスタックがOKであれば確実に書き込むことができる。
【0012】インターフェース31とDTC30とは、16ビット信号により相互に通信されるが、この通信のタイムシーケンスを図2に示す。この中でインターフェース31は、カメラ33から取り込んだ信号を16ビット信号に変換してDTC30と通信させる機能を有している。図中の“PCTL”と“PFLAG”は、データのハンドシェイクを行なうための制御信号であり、“DO15〜0”と“DI15〜0”により16ビットの入出力を実行する。“CTL0”と“CTL1”の組み合わせにより、テストコードであるか否かの判断を行なう。
【0013】DTC30からデータを出力する場合、DTC30は、I/Oを“L(ロー)”に設定し、PCTLを下げる以前に“DO15〜0”の送信データを確定させる。次にPCTLを立ち下げて、データの入力要求をインターフェース31を介して中央処理回路11に出力する。PCTLの“L”を中央処理回路11が検出すると、中央処理回路11はインターフェース31を介して“DO15〜0”を入力する。そして、中央処理回路11側は必要なデータを取り込んだということで、PFLAGを立ち下げる。PFLAGが下がったことをインターフェース31を介してDTC30が検出すると、DTC30は次のデータの通信を可能にするためにPCTLを立ち上げる。インターフェース31を介して中央処理回路11がPCTLの“H(ハイ)”を検出すると、中央処理回路11は次のDTC30からの通信を許可するためにPFLAGを立ち上げる。DTC30と中央処理回路11は、PCTLとPFLAGとを用いて、このような形でハンドシェイクを行なって、DTC30から中央処理回路11にコマンド又はデータを出力する。なお、コマンドとデータの区別について述べると、DTC30は、CTL0が“H”の場合はテストコードの通信、CTL0が“L”の場合はテストコードに付随したデータの通信として出力している。CTL1が“H”か“L”かで、DTC30側からテスト要求があるか否かをみることができ、“H”であれば“テスト要求あり”とされ、“L”であれば“テスト要求なし”とされる。
【0014】DTC30にデータを入力する場合、DTC30は、I/Oを“H”の状態に設定し、PCTLを立ち下げる。インターバルタイマ31を介してPCTLの“L”を中央処理回路11が検出すると、中央処理回路11側は、そのときのコマンドに応じたデータをインターフェース31を介して“DI15〜0”に出力させる。そして、インターフェース31を介してPFLAG(Pフラグ)の“L”をDTC30に出力し、データの入力を指示する。その後、上述同様のハンドシェイクを実行して、DTC30側にデータを読み込ませる。
【0015】図3Aに、DTC30とインターフェース31、およびカメラ33の接続関係を示す。インターフェース31は、カメラ33からのチップイネーブル信号(DCE)により動作可能となる。インターフェース31は、カメラ33側の信号により、CTL1と“DO15〜8”等のデータを切り替えてカメラ33に出力するデータ切替ブロック34、DTC30からのパラレルデータをカメラ33からのシリアルクロックに同期してシリアル変換し、データ切替ブロック34に出力するためのパラレル/シリアル変換ブロック35、カメラ33からの1バイトごとのシリアルクロックに応じてラッチパルスを発生するラッチパルス発生ブロック36、シリアル信号をパラレル信号に変換させ、各ラッチブロックに出力するシリアル/パラレル変換ブロック38、カメラ33から出力される“DI15〜0”のシリアル信号の上位8ビットをラッチし、DTC30に出力する上位8bitラッチブロック37、同様に下位8ビットをラッチしDTC30に出力する下位8bitラッチブロック39、同様にカメラ33から出力されるPFLAGのシリアル信号をPFLAG信号をラッチし、DTC30に出力するPFLAG信号ラッチブロック40を有している。
【0016】インターフェース31とDTC30を接続する通信端子群Dは、端子41(CTL1)、端子42(DO15〜8)、端子43(DO7〜0)、端子44(CTLO、PCTL、I/O)、端子45(DI15〜8)、端子46(DI7〜0)、および端子47(PFLAG)を有する。
【0017】カメラ33とインターフェース31を接続する端子群Cは、端子48(SI)、端子49(DCE)、端子50(SCK)、端子51(SO)を有している。端子48(SI)は、カメラ33側で抵抗53によりプルアップされている。これらの端子48〜51は、通常はユーザーが使用することのない端子であり、カメラ33の外部に露出されてはいない。
【0018】端子48(SI)は、カメラ33側に、シリアルクロックに応じてデータを出力する端子である。CTL1は、“H”でテスト要求であり(図2)、CTL1の選択時、カメラ33側にはデータ切替ブロック34で反転して、SI端子に“L”が出力される。カメラ33側では、CTL1の“L”を入力することによって、DTC30側からのテスト要求がある、と判断することができる。端子49(DCE)はチップイネーブルであり、カメラ33からインターフェース31に対してデータの入出力を要求するための信号であり、“L”で要求、“H”で、インターフェース31から信号が出ないように禁止することができる。端子50(SCK)は、カメラ33とDTC30とが相互にシリアル通信するためのシリアルクロックをインターフェース31に供給する端子である。端子51(SO)は、カメラ33からインターフェース31にシリアルデータを出力する端子である。
【0019】パラレル/シリアル変換ブロック35は、端子42〜44および端子49、50に接続されており、チップイネーブルされているときにシリアルクロックに同期してデータ切替ブロック34にシリアルデータを出力する。このデータ切替ブロック34は、端子41およびブロック35の出力、端子49と端子50に接続されており、CTL1の出力と、シリアルクロックに応じて端子42〜44から出力されパラレル/シリアル変換された出力とを切り替え、端子48(SI)に出力する。データ切替ブロック34は、常時はオープンにされていて、チップイネーブルがかかってクロックが出てくるまでCTL1を選択出力している。ラッチパルス発生ブロック36は、端子49、50、51に接続されており、上位8bitラッチブロック37、下位8bitラッチブロック39およびPFLAG信号ラッチブロック40にラッチクロックを出力する。シリアル/パラレル変換ブロック38は、端子49〜51に接続されており、8bitのシリアルデータをパラレルデータに変換させて、上位8bitラッチブロック37、下位8bitラッチブロック39およびPFLAG信号ラッチブロック40に8bitパラレルデータを出力する。該ラッチブロック38、39、40は、ラッチパルス発生ブロック36から出力されてくるラッチ信号に応じて、シリアル/パラレル変換ブロック38からのパラレルデータをラッチする。
【0020】上位8bitラッチブロック37は、ラッチパルス発生ブロック36とシリアル/パラレル変換ブロック38の出力に接続されており、端子45にDI15〜8データを出力する。下位8bitラッチブロック39は、ラッチパルス発生ブロック36とシリアル/パラレル変換ブロック38の出力に接続されており、端子46にDI7〜0データを出力する。PFLAG信号ラッチブロック40は、ラッチパルス発生ブロック36とシリアル/パラレル変換ブロック38の出力に接続されており、端子47にPFLAG信号を出力する。
【0021】図3Bに、上記各端子から入出力される信号のタイミングを示す。端子49(DCE)が“H”のとき、チップイネーブルをかける以前に、しかるべきシリアル通信を行ない、ノットセル(NOTSEL)の状態にする。このノットセルはいわば、中央処理回路11と、EEPROM19およびBV検出部18の間の通信ラインをカットして、該中央処理回路11と外部データ操作F20との通信を行なわせるための準備段階である。次にカメラ33はチップイネーブル(DCE)を“L”にする。この状態でシリアルクロックを出すまではSI端子のレベルによりDTC30のCTL1信号のレベルをチェックすることができる。SI端子が“L”のときはDTC30からのTEST要求あり(CTL1=1)であり、逆に、SI端子が“H”のときはDTC30からのTEST要求はない。
【0022】次にシリアル通信を行なうと、最初のシリアル通信では、端子48(SI)からPCTLに関するデータ(I/O、CTLOのデータも含む)が、カメラ33側に出力される。この最初の8ビットのシリアル通信に対し、端子51(SO)から、PFLAGに関するデータ、つまりPフラグが立っているか否かのデータがカメラ33から出力される。続けてシリアルクロックを出力すると、端子48(SI)にDO7〜0、端子51(SO)にはDI7〜0のデータ、さらに続けてシリアルクロックを出力すると、端子48(SI)にはDO15〜8、端子51(SO)にはDI15〜8のデータがシリアル通信される。シリアル通信は、チップイネーブルの後、8ビット単位で0〜3回有効であり、その範囲でチップイネーブルを途中でOFFして通信を止めることができる。
【0023】図4〜図23に示すフローチャートにより、本実施例のカメラ33およびDTC30の作動を説明する。図21以外はカメラ側のフローチャートである。図4と図5は、“VDD OFFループ”つまりメイン電源を入れる前の通常の動作を示している。まず“RESET”のラベルで始まるルーチンに入る。ステップS1では、スタックポインタの初期設定を実行し、S2では、RAMオールクリア、ポート入出力、出力データの設定および特殊レジスタの設定等の“リセット処理”を実行し、“SW1CHK”のラベルで始まるルーチンに進む。
【0024】S3では、VDD ONフラグをクリアし、S4では、スタックポインタの再設定を実行し、S5では、“TEST”のラベルで始まるサブルーチンをコールして“TESTチェック処理”を実行する。S6では、DTC30からのテスト要求があるか否かを判断し、要求があればS7に進み、なければS8に進む。S8では、UP/DOWNスイッチおよびモード設定スイッチをモニターし、データ変更等の“UP/DOWN処理”を実行する。S9では、UP/DOWN処理等で設定された内部データの表示を行なう“LCD表示処理”を実行する。S10では、測光スイッチがONされたか否かを判断し、ONされればS7に進んでVDD ONフラグをセットし、そうでなければS11に進む。S11では、レリーズスイッチがONされているか否かを判断し、ONされればS7に進み、そうでなければS12に進む。S12では、VDDをOFFしてパワーホールドをOFFし、S13では、タイマ割り込み許可を実行する。S14では“パワーダウン処理”を実行してパワーダウンモードに入る。所定時間後、タイマ割り込みがかかり、S15にて“タイマ割り込み処理”を実行する。このS14とS15の間で、パワーダウンすることにより消費電流を抑える。S16では“タイマ割り込み禁止”を実行し、“SW1CHK”のラベルにループする。
【0025】S7では、VDDフラグをセットし、S17では、VDDを投入してパワーホールドをONし、S18では、周辺回路リセット時間およびBV安定時間のウエイトを行なう“VDD安定時間ウエイト処理”を実行する。S19では、“TEST”のラベルで始まるサブルーチンをコールして“VDD ON TEST処理”を実行し、S20では、“SIEEP”のラべルで始まるサブルーチンを連続的にコールし、AE演算、シーケンス制御用EEPROMデータをRAM14aに入力する“EEPROMデータ入力処理”を実行する。S21では、マウントピン情報、レンズROM情報等を入力する“レンズチェック処理”を実行し、“RESTART”に進む。
【0026】図6と図7にメインルーチンを示す。まず“RESTART”のラベルで始まるルーチンに入り、S22では、インターバルタイマを初期設定し、S23では、このインターバルタイマを利用して、パワーホールドタイマが10秒になるようにデータをセットする処理を実行し、“VDD LP”のラベルに進む。S24では、ミラーのUP/DOWN処理を実行し、S25では、レンズチェック処理を実行し、S26では、“BV A/D変換処理”を実行する。S27では、“パトローネ情報入力処理”を実行して、フイルムの有無、フィルム感度等のデータを入力し、変換する。S28では、入力されたデータをもとにTV値、AV値等を求める“AE演算処理”を実行する。S29では、テストを許可するか否かを判断し、許可するならS30に進んで“TEST処理”を実行し、そうでなければS31にジャンプする。
【0027】S31では、LCD表示器26に対するLCD表示処理を実行し、S32では、レリーズ釦が押されたか否かを判断し、レリーズ釦が押されれば“レリーズ処理”のラベルで始まるルーチンに進み、そうでなければS33に進む。S33では、S22で設定したインターバルタイマの時間間隔のチェックを行ない、設定された時間が経過するまではS32に戻り、経過した時点でS34に進む。S34では、“パワーホールドタイマカウント処理”を実行し、S35では、そのパワーホールドタイマのカウントが終了したか否かを判断し、終了したら“SW1CHK”に進んでパワーダウンループに入り、そうでなければ“VDD LP”に戻り、処理を繰り返す。
【0028】次に“レリーズ処理”について説明する。S36では、BV検出部18のアナログ信号を中央処理回路11に出力させて、レリーズ直前のBV値のA/D変換を実行する。S37では、AE演算処理を実行し、S38では、ミラーアップ処理を実行し、S39では、露光制御処理を実行し、S40では、ミラーとフィルム巻き上げ処理を実行する。S41では、フィルムの終端が検出されたか否かを判断し、検出されればS43に進み、そうでなければS42に進む。S42では、“FILMCUP(フィルムカウントアップ)”のラベルで始まるサブルーチンをコールして“フィルム枚数のカウント処理”を実行し、“RESTART”のラべルへ戻る。S43では、“フィルム巻戻し処理”を実行し、S44では、“FILMCLR(フィルムクリア)”のラベルで始まるサブルーチンをコールして“フィルム枚数クリア処理”を実行して“SW1CHK”へ飛ぶ。
【0029】図8および図9は、EEPROM19へのデータの書き込みを示すフローチャートである。“FILM CUP”のラベルで始まるルーチンはカウントアップ時のものであり、“FILM CLR”のラベルで始まるルーチンはフィルム枚数クリア時のものである。S45では、RAMのフィルム枚数をカウントアップし、S46では、フィルム枚数をバッファにセットしておく。S47では、EEPROM19の、フィルム枚数が書かれているアドレスポインタを設定する。S48では、DTC30のライト(書き込み)フラグをクリアし、DTC30の書き込みではなく、通常カメラモードでのということをソフト的に設定して“SOEEP”のラベルで始まるルーチンに進む。
【0030】“SOEEP”は、DTC30側からのEEPROM19への書き込み等のときにコールされるサブルーチンである。S50では、書き込みを始める前にEEPROMに、今現在、同じデータが書かれていないかということをチェックするために“SIEEP”のラベルで始まるサブルーチンをコールして、“EEPROMデータ入力処理”を実行し、EEPROMデータの状態をチェックする。S51、S52では、下位バイトおよび上位バイトをチェックして、両方とも同じであればリターンして何も処理を実行しない。どちらかが違っていれば、S53において、暴走等によりスタックが深くなり過ぎていないか否かを判断する。この結果、スタックがOKならばS54に進み、スタックが異常に深くなっていると判断された場合はリターンし、書き込みを実行しない。ここで、EEPROM19は1ワード単位であり、“1ワード×64”の容量を有する。この1ワードは下位バイトと上位バイトからなっているから、下位のデータつまり下位8ビットが、書き込もうとしているデータと同じか否か、上位のデータつまり上位8ビットが書き込もうとしているデータと同じか否か、を判断している。
【0031】カメラ33のRAM14b上に設定されたスタックエリアは、通常の動作時には充分な位の容量を有しているが、暴走等によりリターンがなくコールのみ繰り返される場合は、その領域がすぐに潰されてしまう。このため、そのような状態で書込サブルーチンがコールされても、書きデータがバッファに正常に入っているかどうか分からないという理由により、S53においてNOの場合にはリターンさせる。
【0032】S54では、“DTC30ライト(書き込み)モード”か否かを判断し、このモードであればS56にジャンプし、DTC30からの書き込みではなく通常カメラモードにおける書き込みである場合はS55に進む。つまり“DTCライト(書き込み)モード”のときは、EEPROM19の全アドレスに対して書き込みが可能となる。
【0033】S55では、フィルムアドレスをチェックする。ここでは、“FILMCUP”または“FILMCLR”から入ってきたとき設定されているフィルム枚数用のEPアドレスポインタと同じアドレスがそのまま検出できるか否かをみる。そして“FILMCUP”から入ってくれば必ずイコールになるはずであるが、別のところからフィルム枚数用のアドレス以外に書き込もうとして“SOEEP”等をコールした場合には、フィルムアドレスが等しくないから書き込みはできない。つまりフィルムアドレスと等しいところ以外は書き込みができないようにここで設定される。
【0034】S56では、EEPROMチップイネーブルを実行し、S57では、EEPROM19への書き込み許可通信(モードおよびアドレス)を実行し、S58では、EEPROMチップイネーブルをOFFし、S59では、EEPROMチップイネーブルを実行し、S60では、EEPROM書き込み開始通信(モードおよびアドレス)を実行する。S61では、下位バイト(下位8ビット)データ出力通信を実行し、S62では、下位バイト(下位8ビット)データ出力通信を実行し、S63では、書き込み時間の15mSのウエイトを実行し、S64では、EEPROMチップイネーブルをOFFし、S65では、EEPROMチップイネーブルを実行し、S66では、書き込み禁止コード通信(モードおよびアドレス)を実行し、S67では、EEPROMチップイネーブルをOFFしてリターンする。“FILM CLR”において、S49では、RAM14aにメモリされたフィルム枚数をクリアしてS46に飛ぶ。したがって、DTC30に接続されていない通常のカメラ撮影モードで正常動作しているときに、必要以外のEEPROM19への書き込みが禁止され、また異常動作が検出されたときも、EEPROM19への書き込みが禁止される。
【0035】図10により、“SIEEP”のラベルで始まるEEPROM19からDTC30側にデータを読み込む場合のルーチンを説明する。S68では、通信ラインにBV検出部18や外部機器等、他のデータも存在するので、EEPROM19との通信を行なうために通信先変更モードをセットする。S69では、通信先をEEPROM19に変更させる。S70では、データ通信モードをセットし、S71では、EEPROMチップイネーブルを実行し、S72で、EEPROM読み出し開始通信(モードおよびアドレス)を実行する。S73では、下位バイトをバッファに入力し、S74で、上位バイトをバッファに入力し、S75で、EEPROMチップイネーブルをOFFする。
【0036】図11と図12により、“TEST”のラベルで始まるルーチンを説明する。S76では、初期設定としてDTC30からのパワーホールドの要求がないとしてPH要求フラグを設定する。S77では、テストスイッチを入力処理し、S78では、テスト要求があったか否かを判断し、要求されればS79に進み、そうでなければリターンする。S79では、DTCエラーが既に検出されていたか否かを判断する。このDTCエラーとは、例えば或るテストコードの次に必ず入力で来なければならない場合に、DTC30が出力したような場合に設定される。
【0037】S79においてDTCエラーと判断されればS85に飛び、そうでなければS80に進む。S80では、PFLAGに“1”を出力しておかないとDTC30側からPCTLを立ち下げることができないので、まずPFLAGに“1”を出力し、ついでS81において、PCTL入力処理を実行する。S82では、PCTLが“0”になったか否か、つまりDTC30側からの要求があるか否かを判断し、“0”のときはS83に進み、そうでなければRAMモニターを実行させるため、S85に進む。
【0038】S83では、現在、パワーダウンループにあるのかメインループにあるのかをみるために、VDDフラグがONされているか否かを判断する。この結果、パワーダウンループにあるとされた場合は、リターンした後自動的に電源がセットされるように、S84においてDTCパワーホールドフラグをセットし、S85〜S87においてRAMモニターしてリターンする。つまりS85では、サンプリング可否ビットを判断し、可であればS86に進み、モニターRAMアドレスを入力し、そのアドレスに対するボディのRAMデータをバッファにセットする。S87では、16ビットデータ出力処理を実行し、バッファのデータが下位8ビット(DI7〜0)に出力される。
【0039】既に電源がONされていると判断されれば、DTC涌信モードに切り替えて、PCTLを入力して、PCTLが“0(ロー)”になるまで待ち(S88〜S90)、ローになったらS91に進む。S91では、CTLOが“1”にされたか否かを判断し、“1”にされればS92に進み、そうでなければリターンする。S92では、テストスイッチ入力処理を実行し、S93では、テスト要求があるか否かを判断する。テスト要求があればS94に進み、そうでなければリターンする。
【0040】S94では、DTCコードの入力処理を実行し、DTCコードの下位が“FE”というテストコードだったらリターンで抜け、下位が“FF”というテストコードであれば“RESET”のラベルに抜ける(S94〜S96)。テストコードの下位が“FE”でも“FF”でもない場合は、さらに、登録コードを判断する。図13に示されるテストテーブルには、“SUBCHK”、“RAMDUMP”、“RAMSET”、“EEPDUMP”、“EEPSET”のコードが登録されている。これ以外のテストコードである場合には、“DTC ERR”のラベルで始まるルーチンに進む。このルーチンでは、S99で、PFLAGに“0”を出力し、S100に進んでDTC30エラーフラグをセットする。つまり、それ以後のハンドシェイクができないようにしてパワーダウンの“SW1CHK”ルーチンに抜ける。
【0041】S101では、テストコードはOKか否かを判断する。つまり、テストコードのときに出力されるデータは、例えば図21に示されるように、上位が“10”、下位が“00”〜“04”と設定されているが、この上位の“10”をチェックしている。OKであればS102に進んで、テストコードに対するサブルーチンアドレスをポインタにセットし、S103では、そのテストサブルーチンを実行する。S101で、テストコードがOKでなければ“DTC ERR”に進む。
【0042】図14に、“HANDOUT”、“HANDIN”のラベルで始まるルーチンを示す。これらのルーチンは、実際に16ビットのデータを入力、出力するときのサブルーチンである。まず“HAND OUT”のラベルで始まるルーチンでは、S104で、PCTLデータを入力し、S105に進んでPCTLが“0”か否かを判断し、“0”であればS106に進み、そうでなければS104に戻る。S106では、I/Oデータを入力し、S107では、入力したI/OデータによりDTC30が入力モードか否かを判断し、入力モードならばS108に進み、そうでなければ“IO ERR”のラベルで始まるルーチンに進む。S108では、16ビットデータの出力処理を実行し、S109では、PFLAGに“0”を出力し、S110では、PCTLを入力する。S111では、入力したPCTLデータによりPCTLが“1”になったか否かを判断し、“1”であればS112に進み、そうでなければS110に戻り、PCTL入力を繰り返す。S112では、PFLAGに“1”を出力してリターンする。
【0043】“HAND IN”のラベルで始まるルーチンでは、S113で、PCTLデータの入力処理を実行し、S114で入力したPCTLデータにより、PCTLが“0”であるか否かを判断し、“0”であればS115に進み、そうでなければS113に戻り、PCTL入力を繰り返す。S115では、入力したI/OデータによりDTCが出力モードか否かを判断し、出力モードならばS116に進み、そうでなければ“IO ERR”に飛ぶ。S116では、DTC30データの入力処理を実行し、S117では、エコーバック処理を実行して前述のS109に進む。
【0044】図15により、“TEST PCTL”のラベルで始まるルーチンを説明する。このルーチンは、PCTLが立ち下がったときにテスト要求があればメインループのS88に戻り、テスト要求がなければリターンして、従属データの処理を継続する。S118では、DTCシリアルモードを実行し、S119では、PCTLデータを入力し、S12では、PCTLが“0”になったか否かを判断する。“0”であればS121に進み、そうでなければS119に戻る。S121では、テスト要求が出されたか否かを判断し、テスト要求が出されればS122に進み、そうでなければリターンする。S122では、スタックの1レベルをカットして、リターンする。
【0045】図16により、“RAMDUMP”のラベルで始まるサブルーチンを説明する。このルーチンは、RAM14bに書き込まれたデータをすべて出力させるためのものであり、図21に示すDTC30からのテストコード“1”の出力により実行される。S123では、DTCデータを入力処理し、S124では、DTC30に出力するRAMのスタートアドレスをRAMアドレスポインタにセットし、S125では、DTCデータの上位データをクリアし、S126では、PCTL入力処理を実行する。S127では、入力したPCTLによりPCTLが“0”になったか否かを判断し、“0”ならばS128に進み、そうでなければS126に戻り、PCTL入力を繰り返す。S128では、次のテストコードが出力されたか否かを判断し、テストコードならばリターンし、そうでなければS129に進み、RAMダンプを継続する。S129では、RAMデータをバッファに準備し、S130では、“HANDOUT”をコールして、DTC30にRAMデータを出力し、S131では、RAMアドレスポインタ+1としてS126からの処理を繰り返す。
【0046】図17により、“EEPDUNP”のラベルで始まるサブルーチンを説明する。このルーチンは、EEPROM19に書き込まれたデータを出力させるためのものであり、図21に示すDTC30からのテストコード“3”の出力により実行される。S132では、DTCデータの入力処理を実行し、S133では、DTC30に出力するEEPROM19のスタートアドレスをEEPROMアドレスポインタにセットする。S134では、“SIEEP”のサブルーチンをコールして、EEPROMデータの入力処理を実行する。S135では、DTC通信モードを設定し、S136では、PCTL入力処理を実行し、S137では、入力したPCTLデータによりPCTLが“0”であるか否かを判断し、“0”であればS138に進み、そうでなければS136を繰り返す。S138では、次のテストコードの出力を判断し、テストコードならばリターンし、そうでなければS139に進む。S139では、“HANDOUT”をコールして、DTC30にEEPROMデータを出力し、S140では、“EEPROMアドレスポインタ+1”とし、S134に戻ってEEPROMダンプ判断を繰り返す。
【0047】図18により、“EEPSET”のラベルで始まるルーチンを説明する。このルーチンは、EEPROM19への書き込みを実行させるルーチンであり、図21に示すDTC30からのテストコード“4”の出力により実行される。S141では、DTCデーの入力処理を実行し、S142では、EEPROM書き込みモードに入った場合、最初にDTC30からのEEPROM書き込み開始アドレスを取り込んでRAM14bの中のEEPROMアドレスポインタにセットする。S143では、DTC通信モードを設定し、S144では、PCTLの入力処理を実行する。
【0048】S145では、入力したPCTLデータによりPCTLが“0”か否かを判断し、“0”ならばS146に進み、そうでなければS144に戻り、PCTL入力を繰り返す。S146では、次のテストコードの出力があったか否かを判断し、テストコードがあればリターンし、そうでなければS147に進む。S147では、“HANDIN”をコールして、DTCデータの入力処理を実行し、S148では、EEPROM書き込みバッファにデータを設定し、S177では、任意のアドレスに書き込むためのDTCライト(書き込み)フラグをセットする。S149では、“SOEEP”のラベルで始まるサブルーチンをコールして、EEPROM書き込み処理を実行する。S178では、DTCライト(書き込み)フラグをクリアし、S150で、“EEPROMアドレスポインタ+1”を実行して、S143に戻る。つまり、EEPROM書き込み処理を実行するときだけフラグが立つように処理する。そして普段、フィルム枚数をカウントしようとしているときは、DTC書き込みモードではないということが分かるように、必ずフラグをクリアする。そして実際に書き込むところで、DTCライトモードか否かを判断して、DTC書き込みモードでない場合はフィルムアドレス以外は書き込まない。
【0049】図19により、“RAM SET”のラベルで始まるルーチンを説明する。このルーチンは、RAM14bへの書き込みを実行させるルーチンであり、図21に示すDTC30からのテストコード“2”の出力により実行される。S151では、DTCデータの入力処理を実行し、S152では、DTC30から入力するRAMのスタートアドレスをRAMアドレスポインタにセットする。S153では、PCTL入力処理を実行し、S154では、入力したPCTLデータによりPCTLが“0”であるか否かを判断し、“0”であればS155に進み、そうでなければS153に戻り、PCTL入力を繰り返す。S155では、次のテストコードの出力を判断し、テストコードがあればリターンし、そうでなければS156に進む。S156では、DTCデータ入力処理を実行し、S157では、RAM14bの中のアドレスポインタによって指定されたRAMにDTCデータをセットし、S158では、“RAMアドレスポインタ+1”とし、S153に戻り、RAMセットを繰り返す。
【0050】図20により、“SUBCHK”のラベルで始まるルーチンを説明する。このルーチンは、カメラ33側に格納された多数のサブルーチンデータのうち、DTC30側から出されたサブルーチンアドレスに対応したサブルーチンを実行させるルーチンであり、図21に示すDTC30からのテストコード“0”の出力により実行される。S159では、サブルーチンアドレスをDTC30から入力してRAM14bに格納し、S160では、DTC30から入力されたコードをサブルーチンのアドレスとしてコール実行し、リターンする。
【0051】図21により、DTC30側の基本的なソフト“DTC SOFT”の制御ルーチンを説明する。このルーチンは、設定したテストコードに基づいて、カメラ33側に種々の動作を実行させたり、RAM14bへの書き込み、EEPROM19への書き込み等を行なうためのものである。まずS161では、配列のディメンション、データ等の初期設定を行ない、S162では、データの表示設定処理を実行し、S163では、テストコードの入力処理を実行する。S164では、この入力されたテストコードを判断し、テストコードが“0”の場合はS165に進み、“1”の場合はS166に進み、“2”の場合はS167に進み、“3”の場合はS168に進み、“4”の場合はS169に進む。
【0052】S165は、DTC30によるカメラ機能のチェックのため、カメラ33側にテストコードおよびサブルーチンアドレスを出し、カメラ33側において、予め設定されている複数のサブルーチンを実行させる場合である。ここで言うサブルーチンとは、通常ユーザーがカメラを操作した場合に動作するすべてのものであり、図4〜図10の中にも登場している。まず最初のテストコードをカメラ33側に出力するべく、テストコードの出力が可能な状熊を設定するため、CTL1=1、CTL0=0として(図2参照)、テストコード“1000H”を出力する。この後、CTL1=0、CTL1=1として従属データ通信の状態にする。そして、テストコード1000Hに対応する従属データとしては、チェックするベきカメラ機能に対応させたサブルーチンが格納されているアドレスを指定するサブルーチンアドレスであり、これが出力される。これに基づき、カメラの対応するサブルーチンが実行される。サブルーチン実行前にRAMにデータの設定が必要であれば、後述する1002Hのテストコードにより設定が可能であり、サブルーチン実行後にRAMにデータが設定される場合は、同様に後述の1001HのRAMダンプによりDTC30に入力可能である。したがって、他のサブルーチンアドレスの実行と組み合わせることにより、種々のチェック調整を容易に行なうことができる。これによれば、通常、カメラを動作させるためのソフトをサブルーチン化させて格納し、チェック調整時に必要なサブルーチンのアドレスを出力して実行させるだけで簡単かつ確実にチェック調整を行なうことができるから、従来のように、チェック調整のために作成した特別のソフトをカメラ側に搭載しなくても良く、ROMのメモリ容量を大幅に節約させることができる。
【0053】ここで、DTC30側から任意のサブルーチンを実行させて、レンズ通信データの信頼性のチェックを短時間で実現させる場合の実例を示す。通常、カメラがレンズと通信するタイミングは、200mSに1回程度であるので、この通信をDTC30から実行させることにより連続通信が可能となり、テスト時間を1/20程度に短縮させることができる。以下にそのテストリストを示す。
【0054】またS166は、コマンドによってRAM14b内のデータを全てDTC30側に取り込む場合である。まずテストコード“1001H”をカメラ33側に出力し、スタートアドレス(=RAMの0番地)を出力する。続けてデータ入力を連続して実行することにより、RAM14bから、このRAM14b内の全てのデータをDTC30側に取り込むことができる。S167は、コマンドによってRAM14bにデータを書き込む場合である。まずテストコード“1002H”をカメラ33側に出力し、スタートアドレスを出力する。続けて、スタートアドレスのデータから順番に設定したいRAMデータを出力することにより、RAM14bにデータを書き込むことができる。S168は、コマンドによってEEPROM19内のデータを全てDTC30側に取り込む場合である。まずテストコード“1003H”をカメラ33側に出力し、スタートアドレス(=EEPROM19の0番地)を出力する。続けて、データ入力を連続して実行することにより、EEPROM19から、このEEPROM19内の全てのデータをDTC30側に取り込むことができる。S169は、コマンドによってEEPROM19にデータを書き込む場合である。まずテストコード“1004H”をカメラ33側に出力し、スタートアドレスを出力する。続けて、スタートアドレスのデータから順番に設定したいEEPROMデータを出力することにより、EEPROM19にデータを書き込むことができる。
【0055】図22に“SIOSUB”のラべルで始まる制御ルーチンを示す。S170では、アドレス通信モードをセットし、S171では、アドレスの出力処理を実行し、S172では、データ通信モードをセットし、S173では、データの入出力処理を実行する。
【0056】図23に“NOTSEL”のラベルで始まるルーチンを示す。S174では、アドレス通信モードをセットし、S175では、NOTSELアドレスの出力処理を実行し、S176では、データ通信モードをセットする。
【0057】
【発明の効果】以上説明したように、本発明によれば、通常のカメラ動作を実行させるソフトをサブルーチン化させて、カメラ機能のチェック調整用のソフトとして兼用できるようにしたから、カメラ側のチェック調整専用のソフトが最小限で済み、カメラ側のROMを圧縮させ、その分カメラとして使用できるROM領域を増やすことができる。これにより、製品ソフトの質を向上させることができるとともに、ソフトの開発量を減少させて、より早く製品化させることができる。
【図面の簡単な説明】
【図1A】本実施例の制御ブロックを概略的に示す図である。
【図1B】DTCとインターフェースを概略的に示す図である。
【図2】DTC側とカメラ側との通信時のタイムシーケンスである。
【図3A】DTC、インターフェースおよびカメラの接続状況を示すブロック図である。
【図3B】同実施例のDTC、インターフエースおよびカメラ間で入出される信号のタイミングを示すタイムシーケンスである。
【図4、図5】同実施例の“RESET”のラベルで始まるルーチンを示すフローチャートである。
【図6、図7】同実施例の“RESTART”のラベルで始まるルーチンを示すフローチャートである。
【図8、図9】同実施例の“FILMCUP”のラベルで始まるルーチンを示すフローチャートである。
【図10】同実施例の“SIEEP”のラベルで始まるルーチンを示すフローチャートである。
【図11、図12】同実施例の“TEST”のラベルで始まるルーチンを示すフローチャートである。
【図13】同実施例の“テストコード”を示す図である。
【図14】同実施例の“HANDOUT”、“HANDIN”のラベルで始まるルーチンを示すフローチャートである。
【図15】同実施例の“TESTPCTL”のラベルで始まるルーチンを示すフローチャートである。
【図16】同実施例の“RAMDUMP”のラベルで始まるルーチンを示すフローチャートである。
【図17】同実施例の“EEPDUMP”のラベルで始まるルーチンを示すフローチャートである。
【図18】同実施例の“EEPSET”のラベルで始まるルーチンを示すフローチヤートである。
【図19】同実施例の“RAMSET”のラベルで始まるルーチンを示すフローチャートである。
【図20】同実施例の“SUBCHK”のラベルで始まるルーチンを示すフローチャートである。
【図21】同実施例の“DTCSOFT”のラベルで始まるルーチンを示す計算機のフローチャートである。
【図22】同実施例の“SIOSUB”のラベルで始まるルーチンを示すフローチヤートである。
【図23】同実施例の“NOTSEL”のラベルで始まるルーチンを示すフローチヤートである。
【符号の説明】
11 中央処理回路
12 A/D変換器内部
13 インターバルタイマ
14b RAM
15 発信器
16 レギュレータ
17 DC/DCコンバータ
18 BV検出部
19 EEPROM
20 データ操作部
21 バッテリ
26 LCD表示器
27 レンズ情報入力部
28 パトローネ情報入力部
29 スイッチ情報入力部
30 DTC(計算機)
31 インターフェース
32 シーケンス制御部
34 データ切替ブロック
35 パラレル/シリアル変換ブロック
36 ラッチパルス発生ブロック
37 上位8bitラッチブロック
38 シリアル/パラレル変換ブロック
39 下位8bitラッチブロック
40 PFLAG信号ラッチブロック
A 通信ライン
B 通信ライン
C 端子群
D 通信端子群
【0001】
【技術分野】本発明は、カメラ機能をチェック調整するカメラのチェックシステムに関する。
【0002】
【従来技術およびその問題点】近時、カメラの電子化に伴い、アナログ回路の調整、受光素子の受光レベルの、レンズの補正データの設定、各回路素子のチェック等、様々なチェック調整処理のため、これらの各項目に応じた、計算機と中央処理回路用の多量のチェック用のソフトが必要とされている。
【0003】これにより、チェック調整用ソフトの開発に要する時間は益々増大され、チェック調整用のソフトの容量も益々増大されている。
【0004】
【発明の目的】本発明は、カメラに搭載したプログラムの一部を、カメラ機能のチェック調整に兼用できるようにして、チェック調整専用ソフトの開発を必要最小限にすることを目的とする。
【0005】
【発明の概要】本発明は、カメラのメイン処理を行なう中央処理回路、およびこの中央処理回路に接続された周辺回路を有するカメラと、中央処理回路との接続が可能で、この中央処理回路を介してカメラ機能のチェック調整を行なうコマンドを有する計算機とを有し、中央処理回路に備えられた、カメラの機能のチェック調整を行なうコマンドにおいて、中央処理回路と周辺回路を動作させるサブルーチンソフト等の任意のサブルーチンを上記計算機からアドレス指定して実行させる機能を有することを特徴とする。
【0006】
【発明の実施例】以下図示実施例に基づいて本発明を説明する。図1Aは、本実施例の制御ブロックを示す図である。中央処理回路11は、内部にA/D変換器12、インターバルタイマ13およびROM14a、RAM14bを有するマイクロコンピュータ(以後マイコンという)である。中央処理回路11には、アナログ信号Aと通信ラインBを介してBV検出部18とEEPROM19と外部データ操作F20が接続されている。中央処理回路11にはさらに、発振器15、LCD表示器26、レンズ情報入力部27、パトローネ情報入力部28、スイッチ情報入力部29、シーケンス制御部32、レギュレータ16、バッテリ21と接続されたDC/DCコンバータ17が接続されている。
【0007】外部データ操作F20は、通信ラインBに接続された端子群Cを介して中央処理回路11に接続されている。この外部データ操作部20は、DTC30と、端子群CおよびDTC30に接続されるインターフェース31(図1B)を有している。これらのDTC30とインターフェース31は、通信端子群Dを介して互いに接続されている。
【0008】バッテリ21は、カメラ33のシステムに、メイン電源を接続する。本実施例では、このカメラ33を一眼レフカメラとして説明するが、本発明の適用は一眼レフカメラに限られるものではなく、電子回路を有するカメラであれば他のいかなるものにも適用可能である。レギュレータ16は、バッテリ21の電圧を入力し、中央処理回路11に一定の電圧を出力する。DC/DCコンバータ17は、バッテリ電圧を入力し、中央処理回路11からのパワーホールド信号を入力して周辺回路に電源を出力する。BV検出部18は、中央処理回路11からの制御により指定されたBV情報を中央処理回路11に出力する。発振器15は、中央処理回路11に高速と低速のクロック信号を供給する。
【0009】LCD表示器26は、中央処理回路11からのLCD表示データを表示する。レンズ情報入力部27は、装着されているレンズの種類により、レンズのA/M、開放絞り、最小絞り、および焦点距離等の情報を中央処理回路11に出力する。パトローネ情報入力部28は、パトローネの有無、フィルムの感度等の情報を中央処理回路11に出力する。スイッチ情報入力部29は、ミラーアップスイッチ、ミラーダウンスイッチ、フィルムスイッチ、レリーズスイッチ、測光スイッチ、リワインドスイッチ、裏蓋スイッチ、UP/DOWNスイッチおよびモード設定スイッチの情報を中央処理回路11に出力する。
【0010】シーケンス制御部32は、中央処理回路11の信号によりミラーの制御、フィルムの露光およびフィルムの巻き上げ等の制御を行なう。EEPROM19は、中央処理回路11と通信ラインBを介して接続されており、EEPROMデータの読み出し/書き込みを行なう。外部データ操作部20は、中央処理回路11と端子群Cを介して接続され、中央処理回路11を介してカメラの調整、機能のチェック、仕様変更および撮影情報の入力等を行なう。
【0011】DTC(計算機)30は、カメラ機能チェックRAM、EEPROMのセットダンプ等を行なうソフトを有するコンピュータである。DTC30は、EEPROM19にソフト的にデータを書き込みたいとき書込モードに設定し、このときスタックがOKであれば確実に書き込むことができる。
【0012】インターフェース31とDTC30とは、16ビット信号により相互に通信されるが、この通信のタイムシーケンスを図2に示す。この中でインターフェース31は、カメラ33から取り込んだ信号を16ビット信号に変換してDTC30と通信させる機能を有している。図中の“PCTL”と“PFLAG”は、データのハンドシェイクを行なうための制御信号であり、“DO15〜0”と“DI15〜0”により16ビットの入出力を実行する。“CTL0”と“CTL1”の組み合わせにより、テストコードであるか否かの判断を行なう。
【0013】DTC30からデータを出力する場合、DTC30は、I/Oを“L(ロー)”に設定し、PCTLを下げる以前に“DO15〜0”の送信データを確定させる。次にPCTLを立ち下げて、データの入力要求をインターフェース31を介して中央処理回路11に出力する。PCTLの“L”を中央処理回路11が検出すると、中央処理回路11はインターフェース31を介して“DO15〜0”を入力する。そして、中央処理回路11側は必要なデータを取り込んだということで、PFLAGを立ち下げる。PFLAGが下がったことをインターフェース31を介してDTC30が検出すると、DTC30は次のデータの通信を可能にするためにPCTLを立ち上げる。インターフェース31を介して中央処理回路11がPCTLの“H(ハイ)”を検出すると、中央処理回路11は次のDTC30からの通信を許可するためにPFLAGを立ち上げる。DTC30と中央処理回路11は、PCTLとPFLAGとを用いて、このような形でハンドシェイクを行なって、DTC30から中央処理回路11にコマンド又はデータを出力する。なお、コマンドとデータの区別について述べると、DTC30は、CTL0が“H”の場合はテストコードの通信、CTL0が“L”の場合はテストコードに付随したデータの通信として出力している。CTL1が“H”か“L”かで、DTC30側からテスト要求があるか否かをみることができ、“H”であれば“テスト要求あり”とされ、“L”であれば“テスト要求なし”とされる。
【0014】DTC30にデータを入力する場合、DTC30は、I/Oを“H”の状態に設定し、PCTLを立ち下げる。インターバルタイマ31を介してPCTLの“L”を中央処理回路11が検出すると、中央処理回路11側は、そのときのコマンドに応じたデータをインターフェース31を介して“DI15〜0”に出力させる。そして、インターフェース31を介してPFLAG(Pフラグ)の“L”をDTC30に出力し、データの入力を指示する。その後、上述同様のハンドシェイクを実行して、DTC30側にデータを読み込ませる。
【0015】図3Aに、DTC30とインターフェース31、およびカメラ33の接続関係を示す。インターフェース31は、カメラ33からのチップイネーブル信号(DCE)により動作可能となる。インターフェース31は、カメラ33側の信号により、CTL1と“DO15〜8”等のデータを切り替えてカメラ33に出力するデータ切替ブロック34、DTC30からのパラレルデータをカメラ33からのシリアルクロックに同期してシリアル変換し、データ切替ブロック34に出力するためのパラレル/シリアル変換ブロック35、カメラ33からの1バイトごとのシリアルクロックに応じてラッチパルスを発生するラッチパルス発生ブロック36、シリアル信号をパラレル信号に変換させ、各ラッチブロックに出力するシリアル/パラレル変換ブロック38、カメラ33から出力される“DI15〜0”のシリアル信号の上位8ビットをラッチし、DTC30に出力する上位8bitラッチブロック37、同様に下位8ビットをラッチしDTC30に出力する下位8bitラッチブロック39、同様にカメラ33から出力されるPFLAGのシリアル信号をPFLAG信号をラッチし、DTC30に出力するPFLAG信号ラッチブロック40を有している。
【0016】インターフェース31とDTC30を接続する通信端子群Dは、端子41(CTL1)、端子42(DO15〜8)、端子43(DO7〜0)、端子44(CTLO、PCTL、I/O)、端子45(DI15〜8)、端子46(DI7〜0)、および端子47(PFLAG)を有する。
【0017】カメラ33とインターフェース31を接続する端子群Cは、端子48(SI)、端子49(DCE)、端子50(SCK)、端子51(SO)を有している。端子48(SI)は、カメラ33側で抵抗53によりプルアップされている。これらの端子48〜51は、通常はユーザーが使用することのない端子であり、カメラ33の外部に露出されてはいない。
【0018】端子48(SI)は、カメラ33側に、シリアルクロックに応じてデータを出力する端子である。CTL1は、“H”でテスト要求であり(図2)、CTL1の選択時、カメラ33側にはデータ切替ブロック34で反転して、SI端子に“L”が出力される。カメラ33側では、CTL1の“L”を入力することによって、DTC30側からのテスト要求がある、と判断することができる。端子49(DCE)はチップイネーブルであり、カメラ33からインターフェース31に対してデータの入出力を要求するための信号であり、“L”で要求、“H”で、インターフェース31から信号が出ないように禁止することができる。端子50(SCK)は、カメラ33とDTC30とが相互にシリアル通信するためのシリアルクロックをインターフェース31に供給する端子である。端子51(SO)は、カメラ33からインターフェース31にシリアルデータを出力する端子である。
【0019】パラレル/シリアル変換ブロック35は、端子42〜44および端子49、50に接続されており、チップイネーブルされているときにシリアルクロックに同期してデータ切替ブロック34にシリアルデータを出力する。このデータ切替ブロック34は、端子41およびブロック35の出力、端子49と端子50に接続されており、CTL1の出力と、シリアルクロックに応じて端子42〜44から出力されパラレル/シリアル変換された出力とを切り替え、端子48(SI)に出力する。データ切替ブロック34は、常時はオープンにされていて、チップイネーブルがかかってクロックが出てくるまでCTL1を選択出力している。ラッチパルス発生ブロック36は、端子49、50、51に接続されており、上位8bitラッチブロック37、下位8bitラッチブロック39およびPFLAG信号ラッチブロック40にラッチクロックを出力する。シリアル/パラレル変換ブロック38は、端子49〜51に接続されており、8bitのシリアルデータをパラレルデータに変換させて、上位8bitラッチブロック37、下位8bitラッチブロック39およびPFLAG信号ラッチブロック40に8bitパラレルデータを出力する。該ラッチブロック38、39、40は、ラッチパルス発生ブロック36から出力されてくるラッチ信号に応じて、シリアル/パラレル変換ブロック38からのパラレルデータをラッチする。
【0020】上位8bitラッチブロック37は、ラッチパルス発生ブロック36とシリアル/パラレル変換ブロック38の出力に接続されており、端子45にDI15〜8データを出力する。下位8bitラッチブロック39は、ラッチパルス発生ブロック36とシリアル/パラレル変換ブロック38の出力に接続されており、端子46にDI7〜0データを出力する。PFLAG信号ラッチブロック40は、ラッチパルス発生ブロック36とシリアル/パラレル変換ブロック38の出力に接続されており、端子47にPFLAG信号を出力する。
【0021】図3Bに、上記各端子から入出力される信号のタイミングを示す。端子49(DCE)が“H”のとき、チップイネーブルをかける以前に、しかるべきシリアル通信を行ない、ノットセル(NOTSEL)の状態にする。このノットセルはいわば、中央処理回路11と、EEPROM19およびBV検出部18の間の通信ラインをカットして、該中央処理回路11と外部データ操作F20との通信を行なわせるための準備段階である。次にカメラ33はチップイネーブル(DCE)を“L”にする。この状態でシリアルクロックを出すまではSI端子のレベルによりDTC30のCTL1信号のレベルをチェックすることができる。SI端子が“L”のときはDTC30からのTEST要求あり(CTL1=1)であり、逆に、SI端子が“H”のときはDTC30からのTEST要求はない。
【0022】次にシリアル通信を行なうと、最初のシリアル通信では、端子48(SI)からPCTLに関するデータ(I/O、CTLOのデータも含む)が、カメラ33側に出力される。この最初の8ビットのシリアル通信に対し、端子51(SO)から、PFLAGに関するデータ、つまりPフラグが立っているか否かのデータがカメラ33から出力される。続けてシリアルクロックを出力すると、端子48(SI)にDO7〜0、端子51(SO)にはDI7〜0のデータ、さらに続けてシリアルクロックを出力すると、端子48(SI)にはDO15〜8、端子51(SO)にはDI15〜8のデータがシリアル通信される。シリアル通信は、チップイネーブルの後、8ビット単位で0〜3回有効であり、その範囲でチップイネーブルを途中でOFFして通信を止めることができる。
【0023】図4〜図23に示すフローチャートにより、本実施例のカメラ33およびDTC30の作動を説明する。図21以外はカメラ側のフローチャートである。図4と図5は、“VDD OFFループ”つまりメイン電源を入れる前の通常の動作を示している。まず“RESET”のラベルで始まるルーチンに入る。ステップS1では、スタックポインタの初期設定を実行し、S2では、RAMオールクリア、ポート入出力、出力データの設定および特殊レジスタの設定等の“リセット処理”を実行し、“SW1CHK”のラベルで始まるルーチンに進む。
【0024】S3では、VDD ONフラグをクリアし、S4では、スタックポインタの再設定を実行し、S5では、“TEST”のラベルで始まるサブルーチンをコールして“TESTチェック処理”を実行する。S6では、DTC30からのテスト要求があるか否かを判断し、要求があればS7に進み、なければS8に進む。S8では、UP/DOWNスイッチおよびモード設定スイッチをモニターし、データ変更等の“UP/DOWN処理”を実行する。S9では、UP/DOWN処理等で設定された内部データの表示を行なう“LCD表示処理”を実行する。S10では、測光スイッチがONされたか否かを判断し、ONされればS7に進んでVDD ONフラグをセットし、そうでなければS11に進む。S11では、レリーズスイッチがONされているか否かを判断し、ONされればS7に進み、そうでなければS12に進む。S12では、VDDをOFFしてパワーホールドをOFFし、S13では、タイマ割り込み許可を実行する。S14では“パワーダウン処理”を実行してパワーダウンモードに入る。所定時間後、タイマ割り込みがかかり、S15にて“タイマ割り込み処理”を実行する。このS14とS15の間で、パワーダウンすることにより消費電流を抑える。S16では“タイマ割り込み禁止”を実行し、“SW1CHK”のラベルにループする。
【0025】S7では、VDDフラグをセットし、S17では、VDDを投入してパワーホールドをONし、S18では、周辺回路リセット時間およびBV安定時間のウエイトを行なう“VDD安定時間ウエイト処理”を実行する。S19では、“TEST”のラベルで始まるサブルーチンをコールして“VDD ON TEST処理”を実行し、S20では、“SIEEP”のラべルで始まるサブルーチンを連続的にコールし、AE演算、シーケンス制御用EEPROMデータをRAM14aに入力する“EEPROMデータ入力処理”を実行する。S21では、マウントピン情報、レンズROM情報等を入力する“レンズチェック処理”を実行し、“RESTART”に進む。
【0026】図6と図7にメインルーチンを示す。まず“RESTART”のラベルで始まるルーチンに入り、S22では、インターバルタイマを初期設定し、S23では、このインターバルタイマを利用して、パワーホールドタイマが10秒になるようにデータをセットする処理を実行し、“VDD LP”のラベルに進む。S24では、ミラーのUP/DOWN処理を実行し、S25では、レンズチェック処理を実行し、S26では、“BV A/D変換処理”を実行する。S27では、“パトローネ情報入力処理”を実行して、フイルムの有無、フィルム感度等のデータを入力し、変換する。S28では、入力されたデータをもとにTV値、AV値等を求める“AE演算処理”を実行する。S29では、テストを許可するか否かを判断し、許可するならS30に進んで“TEST処理”を実行し、そうでなければS31にジャンプする。
【0027】S31では、LCD表示器26に対するLCD表示処理を実行し、S32では、レリーズ釦が押されたか否かを判断し、レリーズ釦が押されれば“レリーズ処理”のラベルで始まるルーチンに進み、そうでなければS33に進む。S33では、S22で設定したインターバルタイマの時間間隔のチェックを行ない、設定された時間が経過するまではS32に戻り、経過した時点でS34に進む。S34では、“パワーホールドタイマカウント処理”を実行し、S35では、そのパワーホールドタイマのカウントが終了したか否かを判断し、終了したら“SW1CHK”に進んでパワーダウンループに入り、そうでなければ“VDD LP”に戻り、処理を繰り返す。
【0028】次に“レリーズ処理”について説明する。S36では、BV検出部18のアナログ信号を中央処理回路11に出力させて、レリーズ直前のBV値のA/D変換を実行する。S37では、AE演算処理を実行し、S38では、ミラーアップ処理を実行し、S39では、露光制御処理を実行し、S40では、ミラーとフィルム巻き上げ処理を実行する。S41では、フィルムの終端が検出されたか否かを判断し、検出されればS43に進み、そうでなければS42に進む。S42では、“FILMCUP(フィルムカウントアップ)”のラベルで始まるサブルーチンをコールして“フィルム枚数のカウント処理”を実行し、“RESTART”のラべルへ戻る。S43では、“フィルム巻戻し処理”を実行し、S44では、“FILMCLR(フィルムクリア)”のラベルで始まるサブルーチンをコールして“フィルム枚数クリア処理”を実行して“SW1CHK”へ飛ぶ。
【0029】図8および図9は、EEPROM19へのデータの書き込みを示すフローチャートである。“FILM CUP”のラベルで始まるルーチンはカウントアップ時のものであり、“FILM CLR”のラベルで始まるルーチンはフィルム枚数クリア時のものである。S45では、RAMのフィルム枚数をカウントアップし、S46では、フィルム枚数をバッファにセットしておく。S47では、EEPROM19の、フィルム枚数が書かれているアドレスポインタを設定する。S48では、DTC30のライト(書き込み)フラグをクリアし、DTC30の書き込みではなく、通常カメラモードでのということをソフト的に設定して“SOEEP”のラベルで始まるルーチンに進む。
【0030】“SOEEP”は、DTC30側からのEEPROM19への書き込み等のときにコールされるサブルーチンである。S50では、書き込みを始める前にEEPROMに、今現在、同じデータが書かれていないかということをチェックするために“SIEEP”のラベルで始まるサブルーチンをコールして、“EEPROMデータ入力処理”を実行し、EEPROMデータの状態をチェックする。S51、S52では、下位バイトおよび上位バイトをチェックして、両方とも同じであればリターンして何も処理を実行しない。どちらかが違っていれば、S53において、暴走等によりスタックが深くなり過ぎていないか否かを判断する。この結果、スタックがOKならばS54に進み、スタックが異常に深くなっていると判断された場合はリターンし、書き込みを実行しない。ここで、EEPROM19は1ワード単位であり、“1ワード×64”の容量を有する。この1ワードは下位バイトと上位バイトからなっているから、下位のデータつまり下位8ビットが、書き込もうとしているデータと同じか否か、上位のデータつまり上位8ビットが書き込もうとしているデータと同じか否か、を判断している。
【0031】カメラ33のRAM14b上に設定されたスタックエリアは、通常の動作時には充分な位の容量を有しているが、暴走等によりリターンがなくコールのみ繰り返される場合は、その領域がすぐに潰されてしまう。このため、そのような状態で書込サブルーチンがコールされても、書きデータがバッファに正常に入っているかどうか分からないという理由により、S53においてNOの場合にはリターンさせる。
【0032】S54では、“DTC30ライト(書き込み)モード”か否かを判断し、このモードであればS56にジャンプし、DTC30からの書き込みではなく通常カメラモードにおける書き込みである場合はS55に進む。つまり“DTCライト(書き込み)モード”のときは、EEPROM19の全アドレスに対して書き込みが可能となる。
【0033】S55では、フィルムアドレスをチェックする。ここでは、“FILMCUP”または“FILMCLR”から入ってきたとき設定されているフィルム枚数用のEPアドレスポインタと同じアドレスがそのまま検出できるか否かをみる。そして“FILMCUP”から入ってくれば必ずイコールになるはずであるが、別のところからフィルム枚数用のアドレス以外に書き込もうとして“SOEEP”等をコールした場合には、フィルムアドレスが等しくないから書き込みはできない。つまりフィルムアドレスと等しいところ以外は書き込みができないようにここで設定される。
【0034】S56では、EEPROMチップイネーブルを実行し、S57では、EEPROM19への書き込み許可通信(モードおよびアドレス)を実行し、S58では、EEPROMチップイネーブルをOFFし、S59では、EEPROMチップイネーブルを実行し、S60では、EEPROM書き込み開始通信(モードおよびアドレス)を実行する。S61では、下位バイト(下位8ビット)データ出力通信を実行し、S62では、下位バイト(下位8ビット)データ出力通信を実行し、S63では、書き込み時間の15mSのウエイトを実行し、S64では、EEPROMチップイネーブルをOFFし、S65では、EEPROMチップイネーブルを実行し、S66では、書き込み禁止コード通信(モードおよびアドレス)を実行し、S67では、EEPROMチップイネーブルをOFFしてリターンする。“FILM CLR”において、S49では、RAM14aにメモリされたフィルム枚数をクリアしてS46に飛ぶ。したがって、DTC30に接続されていない通常のカメラ撮影モードで正常動作しているときに、必要以外のEEPROM19への書き込みが禁止され、また異常動作が検出されたときも、EEPROM19への書き込みが禁止される。
【0035】図10により、“SIEEP”のラベルで始まるEEPROM19からDTC30側にデータを読み込む場合のルーチンを説明する。S68では、通信ラインにBV検出部18や外部機器等、他のデータも存在するので、EEPROM19との通信を行なうために通信先変更モードをセットする。S69では、通信先をEEPROM19に変更させる。S70では、データ通信モードをセットし、S71では、EEPROMチップイネーブルを実行し、S72で、EEPROM読み出し開始通信(モードおよびアドレス)を実行する。S73では、下位バイトをバッファに入力し、S74で、上位バイトをバッファに入力し、S75で、EEPROMチップイネーブルをOFFする。
【0036】図11と図12により、“TEST”のラベルで始まるルーチンを説明する。S76では、初期設定としてDTC30からのパワーホールドの要求がないとしてPH要求フラグを設定する。S77では、テストスイッチを入力処理し、S78では、テスト要求があったか否かを判断し、要求されればS79に進み、そうでなければリターンする。S79では、DTCエラーが既に検出されていたか否かを判断する。このDTCエラーとは、例えば或るテストコードの次に必ず入力で来なければならない場合に、DTC30が出力したような場合に設定される。
【0037】S79においてDTCエラーと判断されればS85に飛び、そうでなければS80に進む。S80では、PFLAGに“1”を出力しておかないとDTC30側からPCTLを立ち下げることができないので、まずPFLAGに“1”を出力し、ついでS81において、PCTL入力処理を実行する。S82では、PCTLが“0”になったか否か、つまりDTC30側からの要求があるか否かを判断し、“0”のときはS83に進み、そうでなければRAMモニターを実行させるため、S85に進む。
【0038】S83では、現在、パワーダウンループにあるのかメインループにあるのかをみるために、VDDフラグがONされているか否かを判断する。この結果、パワーダウンループにあるとされた場合は、リターンした後自動的に電源がセットされるように、S84においてDTCパワーホールドフラグをセットし、S85〜S87においてRAMモニターしてリターンする。つまりS85では、サンプリング可否ビットを判断し、可であればS86に進み、モニターRAMアドレスを入力し、そのアドレスに対するボディのRAMデータをバッファにセットする。S87では、16ビットデータ出力処理を実行し、バッファのデータが下位8ビット(DI7〜0)に出力される。
【0039】既に電源がONされていると判断されれば、DTC涌信モードに切り替えて、PCTLを入力して、PCTLが“0(ロー)”になるまで待ち(S88〜S90)、ローになったらS91に進む。S91では、CTLOが“1”にされたか否かを判断し、“1”にされればS92に進み、そうでなければリターンする。S92では、テストスイッチ入力処理を実行し、S93では、テスト要求があるか否かを判断する。テスト要求があればS94に進み、そうでなければリターンする。
【0040】S94では、DTCコードの入力処理を実行し、DTCコードの下位が“FE”というテストコードだったらリターンで抜け、下位が“FF”というテストコードであれば“RESET”のラベルに抜ける(S94〜S96)。テストコードの下位が“FE”でも“FF”でもない場合は、さらに、登録コードを判断する。図13に示されるテストテーブルには、“SUBCHK”、“RAMDUMP”、“RAMSET”、“EEPDUMP”、“EEPSET”のコードが登録されている。これ以外のテストコードである場合には、“DTC ERR”のラベルで始まるルーチンに進む。このルーチンでは、S99で、PFLAGに“0”を出力し、S100に進んでDTC30エラーフラグをセットする。つまり、それ以後のハンドシェイクができないようにしてパワーダウンの“SW1CHK”ルーチンに抜ける。
【0041】S101では、テストコードはOKか否かを判断する。つまり、テストコードのときに出力されるデータは、例えば図21に示されるように、上位が“10”、下位が“00”〜“04”と設定されているが、この上位の“10”をチェックしている。OKであればS102に進んで、テストコードに対するサブルーチンアドレスをポインタにセットし、S103では、そのテストサブルーチンを実行する。S101で、テストコードがOKでなければ“DTC ERR”に進む。
【0042】図14に、“HANDOUT”、“HANDIN”のラベルで始まるルーチンを示す。これらのルーチンは、実際に16ビットのデータを入力、出力するときのサブルーチンである。まず“HAND OUT”のラベルで始まるルーチンでは、S104で、PCTLデータを入力し、S105に進んでPCTLが“0”か否かを判断し、“0”であればS106に進み、そうでなければS104に戻る。S106では、I/Oデータを入力し、S107では、入力したI/OデータによりDTC30が入力モードか否かを判断し、入力モードならばS108に進み、そうでなければ“IO ERR”のラベルで始まるルーチンに進む。S108では、16ビットデータの出力処理を実行し、S109では、PFLAGに“0”を出力し、S110では、PCTLを入力する。S111では、入力したPCTLデータによりPCTLが“1”になったか否かを判断し、“1”であればS112に進み、そうでなければS110に戻り、PCTL入力を繰り返す。S112では、PFLAGに“1”を出力してリターンする。
【0043】“HAND IN”のラベルで始まるルーチンでは、S113で、PCTLデータの入力処理を実行し、S114で入力したPCTLデータにより、PCTLが“0”であるか否かを判断し、“0”であればS115に進み、そうでなければS113に戻り、PCTL入力を繰り返す。S115では、入力したI/OデータによりDTCが出力モードか否かを判断し、出力モードならばS116に進み、そうでなければ“IO ERR”に飛ぶ。S116では、DTC30データの入力処理を実行し、S117では、エコーバック処理を実行して前述のS109に進む。
【0044】図15により、“TEST PCTL”のラベルで始まるルーチンを説明する。このルーチンは、PCTLが立ち下がったときにテスト要求があればメインループのS88に戻り、テスト要求がなければリターンして、従属データの処理を継続する。S118では、DTCシリアルモードを実行し、S119では、PCTLデータを入力し、S12では、PCTLが“0”になったか否かを判断する。“0”であればS121に進み、そうでなければS119に戻る。S121では、テスト要求が出されたか否かを判断し、テスト要求が出されればS122に進み、そうでなければリターンする。S122では、スタックの1レベルをカットして、リターンする。
【0045】図16により、“RAMDUMP”のラベルで始まるサブルーチンを説明する。このルーチンは、RAM14bに書き込まれたデータをすべて出力させるためのものであり、図21に示すDTC30からのテストコード“1”の出力により実行される。S123では、DTCデータを入力処理し、S124では、DTC30に出力するRAMのスタートアドレスをRAMアドレスポインタにセットし、S125では、DTCデータの上位データをクリアし、S126では、PCTL入力処理を実行する。S127では、入力したPCTLによりPCTLが“0”になったか否かを判断し、“0”ならばS128に進み、そうでなければS126に戻り、PCTL入力を繰り返す。S128では、次のテストコードが出力されたか否かを判断し、テストコードならばリターンし、そうでなければS129に進み、RAMダンプを継続する。S129では、RAMデータをバッファに準備し、S130では、“HANDOUT”をコールして、DTC30にRAMデータを出力し、S131では、RAMアドレスポインタ+1としてS126からの処理を繰り返す。
【0046】図17により、“EEPDUNP”のラベルで始まるサブルーチンを説明する。このルーチンは、EEPROM19に書き込まれたデータを出力させるためのものであり、図21に示すDTC30からのテストコード“3”の出力により実行される。S132では、DTCデータの入力処理を実行し、S133では、DTC30に出力するEEPROM19のスタートアドレスをEEPROMアドレスポインタにセットする。S134では、“SIEEP”のサブルーチンをコールして、EEPROMデータの入力処理を実行する。S135では、DTC通信モードを設定し、S136では、PCTL入力処理を実行し、S137では、入力したPCTLデータによりPCTLが“0”であるか否かを判断し、“0”であればS138に進み、そうでなければS136を繰り返す。S138では、次のテストコードの出力を判断し、テストコードならばリターンし、そうでなければS139に進む。S139では、“HANDOUT”をコールして、DTC30にEEPROMデータを出力し、S140では、“EEPROMアドレスポインタ+1”とし、S134に戻ってEEPROMダンプ判断を繰り返す。
【0047】図18により、“EEPSET”のラベルで始まるルーチンを説明する。このルーチンは、EEPROM19への書き込みを実行させるルーチンであり、図21に示すDTC30からのテストコード“4”の出力により実行される。S141では、DTCデーの入力処理を実行し、S142では、EEPROM書き込みモードに入った場合、最初にDTC30からのEEPROM書き込み開始アドレスを取り込んでRAM14bの中のEEPROMアドレスポインタにセットする。S143では、DTC通信モードを設定し、S144では、PCTLの入力処理を実行する。
【0048】S145では、入力したPCTLデータによりPCTLが“0”か否かを判断し、“0”ならばS146に進み、そうでなければS144に戻り、PCTL入力を繰り返す。S146では、次のテストコードの出力があったか否かを判断し、テストコードがあればリターンし、そうでなければS147に進む。S147では、“HANDIN”をコールして、DTCデータの入力処理を実行し、S148では、EEPROM書き込みバッファにデータを設定し、S177では、任意のアドレスに書き込むためのDTCライト(書き込み)フラグをセットする。S149では、“SOEEP”のラベルで始まるサブルーチンをコールして、EEPROM書き込み処理を実行する。S178では、DTCライト(書き込み)フラグをクリアし、S150で、“EEPROMアドレスポインタ+1”を実行して、S143に戻る。つまり、EEPROM書き込み処理を実行するときだけフラグが立つように処理する。そして普段、フィルム枚数をカウントしようとしているときは、DTC書き込みモードではないということが分かるように、必ずフラグをクリアする。そして実際に書き込むところで、DTCライトモードか否かを判断して、DTC書き込みモードでない場合はフィルムアドレス以外は書き込まない。
【0049】図19により、“RAM SET”のラベルで始まるルーチンを説明する。このルーチンは、RAM14bへの書き込みを実行させるルーチンであり、図21に示すDTC30からのテストコード“2”の出力により実行される。S151では、DTCデータの入力処理を実行し、S152では、DTC30から入力するRAMのスタートアドレスをRAMアドレスポインタにセットする。S153では、PCTL入力処理を実行し、S154では、入力したPCTLデータによりPCTLが“0”であるか否かを判断し、“0”であればS155に進み、そうでなければS153に戻り、PCTL入力を繰り返す。S155では、次のテストコードの出力を判断し、テストコードがあればリターンし、そうでなければS156に進む。S156では、DTCデータ入力処理を実行し、S157では、RAM14bの中のアドレスポインタによって指定されたRAMにDTCデータをセットし、S158では、“RAMアドレスポインタ+1”とし、S153に戻り、RAMセットを繰り返す。
【0050】図20により、“SUBCHK”のラベルで始まるルーチンを説明する。このルーチンは、カメラ33側に格納された多数のサブルーチンデータのうち、DTC30側から出されたサブルーチンアドレスに対応したサブルーチンを実行させるルーチンであり、図21に示すDTC30からのテストコード“0”の出力により実行される。S159では、サブルーチンアドレスをDTC30から入力してRAM14bに格納し、S160では、DTC30から入力されたコードをサブルーチンのアドレスとしてコール実行し、リターンする。
【0051】図21により、DTC30側の基本的なソフト“DTC SOFT”の制御ルーチンを説明する。このルーチンは、設定したテストコードに基づいて、カメラ33側に種々の動作を実行させたり、RAM14bへの書き込み、EEPROM19への書き込み等を行なうためのものである。まずS161では、配列のディメンション、データ等の初期設定を行ない、S162では、データの表示設定処理を実行し、S163では、テストコードの入力処理を実行する。S164では、この入力されたテストコードを判断し、テストコードが“0”の場合はS165に進み、“1”の場合はS166に進み、“2”の場合はS167に進み、“3”の場合はS168に進み、“4”の場合はS169に進む。
【0052】S165は、DTC30によるカメラ機能のチェックのため、カメラ33側にテストコードおよびサブルーチンアドレスを出し、カメラ33側において、予め設定されている複数のサブルーチンを実行させる場合である。ここで言うサブルーチンとは、通常ユーザーがカメラを操作した場合に動作するすべてのものであり、図4〜図10の中にも登場している。まず最初のテストコードをカメラ33側に出力するべく、テストコードの出力が可能な状熊を設定するため、CTL1=1、CTL0=0として(図2参照)、テストコード“1000H”を出力する。この後、CTL1=0、CTL1=1として従属データ通信の状態にする。そして、テストコード1000Hに対応する従属データとしては、チェックするベきカメラ機能に対応させたサブルーチンが格納されているアドレスを指定するサブルーチンアドレスであり、これが出力される。これに基づき、カメラの対応するサブルーチンが実行される。サブルーチン実行前にRAMにデータの設定が必要であれば、後述する1002Hのテストコードにより設定が可能であり、サブルーチン実行後にRAMにデータが設定される場合は、同様に後述の1001HのRAMダンプによりDTC30に入力可能である。したがって、他のサブルーチンアドレスの実行と組み合わせることにより、種々のチェック調整を容易に行なうことができる。これによれば、通常、カメラを動作させるためのソフトをサブルーチン化させて格納し、チェック調整時に必要なサブルーチンのアドレスを出力して実行させるだけで簡単かつ確実にチェック調整を行なうことができるから、従来のように、チェック調整のために作成した特別のソフトをカメラ側に搭載しなくても良く、ROMのメモリ容量を大幅に節約させることができる。
【0053】ここで、DTC30側から任意のサブルーチンを実行させて、レンズ通信データの信頼性のチェックを短時間で実現させる場合の実例を示す。通常、カメラがレンズと通信するタイミングは、200mSに1回程度であるので、この通信をDTC30から実行させることにより連続通信が可能となり、テスト時間を1/20程度に短縮させることができる。以下にそのテストリストを示す。
【0054】またS166は、コマンドによってRAM14b内のデータを全てDTC30側に取り込む場合である。まずテストコード“1001H”をカメラ33側に出力し、スタートアドレス(=RAMの0番地)を出力する。続けてデータ入力を連続して実行することにより、RAM14bから、このRAM14b内の全てのデータをDTC30側に取り込むことができる。S167は、コマンドによってRAM14bにデータを書き込む場合である。まずテストコード“1002H”をカメラ33側に出力し、スタートアドレスを出力する。続けて、スタートアドレスのデータから順番に設定したいRAMデータを出力することにより、RAM14bにデータを書き込むことができる。S168は、コマンドによってEEPROM19内のデータを全てDTC30側に取り込む場合である。まずテストコード“1003H”をカメラ33側に出力し、スタートアドレス(=EEPROM19の0番地)を出力する。続けて、データ入力を連続して実行することにより、EEPROM19から、このEEPROM19内の全てのデータをDTC30側に取り込むことができる。S169は、コマンドによってEEPROM19にデータを書き込む場合である。まずテストコード“1004H”をカメラ33側に出力し、スタートアドレスを出力する。続けて、スタートアドレスのデータから順番に設定したいEEPROMデータを出力することにより、EEPROM19にデータを書き込むことができる。
【0055】図22に“SIOSUB”のラべルで始まる制御ルーチンを示す。S170では、アドレス通信モードをセットし、S171では、アドレスの出力処理を実行し、S172では、データ通信モードをセットし、S173では、データの入出力処理を実行する。
【0056】図23に“NOTSEL”のラベルで始まるルーチンを示す。S174では、アドレス通信モードをセットし、S175では、NOTSELアドレスの出力処理を実行し、S176では、データ通信モードをセットする。
【0057】
【発明の効果】以上説明したように、本発明によれば、通常のカメラ動作を実行させるソフトをサブルーチン化させて、カメラ機能のチェック調整用のソフトとして兼用できるようにしたから、カメラ側のチェック調整専用のソフトが最小限で済み、カメラ側のROMを圧縮させ、その分カメラとして使用できるROM領域を増やすことができる。これにより、製品ソフトの質を向上させることができるとともに、ソフトの開発量を減少させて、より早く製品化させることができる。
【図面の簡単な説明】
【図1A】本実施例の制御ブロックを概略的に示す図である。
【図1B】DTCとインターフェースを概略的に示す図である。
【図2】DTC側とカメラ側との通信時のタイムシーケンスである。
【図3A】DTC、インターフェースおよびカメラの接続状況を示すブロック図である。
【図3B】同実施例のDTC、インターフエースおよびカメラ間で入出される信号のタイミングを示すタイムシーケンスである。
【図4、図5】同実施例の“RESET”のラベルで始まるルーチンを示すフローチャートである。
【図6、図7】同実施例の“RESTART”のラベルで始まるルーチンを示すフローチャートである。
【図8、図9】同実施例の“FILMCUP”のラベルで始まるルーチンを示すフローチャートである。
【図10】同実施例の“SIEEP”のラベルで始まるルーチンを示すフローチャートである。
【図11、図12】同実施例の“TEST”のラベルで始まるルーチンを示すフローチャートである。
【図13】同実施例の“テストコード”を示す図である。
【図14】同実施例の“HANDOUT”、“HANDIN”のラベルで始まるルーチンを示すフローチャートである。
【図15】同実施例の“TESTPCTL”のラベルで始まるルーチンを示すフローチャートである。
【図16】同実施例の“RAMDUMP”のラベルで始まるルーチンを示すフローチャートである。
【図17】同実施例の“EEPDUMP”のラベルで始まるルーチンを示すフローチャートである。
【図18】同実施例の“EEPSET”のラベルで始まるルーチンを示すフローチヤートである。
【図19】同実施例の“RAMSET”のラベルで始まるルーチンを示すフローチャートである。
【図20】同実施例の“SUBCHK”のラベルで始まるルーチンを示すフローチャートである。
【図21】同実施例の“DTCSOFT”のラベルで始まるルーチンを示す計算機のフローチャートである。
【図22】同実施例の“SIOSUB”のラベルで始まるルーチンを示すフローチヤートである。
【図23】同実施例の“NOTSEL”のラベルで始まるルーチンを示すフローチヤートである。
【符号の説明】
11 中央処理回路
12 A/D変換器内部
13 インターバルタイマ
14b RAM
15 発信器
16 レギュレータ
17 DC/DCコンバータ
18 BV検出部
19 EEPROM
20 データ操作部
21 バッテリ
26 LCD表示器
27 レンズ情報入力部
28 パトローネ情報入力部
29 スイッチ情報入力部
30 DTC(計算機)
31 インターフェース
32 シーケンス制御部
34 データ切替ブロック
35 パラレル/シリアル変換ブロック
36 ラッチパルス発生ブロック
37 上位8bitラッチブロック
38 シリアル/パラレル変換ブロック
39 下位8bitラッチブロック
40 PFLAG信号ラッチブロック
A 通信ライン
B 通信ライン
C 端子群
D 通信端子群
【特許請求の範囲】
【請求項1】 カメラのメイン処理を行なう中央処理回路、およびこの中央処理回路に接続された周辺回路を有するカメラと;上記中央処理回路との接続が可能で、この中央処理回路を介してカメラ機能のチェック調整を行なうコマンドを有する計算機と;を有し、上記中央処理回路に備えられた、上記カメラの機能のチェック調整を行なうコマンドにおいて、中央処理回路と周辺回路を動作させるサブルーチンソフト等の任意のサブルーチンを上記計算機からアドレス指定して実行させる機能を有することを特徴とするカメラのチェックシステム。
【請求項1】 カメラのメイン処理を行なう中央処理回路、およびこの中央処理回路に接続された周辺回路を有するカメラと;上記中央処理回路との接続が可能で、この中央処理回路を介してカメラ機能のチェック調整を行なうコマンドを有する計算機と;を有し、上記中央処理回路に備えられた、上記カメラの機能のチェック調整を行なうコマンドにおいて、中央処理回路と周辺回路を動作させるサブルーチンソフト等の任意のサブルーチンを上記計算機からアドレス指定して実行させる機能を有することを特徴とするカメラのチェックシステム。
【図1A】
【図1B】
【図2】
【図3B】
【図13】
【図3A】
【図4】
【図9】
【図5】
【図10】
【図20】
【図6】
【図7】
【図15】
【図22】
【図8】
【図11】
【図12】
【図14】
【図16】
【図23】
【図17】
【図18】
【図19】
【図21】
【図1B】
【図2】
【図3B】
【図13】
【図3A】
【図4】
【図9】
【図5】
【図10】
【図20】
【図6】
【図7】
【図15】
【図22】
【図8】
【図11】
【図12】
【図14】
【図16】
【図23】
【図17】
【図18】
【図19】
【図21】
【公開番号】特開平7−5601
【公開日】平成7年(1995)1月10日
【国際特許分類】
【出願番号】特願平3−218124
【出願日】平成3年(1991)5月21日
【出願人】(000000527)旭光学工業株式会社 (1,878)
【公開日】平成7年(1995)1月10日
【国際特許分類】
【出願日】平成3年(1991)5月21日
【出願人】(000000527)旭光学工業株式会社 (1,878)
[ Back to top ]