(第1実施形態)
以下、本発明の第1実施形態について、図1〜図32を参照して説明する。
図1は、本発明の第1実施形態の遊技機1の説明図である。
遊技機1の前面枠(遊技枠)3は本体枠(外枠)2にヒンジ4を介して、遊技機1の前面に開閉回動可能に組み付けられる。前面枠3の表側には、遊技盤10(図2参照)が収装される。また、前面枠3には、遊技盤10の前面を覆うカバーガラス(透明部材)を備えたガラス枠18が取り付けられている。
ガラス枠18のカバーガラスの周囲には、装飾光が発光される装飾部材9が備えられている。この装飾部材9の内部にはランプやLED等からなる装飾装置620(図3参照)が備えられている。この装飾装置620を所定の発光態様によって発光することによって、装飾部材9が所定の発光態様によって発光する。
ガラス枠18の左右には、音響(例えば、効果音)を発するスピーカ30が備えられている。また、ガラス枠18の上方には照明ユニット11が備えられている。照明ユニット11の内部には、前述した装飾装置620が備えられている。
照明ユニット11の右側には、遊技機1において異常が発生したことを報知するための異常報知LED29が備えられている。
前面枠3の下部の開閉パネル20には図示しない打球発射装置に遊技球を供給する上皿21が、固定パネル22には灰皿15、下皿23及び打球発射装置の操作部24等が備えられる。下皿23には、下皿23に貯まった遊技球を排出するための下皿球抜き機構16が備えられる。前面枠3下部右側には、ガラス枠18を施錠するための鍵25が備えられている。
また、遊技者が操作部24を回動操作することによって、打球発射装置は、上皿21から供給される遊技球を発射する。
また、上皿21の上縁部には、遊技者からの操作入力を受け付けるための演出ボタン17が備えられている。
遊技者が演出ボタン17を操作することによって、遊技盤10に設けられた表示装置53(図2参照)における特図変動表示ゲームの演出内容を選択して、表示装置53における特図変動表示ゲームに、遊技者の操作を介入させた演出を行うことができる。
なお、特図変動表示ゲームは、発射された遊技球が遊技盤10に備わる第1始動入賞口45(図2参照)又は普通変動入賞装置36(図2参照)の第2始動入賞口に入賞した場合に開始される。特図変動表示ゲームでは、表示装置53において複数の識別情報が変動表示する。そして、変動表示していた識別情報が停止し、停止した識別情報の結果態様が特定の結果態様である場合に、遊技機1の状態が遊技者に有利な状態(特典が付与される状態)である特別遊技状態に遷移する。
上皿21の右上部には、遊技者が遊技球を借りる場合に操作する球貸ボタン26、及び、図示しないカードユニットからプリペイドカードを排出させるために操作される排出ボタン27が設けられている。これらのボタン26、27の間には、プリペイドカードの残高を表示する残高表示部28が設けられる。
図2は、本発明の第1実施形態の遊技盤10の正面図である。
図1に示す遊技機1は、内部の遊技領域10a内に遊技球を発射して(弾球して)遊技を行うもので、ガラス枠18のカバーガラスの奥側には、遊技領域10aを構成する遊技盤10が設置されている。
遊技盤10は、各種部材の取付ベースとなる平板状の遊技盤本体10b(木製又は合成樹脂製)を備え、該遊技盤本体10bの前面にガイドレール32で囲まれた遊技領域10aを有している。また、遊技盤本体10bの前面であってガイドレール32の外側には、前面構成部材33、33、…が取り付けられている。そして、このガイドレール32で囲まれた遊技領域10a内に発射装置から遊技球(打球;遊技媒体)を発射して遊技を行うようになっている。
遊技領域10aの略中央には、特図変動表示ゲームの表示領域となる窓部52を形成するセンターケース51が取り付けられている。このセンターケース51に形成された窓部52の後方には、複数の識別情報を変動表示する特図変動表示ゲームの演出を実行可能な演出表示装置としての表示装置53が配されるようになっている。この表示装置53は、例えば、液晶ディスプレイを備え、表示内容が変化可能な表示部53aがセンターケース51の窓部52を介して遊技盤10の前面側から視認可能となるように配されている。なお、表示装置53は、液晶ディスプレイを備えるものに限らず、EL、CRT等のディスプレイを備えるものであってもよい。
センターケース51の窓部52の上端付近には、遊技状態に基づいて動作可能な可動役物60が取り付けられる。
また、遊技盤10には、普図始動ゲート34と、普図変動表示ゲームの未処理回数を表示する普図記憶表示器47、普図変動表示ゲームを表示する普図表示器35が設けられている。また、遊技領域10a内には、第1の始動入賞領域をなす第1始動入賞口45と、第2の始動入賞領域をなす第2始動入賞口を有する普通変動入賞装置36と、が設けられている。そして、遊技球が第1始動入賞口45に入賞した場合は、補助遊技として第1特図変動表示ゲームが実行され、遊技球が普通変動入賞装置36に入賞した場合は、補助遊技として第2特図変動表示ゲームが実行されるようになっている。
また、遊技盤10には、第1特図変動表示ゲームを表示する第1特図表示器38と、第2特図変動表示ゲームを表示する第2特図表示器39と、が設けられている。また、第1特図変動表示ゲームの未処理回数(第1特図始動記憶)を表示する第1特図記憶表示器48と、第2特図変動表示ゲームの未処理回数(第2特図始動記憶)を表示する第2特図記憶表示器49が設けられている。なお、普図記憶表示器47、普図表示器35、第1特図表示器38、第2特図表示器39、第1特図記憶表示器48、第2特図記憶表示器49は、遊技状態を表す遊技状態表示LED(図示略)と併せて、セグメントLEDとして一体に設けられている。
さらに遊技領域10aには、上端側が手前側に倒れる方向に回動して開放可能になっているアタッカ形式の開閉扉42aを有し、第1特図変動表示ゲーム、第2特図変動表示ゲームの結果如何によって大入賞口を閉じた状態(遊技者にとって不利な状態)から開放状態(遊技者にとって有利な状態)に変換する特別変動入賞装置42、入賞口などに入賞しなかった遊技球を回収するアウト穴43が設けられている。この他、遊技領域10aには、一般入賞口44、44、…、打球方向変換部材としての風車46、多数の障害釘(図示略)などが配設されている。
普図始動ゲート34内には、該普図始動ゲート34を通過した遊技球を検出するためのゲートSW34a(図3参照)が設けられている。そして、遊技領域10a内に打ち込まれた遊技球が普図始動ゲート34内を通過すると、普図変動表示ゲームが行われる。
また、普図変動表示ゲームを開始できない状態中に、普図始動ゲート34を遊技球が通過すると、普図始動記憶数が上限数未満であるならば、普図始動記憶数が1加算されて、当該普図変動表示ゲームが当りとなるか否かを示す乱数が普図始動記憶として一つ記憶される。
普図変動表示ゲームが開始できない状態とは、例えば、普図変動表示ゲームが既に行われ、その普図変動表示ゲームが終了していない状態や、普図変動表示ゲームが当って普通変動入賞装置36が開状態に変換されている状態のことをいう。
なお、普図変動表示ゲームの始動記憶数は、LEDを備える普図記憶表示器47にて表示される。
普図変動表示ゲームは、遊技盤10に設けられた普図表示器35で実行されるようになっている。なお、表示装置53の表示領域の一部で普図変動表示ゲームを表示するようにしてもよく、この場合は識別図柄として、例えば、数字、記号、キャラクタ図柄などを用い、この識別図柄を所定時間変動表示させた後、停止表示させることにより行うようにする。
この普図変動表示ゲームの停止表示が特別の結果態様となれば、普図変動表示ゲームが当りとなって、普通変動入賞装置36の開閉部材36a、36aが所定時間(例えば、0.5秒間)開放される。これにより、普通変動入賞装置36に遊技球が入賞しやすくなり、第2特図変動表示ゲームの始動が容易となる。
普通変動入賞装置36は左右一対の開閉部材36a、36aを具備し、第1始動入賞口45の下部に配設される。この開閉部材36a、36aは、常時は遊技球の直径程度の間隔をおいて閉じた状態(遊技者にとって不利な状態)を保持しているが、普図変動表示ゲームの結果が所定の停止表示態様となった場合(普図変動表示ゲームが当りとなった場合)には、駆動装置としてのソレノイド(普電SOL36b、図3参照)によって、逆「ハ」の字状に開いて普通変動入賞装置36に遊技球が流入し易い状態(遊技者にとって有利な状態)に変化させられるようになっている。
また、本実施形態の遊技機1は、特図変動表示ゲームの結果態様に基づき、遊技状態として、表示装置53における特図変動表示ゲームの変動表示時間を短縮する時短動作状態(第2動作状態)を発生可能となっている。この時短動作状態(第2動作状態)は、普通変動入賞装置36の動作状態が、通常動作状態(第1動作状態)に比べて開放状態となりやすい状態である。
この時短動作状態においては、上述の普図変動表示ゲームの実行時間が、通常動作状態における長い実行時間よりも短くなるように制御され(例えば、10秒が1秒)、これにより、単位時間当りの普通変動入賞装置36の開放回数が実質的に多くなるように制御される。また、時短動作状態においては、普図変動表示ゲームが当り結果となって普通変動入賞装置36が開放される場合に、開放時間が通常動作状態の短い開放時間より長くされるように制御される(例えば、0.3秒が1.8秒)。また、時短動作状態においては、普図変動表示ゲームの1回の当り結果に対して、普通変動入賞装置36が1回ではなく、複数回(例えば、2回)開放される。さらに、時短動作状態においては普図変動表示ゲームの当り結果となる確率が通常動作状態より高くなるように制御される。すなわち、通常動作状態よりも普通変動入賞装置36の開放回数が増加され、普通変動入賞装置36に遊技球が入賞しやすくなり、第2特図変動表示ゲームの始動が容易となる。
第1始動入賞口45の内部には第1始動口SW45a(図3参照)が備えられ、この第1始動口SW45aによって遊技球を検出することに基づき、補助遊技としての第1特図変動表示ゲームを開始する始動権利が発生するようになっている。また、普通変動入賞装置36の内部には第2始動口SW36d(図3参照)が備えられ、この第2始動口SW36dによって遊技球を検出することに基づき、補助遊技としての第2特図変動表示ゲームを開始する始動権利が発生するようになっている。
この第1特図変動表示ゲームを開始する始動権利は、所定の上限数(例えば4)の範囲内で第1始動記憶(特図1始動記憶)として記憶される。そして、この第1始動記憶数は、第1特図記憶表示器48に表示される。また、第2特図変動表示ゲームを開始する始動権利は、所定の上限数(例えば4)の範囲内で第2始動記憶(特図2始動記憶)として記憶される。そして、この第2始動記憶数は、第2特図記憶表示器49にて表示される。
そして、第1特図変動表示ゲームが開始可能な状態(第1始動記憶数及び第2始動記憶数が0の状態)で、第1始動入賞口45に遊技球が入賞すると、始動権利の発生に伴って抽出された乱数が第1始動記憶として記憶されて、第1始動記憶数が1加算されるととともに、直ちに第1始動記憶に基づいて、第1特図変動表示ゲームが開始され、この際に第1始動記憶数が1減算される。
また、第2特図変動表示ゲームは第1特図変動表示ゲームよりも優先して実行されるため、第1始動記憶数が0でなくても、第2始動記憶数が0であれば、第2始動入賞口をなす普通変動入賞装置36に遊技球が入賞すると、始動権利の発生に伴って抽出された乱数が第2始動記憶として記憶されて、第2始動記憶数が1加算されるととともに、実行中の第1特図変動表示ゲームが終了後直ちに第2始動記憶に基づいて、第2特図変動表示ゲームが開始され、この際に第2始動記憶数が1減算される。
一方、第1特図変動表示ゲーム又は第2特図変動表示ゲームが直ちに開始できない状態、例えば、既に第1特図変動表示ゲーム又は第2特図変動表示ゲームが行われ、その特図変動表示ゲームが終了していない状態や、特別遊技状態となっている場合に、第1始動入賞口45に遊技球が入賞すると、第1始動記憶数が上限数未満(例えば、4個未満)ならば、第1始動記憶数が1加算されて、第1始動入賞口45に遊技球が入賞したタイミングで抽出された乱数が第1始動記憶として一つ記憶される。
同様に、この場合に第2始動入賞口をなす普通変動入賞装置36に遊技球が入賞すると、第2始動記憶数が上限数未満(例えば、4個未満)ならば、第2始動記憶数が1加算されて、第2始動入賞口に遊技球が入賞したタイミングで抽出された乱数が第2始動記憶として一つ記憶される。
そして、第1特図変動表示ゲーム又は第2特図変動表示ゲームが開始可能な状態となると、第1始動記憶又は第2始動記憶に基づき第1特図変動表示ゲーム又は第2特図変動表示ゲームが開始される。このとき、第1特図変動表示ゲームと第2特図変動表示ゲームは同時に実行されることはなく、第2特図変動表示ゲームが第1特図変動表示ゲームよりも優先して実行されるようになっている。
すなわち、第1始動記憶と第2始動記憶がある場合には、第2特図変動表示ゲームが実行される。
補助遊技としての第1特図変動表示ゲーム、第2特図変動表示ゲームは、遊技盤10に設けられた第1特図表示器38、第2特図表示器39で実行されるようになっており、複数の識別情報を変動表示したのち、所定の結果態様を停止表示することで行われる。また、表示装置53にて各特図変動表示ゲームに対応して複数種類の識別情報(例えば、数字、記号、キャラクタ図柄など)を変動表示させる特図変動表示ゲームが実行される。そして、この特図変動表示ゲームの結果として、第1特図表示器38又は第2特図表示器39の表示態様が特別結果態様となった場合には、大当たりとなって特別遊技状態(いわゆる、大当たり状態)となる。また、これに対応して表示装置53の表示態様も特別結果態様(例えば、「7,7,7」等のゾロ目数字の何れか)となる。なお、遊技機に第1特図表示器38、第2特図表示器39を備えずに、表示装置53のみで特図変動表示ゲームを実行するようにしてもよい。
また、本実施形態の遊技機1は、特図変動表示ゲームの結果態様に基づき、遊技状態として確変状態(第2確率状態)を発生可能となっている。この確変状態(第2確率状態)は、特図変動表示ゲームでの当り結果となる確率が、通常確率状態(第1確率状態)に比べて高い状態である。なお、第1特図変動表示ゲームと第2特図変動表示ゲームのどちらの特図変動表示ゲームの結果態様に基づき確変状態となっても、第1特図変動表示ゲーム及び第2特図変動表示ゲームの両方が確変状態となる。また、確変状態と上述した時短動作状態はそれぞれ独立して発生可能であり、両方を同時に発生することも可能であるし、一方のみを発生させることも可能である。
図3は、本発明の第1実施形態の遊技機1の構成を示すブロック図である。
遊技機1は、遊技を統括的に制御する遊技制御装置500、各種演出を行うために表示装置53及びスピーカ30等を制御する演出制御装置550、遊技球を払い出すために図示しない払出モータを制御する払出制御装置580を備える。
まず、遊技制御装置500について説明する。図4では、演出制御装置550について説明する。
遊技制御装置500は、遊技用マイコン501、入力I/F(Interface)505、出力I/F(Interface)506、及び外部通信端子507を備える。
遊技用マイコン501は、CPU502、ROM(Read Only Memory)503及びRAM(Random Access Memory)504を備える。
CPU502は、遊技を統括的に制御する主制御装置であって、遊技制御を司る。ROM503は、遊技制御のための不変の情報(プログラム、データ等)を記憶している。RAM504は、遊技制御時にワークエリアとして利用される。
外部通信端子507は、遊技制御装置500の設定情報等を検査する検査装置等の外部機器に遊技制御装置500を接続する。
CPU502は、入力I/F505を介して各種入力装置(第1始動口SW45a、第2始動口SW36d、一般入賞口SW44a、ゲートSW34a、カウントSW42d、ガラス枠開放SW18a、前面枠開放SW3a、球切れSW54、振動センサ55、及び磁気センサ56)からの検出信号を受けて、大当り抽選等、種々の処理を行う。
第1始動口SW45aは、第1始動入賞口45に遊技球が入賞したことを検出するスイッチである。第2始動口SW36dは、普通変動入賞装置36の第2始動入賞口に遊技球が入賞したことを検出するスイッチである。
一般入賞口SWa44a〜44nは、一般入賞口44に遊技球が入賞したことを検出するスイッチである。ゲートSW34aは、普図始動ゲート34を遊技球が通過したことを検出するスイッチである。
カウントSW42dは、特別変動入賞装置42の大入賞口に遊技球が入賞したことを検出するスイッチである。
ガラス枠開放SW18aは、ガラス枠18が開放されたことを検出するスイッチである。前面枠開放SW3aは、前面枠3が開放されたことを検出するスイッチである。
球切れSW54は、遊技機1の内部に貯留され、払い出しに用いられる遊技球の数が所定数以下になったことを検出するスイッチである。
振動センサ55は、遊技機1に与えられた振動を検出するセンサであり、遊技機1に振動を与えて、不当に遊技球を獲得する不正を検出する。磁気センサ56は、第1始動入賞口45、普通変動入賞装置36の第2始動入賞口、一般入賞口44、特別変動入賞装置42の大入賞口、及び普図始動ゲート34付近に設けられ、磁力を検出するセンサである。磁気センサ93は、各入賞口付近に磁石を近づけて、遊技領域10aに発射された遊技球を各入賞口に導く不正を検出する。
また、CPU502は、出力I/F506を介して、第1特図表示器38、第1特図記憶表示器48、第2特図表示器39、第2特図記憶表示器49、普図表示器35、普電SOL36b、大入賞口SOL42b、払出制御装置580、及び演出制御装置550に指令信号を送信して、遊技を統括的に制御する。
第1特図表示器38には、第1始動入賞口45に遊技球が入賞した場合に補助遊技として実行される第1特図変動表示ゲームが表示される。第1特図記憶表示器48には、所定の上限数の範囲内で記憶される第1特図変動表示ゲームを開始する始動権利である第1始動記憶数が表示される。
第2特図表示器39には、普通変動入賞装置36の大入賞口に遊技球が入賞した場合に補助遊技として実行される第2特図変動表示ゲームが表示される。第2特図記憶表示器49には、所定の上限数の範囲内で記憶される第2特図変動表示ゲームを開始する始動権利である第2始動記憶数が表示される。
普図表示器35には、遊技球が普図始動ゲート34を通過した場合に行われる普図変動表示ゲームが表示される。
普電SOL36bは、普図表示器35で実行される普図変動表示ゲームの停止表示が特別の結果態様となった場合に、開閉部材36a、36aを開放し、普通変動入賞装置36の第2始動入賞口を遊技球が入賞しやすい状態にする。
大入賞口SOL42bは、第1特図変動表示ゲーム又は第2特図変動表示ゲームの結果が特別の結果態様となり、特別遊技状態となった場合に、特別変動入賞装置42の開閉扉42aを開放して、大入賞口を遊技球が入賞しやすい状態に変換する。
また、遊技制御装置500は、遊技機データを、外部情報端子508を介して、図示しない情報収集端末装置を介して、図示しない遊技場管理装置に出力する。遊技場管理装置は、遊技場に設置された遊技機1の遊技データを収集管理する計算機である。
また、払出制御装置580は、遊技球が一般入賞口44又は大入賞口に入賞した場合に、入賞した入賞口に対応する数の遊技球の払い出し、又は球貸ボタン26が操作された場合に、所定数の遊技球の払い出しを行う払出指令を遊技制御装置500から受信した場合に、受信した払出指令に基づいて、図示しない払出モータを制御する。なお、払出指令には、払い出す遊技球の数が含まれる。
遊技制御装置500は、変動開始コマンド、客待ちデモコマンド、ファンファーレコマンド、確率情報コマンド、及びエラー指定コマンド等を、遊技の状況を示す遊技データとして、出力I/F506を介して、演出制御装置550へ送信する。
図4は、本発明の第1の実施形態の演出制御装置550の構成を示すブロック図である。
演出制御装置550は、遊技制御装置500から入力される遊技データ(表示制御指令)に基づいて、演出内容を決定して、表示装置53、及びスピーカ30を制御するとともに、装飾制御装置610を介して装飾装置620、役物駆動SOL560(ソレノイド)、及び役物駆動MOT(モータ)561を制御する。詳細は後述するが、これら装飾装置620、役物駆動SOL560、及び役物駆動MOT561(総称して演出装置という)によって、遊技の演出が行われる。また、演出制御装置550は、演出ボタン17から当該演出ボタン17が操作されたことを示す信号が入力される。
演出制御装置550は、CPU551、制御ROM552、RAM553、画像ROM554、音ROM555、VDP556、音LSI557、入出力I/F558、電源投入検出回路559、マスタIC570、及びNORゲート回路590を備える。
CPU551は、遊技制御装置500に接続され、遊技制御装置500から指令信号が割込信号(INT)として入力され、入力された指令信号に基づいて、各種演出を制御する主制御装置である。また、CPU551には、マスタIC570の後述するコントローラから割込信号が入力されるとともに、VDP556から割込信号が入力される。
なお、CPU551に割込信号が入力されると、CPU551は、現在実行中の処理を中断して、入力された割込信号に対応する処理を実行する。
制御ROM552には、演出制御のための不変の情報(プログラム、データ等)が格納されている。RAM553は、演出制御時にワークエリアとして利用される。
画像ROM554には、表示装置53に表示される画像データが格納され、画像ROM554はVDP556に接続されている。音ROM555には、スピーカ30から出力される音データが格納され、音ROM555は音LSI557に接続されている。
VDP556は、表示装置53への画像出力を制御するプロセッサである。音LSI557は、スピーカ30からの音声出力を制御する回路である。
なお、VDP556は、表示装置53に表示される画像を更新する周期(33ms周期)と同期する同期信号を発生させる同期信号発生手段を備える。同期信号発生手段は、同期信号を発生させるごとに、発生させた同期信号をCPU551に割込信号として入力する。
入出力I/F558は、演出ボタン17、モータ位置検出センサ510、及びNORゲート回路590に接続されるインタフェースであり、演出ボタン17からの操作信号、及びモータ位置検出センサ510からのモータ位置検出信号をCPU551へ伝達するとともに、CPU551からのリセット信号をNORゲート回路590へ伝達する。
なお、演出ボタン17は、上皿21の上縁部に設けられ、表示装置53で実行される第1特図変動表示ゲーム又は第2特図変動表示ゲームにおける演出で、遊技者によって操作される。
また、モータ位置検出センサ510は、役物駆動MOT561の回転軸が初期位置まで回転したことを検出した場合に、モータ位置検出信号を出力するセンサである。
なお、NORゲート回路590は、マスタIC570のコントローラに備わるRESET端子、及び初期化を必要とする他の回路に接続される。初期化を必要とする他の回路とは、例えば、VDP556や音LSI557などである。これらは、演出制御装置550に電源が投入されて起動したときに、CPU551により初期化されるものである。
CPU551、VDP556、RAM553、制御ROM552、音LSI557、及び入出力I/F558はバス563を介してそれぞれ接続されている。
電源投入検出回路559は、演出制御装置550に電源が投入された場合に、マスタIC570の図示しないレジスタをデフォルト状態(すべて0)に初期化するリセット信号を発生させ、発生させたリセット信号をNORゲート回路590へ出力する。
また、CPU551は、所定の条件が成立した場合に、リセット信号をバス563を介して入出力I/F558に出力し、入出力I/F558は入力されたリセット信号をNORゲート回路590へ出力する。
なお、電源投入検出回路559からNORゲート回路590へ入力されるリセット信号、及びCPU551から入出力I/F558を介してNORゲート回路590へ入力されるリセット信号は、いずれの場合にもロウレベルの状態である場合にリセットを指令する信号として機能する。そのため、電源投入検出回路559及びCPU551の少なくとも一方からNORゲート回路590にリセット信号が出力されていれば、NORゲート回路590を介してリセット信号がマスタIC570に入力される。
上述したように、NORゲート回路590は、マスタIC570及び初期化を必要とする他の回路に接続されるため、NORゲート回路590にリセットが入力されると、マスタIC570及び当該NORゲート回路590に接続される初期化を必要とする他の回路が初期化される。
なお、初期化を必要とする他の回路がない場合には、NORゲート回路590は、マスタIC570にのみ接続される。
次に、マスタIC570について説明する。
マスタIC570は、制御対象となる演出装置の装飾制御装置610のアドレスを指定して、指定したアドレスの装飾制御装置610に演出装置の制御内容を出力する。
マスタIC570は、接続線Vcc、接続線Vact、接続線SDA、接続線SCL、及び接続線GND(図5参照)の5本の接続線を介して、中継基板(装飾制御装置)600に接続される。
接続線Vccは、中継基板600及び装飾制御装置610に、ロジック用の電源を供給するための接続線である。接続線Vactは、演出装置を駆動させるための電源(例えば、LEDを発光させるための電源)を供給するための接続線である。接続線SDAは、演出制御装置550と装飾制御装置610との間でデータを通信するための接続線であり、本実施形態におけるデータ線として機能する。接続線SCLは、接続線SDAでのデータ通信に用いられるクロック信号を入出力するための接続線であり、本実施形態におけるタイミング信号線として機能する。図5に示す接続線GNDは、接続線Vcc及び接続線Vactで供給される電源のグランドである。
中継基板600と装飾制御装置610との間は、マスタIC570と中継基板600との間と同じく、接続線Vcc、接続線Vact、接続線SDA、接続線SCL、及び接続線GNDを介して接続される。
マスタIC570と装飾制御装置610とは、接続線SDA及び接続SCLによって2ライン双方向通信を行う。
マスタIC570は、中継基板600及び装飾制御装置610にデータを送信する場合には、まず、接続線SCLの信号レベルをHIGHに維持したまま、接続線SDAの信号レベルをHIGHからLOWに変化させることにより、装飾制御装置610へのデータ出力を開始するためのスタート条件を成立させる(装飾制御装置610に対してスタートコンディションを発行する)。
この後、マスタIC570は、接続線SCLの信号レベルをLOWに変更し、接続線SCLの信号レベルがLOWである間に接続線SDAの信号レベルを送信データの最初のビットのレベルに設定し、所定時間後に接続線SCLの信号レベルをLOWからHIGHに変化させる。接続線SCLの信号レベルがHIGHに変化すると、装飾制御装置610は接続線SDAの信号レベルを取り込んで、送信データの最初のビットとして認識する。次いで、マスタIC570は、接続線SCLの信号レベルをHIGHからLOWに戻す。
この手順を1回実行すると、マスタIC570から装飾制御装置610へ1ビットのデータが送信され、最終的にはこの手順が8回繰り返されることで、送信データの単位ビットである8ビット全てがマスタIC570から装飾制御装置610へ送信される(1バイト分のデータが送信される)。
そして、マスタIC570は、最後の8ビット目のデータを送信し終えて、接続線SCLの信号レベルをHIGHからLOWに戻した際に、接続線SDAを解放して装飾制御装置610からの返答信号を受信することを待機する受信待機状態にする。
受信待機状態になると、装飾制御装置610は、接続線SDAを介して1ビットの返答信号(後述するACK又はNACK)をマスタIC570に返す。次いで、マスタIC570は、接続線SCLの信号レベルをLOWからHIGHに変化させて返答信号のレベルを取り込み、所定時間後に接続線SCLの信号レベルをHIGHからLOWに変化させると、装飾制御装置610は接続線SDAを解放する。
マスタIC570は、このような1バイト分のデータ送信と1ビット分の返答信号の受信とを交互に繰り返し、装飾制御装置610へ出力すべきデータがすべて出力されるまで継続する。マスタIC570は、出力すべきデータの出力が終了した場合には、接続線SCLの信号レベルをHIGHに維持したまま、接続線SDAの信号レベルをLOWからHIGHに変更させることにより、装飾制御装置610へのデータ出力を終了するためのストップ条件を成立させる(装飾制御装置610に対してストップコンディションを発行する)。
入力用BUF571は、装飾制御装置610から接続線SDAを介して入力されたデータが一時的に記憶される記憶装置である。
具体的には、マスタIC570が入力モードに設定された場合において、装飾制御装置610からマスタIC570に送信されたデータが、フィルタ575Aによりノイズが除去されて入力用BUF571に一時的に記憶される。
出力用BUF572は、装飾制御装置610に接続線SDAを介して出力するデータが一時的に記憶される。
リセットREG573は、本実施形態の初期化指示データ記憶領域として機能するもので、バス563に接続され、CPU551からの指令を受けてリセット信号をコントローラに出力する。コントローラは、マスタIC570を統括的に制御し、各種処理を実行する。
送信モードREG574は、I2CI/Oエクスパンダ615へデータを送信するモードを、バイトモード又はバッファモードにするかを選択するためのレジスタである。
バイトモードは、マスタIC570が、I2CI/Oエクスパンダ615へデータを1バイト送信する毎に、I2CI/Oエクスパンダ615からACK又はNACKを受信し、ACK及びNACKの何れを受信した場合でも、マスタIC570からCPU551に割込信号を出力するモードである。
バッファモードは、マスタIC570が、出力用BUF572に格納された複数バイトのデータを、I2CI/Oエクスパンダ615へ1バイト毎送信し、その送信の都度、I2CI/Oエクスパンダ615からACK又はNACKを受信するととともに、NACKを受信した場合には、その時点で、割込信号をCPU551に出力するモードである。
但し、バッファモードでは、ACKを受信した場合には、出力用BUF572に格納されたすべてのデータが送信完了となった場合にのみ、割込信号をCPU551に出力し、マスタIC570は、出力用BUF572に未送信のデータが残っている状態でI2CI/Oエクスパンダ615からACKを受信したときには、割込信号をCPU551に出力せずに、出力用BUF572から次の送信すべきデータを取り出して、I2CI/Oエクスパンダ615へ出力する制御が繰り返される。
なお、バイトモードは、マスタIC570が、後述する初期化指示データ及び可動制御データをI2CI/Oエクスパンダ615へ出力する場合に用いられる。バッファモードは、マスタIC570が、後述する発光制御データをI2CI/Oエクスパンダ615へ出力する場合に用いられる。
ステータスREG579は、マスタIC570がI2CI/Oエクスパンダ615から受信した返答信号が、ACKであったのかNACKであったのかを識別するレジスタである。マスタIC570は、CPU551に割込信号を出力する際に、I2CI/Oエクスパンダ615から受信した返答信号に対応して、ステータスREG579の値を設定する。
フィルタ575Aは、接続線SDAから入力されたデータのノイズを除去する。ドライバ576Aは、接続線SDAからデータを出力する場合に、トランジスタ578Aが動作可能な電圧をトランジスタ578Aに印加する。
図9に示すように接続線SDAには、プルアップ抵抗Rによって所定の電圧が印加されて、接続線SDAはフィルタ575A及びトランジスタ578Aに接続されている。
トランジスタ578Aは、電力消費を抑えるために電界効果トランジスタ(FET)が用いられており、トランジスタ578Aのゲートはドライバ576Aに接続され、ドレインはプルアップ抵抗Rにより所定の電圧が印加された接続線SDAに接続され、ソースは接地されている。
トランジスタ578Aのゲートに印加される電圧がトランジスタ578Aを動作させる所定値よりも小さければ、ドレインとソースとの間に電流が流れないので、接続線SDAに印加された電圧は降下せず、その結果、接続線SDAはHIGHレベルとなる。一方、トランジスタ578Aのゲートに印加される電圧がトランジスタ578Aを動作させる所定値以上であれば、所定値の電圧が印加されたドレインから接地されているソースへ電流が流れることによって、接続線SDAの電圧が低下し、その結果、接続線SDAはLOWレベルとなる。
なお、トランジスタ578Aは、10ミリアンペア程度の電流をドレインからソースへ流しても破損しない仕様のものを用いている。このため、接続線SDAには、通常のI2Cバス使用で用いられる電流値よりもはるかに大きい10ミリアンペア程度の電流を流すことが可能であり、演出制御装置550と装飾制御装置610との間のデータ送信が、ノイズによる障害に耐えうる構成となっている。
ドライバ576Aは、データを接続線SDAから出力する場合に、トランジスタ578Aにドレインとソースとの間に電流を流すためにトランジスタ578Aのゲートにトランジスタ578Aが動作可能な値の電圧を印加する。そして、ドライバ576Aは、接続線SDAの電圧を、HIGHレベル又はLOWレベルに設定することによって、データを接続線SDAから出力する。
また、フィルタ575Bは、接続線SCLから入力されたデータのノイズを除去する。ドライバ576Bは、接続線SCLからデータを出力する場合に、トランジスタ578Bが動作可能な電圧をトランジスタ578Bに印加する。
図9に示すように接続線SCLは、プルアップ抵抗Rによって所定の電圧が印加されて、接続線SDAはフィルタ575B及びトランジスタ578Bに接続されている。
トランジスタ578Bは、電力消費を抑えるために電界効果トランジスタ(FET)が用いられており、トランジスタ578Bのゲートはドライバ576Bに接続され、ドレインはプルアップ抵抗Rにより所定の電圧が印加された接続線SCLに接続され、ソースは接地されている。
トランジスタ578Bのゲートに印加される電圧がトランジスタ578Bを動作させる所定値よりも小さければ、ドレインとソースとの間に電流が流れないので、接続線SCLに印加された電圧は降下せず、その結果、接続線SCLはHIGHレベルとなる。一方、トランジスタ578Bのゲートに印加される電圧がトランジスタ578Bを動作させる所定値以上であれば、所定値の電圧が印加されたドレインから接地されているソースへ電流が流れることによって、接続線SCLの電圧が低下し、その結果、接続線SCLはLOWレベルとなる。
なお、トランジスタ578Bは、10ミリアンペア程度の電流をドレインからソースへ流しても破損しない仕様のものを用いている。そのため、接続線SCLには、通常のI2Cバス使用で用いられる電流値よりもはるかに大きい10ミリアンペア程度の電流を流すことが可能であり、演出制御装置550と装飾制御装置610との間のデータ送信が、ノイズによる障害に耐えうる構成となっている。
ドライバ576Bは、クロック信号を接続線SCLから出力する場合に、トランジスタ578Bにドレインとソースとの間に電流を流すためにトランジスタ578Bのゲートにトランジスタ578Bが動作可能な値の電圧を印加する。そして、ドライバ576Bは、接続線SCLの電圧を、HIGHレベルとLOWレベルとに繰り返し変化させることによって、クロック信号を接続線SCLから出力する。
電源投入リセット回路577は、マスタIC570に電源が投入されて、電源投入リセット回路577内の電圧が所定値に達した場合に、入力用BUF571及び出力用BUF572などの記憶領域をデフォルト状態にするためのリセット信号をコントローラに出力する。
次に、中継基板600及び装飾制御装置610について説明する。
なお、中継基板600は、装飾制御装置610のうちマスタIC570に直接接続される、つまり最も上流側に位置するものである。
装飾装置620は、装飾制御装置610に設けたI2CI/Oエクスパンダ615(図6で後述)によって制御され、電流を流すことによって光が点滅して演出を行う発光装置であり、例えばLEDなどで構成される。役物駆動ソレノイド(SOL)560は、電流が流れると往復動作する装置であり、遊技盤10に配置される図示しない装飾のための役物を可動させて演出を行う。役物駆動モータ(MOT)561は、電流が流れると回転動作する装置であり、可動役物60を可動させて演出を行う。役物駆動ソレノイド(SOL)560及び役物駆動モータ(MOT)561も、装飾制御装置610に設けたI2CI/Oエクスパンダ615によって制御される。
なお、役物駆動SOL560が可動役物60を可動させてもよいし、役物駆動MOT561が図示しない役物を可動させてもよい。
演出制御装置550と中継基板600との接続方法、及び中継基板600と中継基板600以外の装飾制御装置610との接続方法は、図5で詳細を説明する。装飾制御装置610は、図6〜図10で詳細を説明する。
図5は、本発明の第1の実施形態の装飾制御装置610A〜610Fの接続の説明図である。なお、説明の都合上、装飾制御装置610として、1個の中継基板600と、6個の装飾制御装置610A〜610Fを図示しているが、実際には、遊技機の仕様に対応して必要な数の装飾制御装置610が接続されている。
演出制御装置550は、接続線Vcc、接続線Vact、接続線SDA、接続線SCL、及び接続線GND(以下、この5本の接続線を一つのハーネスという)を介して演出制御装置550と接続される。
中継基板600には、二つの装飾制御装置610A及び610Dがそれぞれハーネスによって並列に接続される。
装飾制御装置610Aにはハーネスを介して装飾制御装置610Bが接続され、装飾制御装置610Bにはハーネスを介して装飾制御装置610Cが接続される。
一方、装飾制御装置610Dにはハーネスを介して装飾制御装置610Eが接続され、装飾制御装置610Eにはハーネスを介して装飾制御装置610Fが接続される。
各装飾制御装置610は、ハーネスを自身に接続するための取付口となるコネクタを備える。このコネクタは各装飾制御装置610で共通であるので、接続線を接続順の誤配線を防止できる。
ここで、装飾制御装置610に設けたI2CI/Oエクスパンダ615(図6で後述)が装飾装置620を制御する方法について説明する。
演出制御装置550は、遊技制御装置500から入力された遊技データに基づいて、演出装置の出力態様を決定する。そして、演出制御装置550は、決定された出力態様となるように、制御対象となる装飾制御装置610の個別アドレス(I2CI/Oエクスパンダ615の個別アドレス)を含む演出制御データ(演出制御情報)を中継基板600に出力する。このとき、演出制御データは、中継基板600を介して演出制御装置550に接続されるすべての装飾制御装置610に対して接続線SDAから出力される。このため、マスタIC570は、マスタIC570に接続されるすべての装飾制御装置610を制御可能である。
なお、本実施形態では演出装置としてLED等の発光装置を例示しているので、LEDの発光態様が演出装置の出力態様に相当する。この場合、演出制御データによって、LEDの点灯/点滅/消灯が指示され、同時に、LEDの点滅周期や点灯輝度も指示される。
各装飾制御装置610には、一意な個別アドレスが予め設定されているので、演出制御データが入力されると、入力された演出制御データに含まれるアドレスと設定されている個別アドレスとが一致するか否かを判定する。そして、入力された演出制御データに含まれるアドレスと設定されている個別アドレスとが一致すると判定された場合には、装飾制御装置610のI2CI/Oエクスパンダ615は、演出制御データを取り込んで、対応する装飾装置620の出力態様を制御するとともに、8ビット目のデータが入力された直後に返答信号をマスタIC570に出力する。
なお、各装飾制御装置610には、個別アドレス以外にも、装飾制御装置610のI2CI/Oエクスパンダ615を初期化するためのリセット用アドレスが設定されている。このリセットアドレスは、すべてのI2CI/Oエクスパンダ615に対して共通に設けられたアドレスであり、個別アドレスとして使用することは不可能となっている。また、このリセットアドレスの値を変更することもできないようになっている(詳細は後述する)。
演出制御装置550は、装飾制御装置610(正確には、装飾制御装置610のI2CI/Oエクスパンダ615)を初期化する場合に、このリセット用の共通アドレスを含んだ初期化指示データを、中継基板600に出力する。このとき、初期化指示データ演出制御データは、中継基板600を介して、演出制御装置550に接続されるすべての装飾制御装置610に対して接続線SDAから出力される。
各装飾制御装置610には、リセット用の共通アドレスが予め設定されているので、入力されたデータに含まれるアドレスと、予め設定されているリセット用の共通アドレスとが一致するか否かを判定する。入力されたデータに含まれるアドレスと、予め設定されているリセット用の共通アドレスとが一致すると判定された場合には、装飾制御装置610のI2CI/Oエクスパンダ615は、返答信号をマスタIC570に出力するとともに、入力されたデータを初期化指示データとして取り込み、I2CI/Oエクスパンダ615自身を初期化する。
なお、I2CI/Oエクスパンダ615が初期化されると、当該初期化されたI2CI/Oエクスパンダ615によって制御される演出装置はオフ状態となる。
このように、装飾制御装置610は、演出制御装置550からの指令に基づく制御を行うので、演出制御装置550と装飾制御装置610との関係は、演出制御装置550のマスタIC570がマスタであり、装飾制御装置610のI2CI/Oエクスパンダ615がスレーブである。
図5では、装飾制御装置610の制御対象が装飾装置620である場合について説明したが、装飾制御装置610の制御対象が役物駆動SOL560や役物駆動MOT561であってもよい。この場合、演出装置がモータやソレノイドなどの駆動源となることから、これらの駆動源の動作態様が、演出装置の出力態様に相当することになる。この場合、演出制御データによって、駆動源の作動/停止が指示され、同時に動作速度も指示される。
図6は、本発明の第1の実施形態の装飾制御装置610のブロック図である。
図6では、装飾制御装置610の内部に装飾装置620であるLEDを備える装飾制御装置610(図6の下側の装飾制御装置610)と、外部の装飾装置620に接続される装飾制御装置610(図6の中央の装飾制御装置610)と、について説明する。
まず、装飾制御装置610の内部にLEDを備える装飾制御装置610について説明する。
図6の下側の装飾制御装置610は、I2CI/Oエクスパンダ615及びLED(装飾装置20)を備える。接続線SDA及び接続線SCLは、装飾制御装置610内で二つに分岐し、一方は、そのまま次の装飾制御装置610に出力される。他方は、I2CI/Oエクスパンダ615に接続される。
また、I2CI/Oエクスパンダ615の出力側には、制御対象となる装飾装置620が接続される。I2CI/Oエクスパンダ615の出力側は、図7で説明するポート0〜15によって構成される。さらに、装飾制御装置610のすべてのポートが、図8Aで後述する電流制限抵抗R0〜R15を介して、内部のLEDに接続されている。なお、この電流制限抵抗R0〜R15も、装飾制御装置610に備えられている。
前述したように、I2CI/Oエクスパンダ615は、演出制御装置550から入力された演出制御データに含まれるアドレスと、当該I2CI/Oエクスパンダ615に設定されている個別アドレスとが一致する場合にのみ、演出制御データに含まれる装飾データに基づいて、I2CI/Oエクスパンダ615に接続されている装飾装置620を制御する。
なお、図中の電源Vledは、図5で前述した接続線Vactにより供給される電源(LEDを発光させるための電源)に相当するものである。
次に、外部の装飾装置620に接続される装飾制御装置610について説明する。
図6の中央の装飾制御装置610は、I2CI/Oエクスパンダ615及びLED(装飾装置20)を備え、装飾制御装置610の外部に接続される装飾装置基板625に備わるLEDに電流を流すための接続線、装飾装置基板625のLEDに電源電圧Vledを供給する接続線、及び、グランドに接地する接続線を介して、装飾制御装置610と装飾装置基板625とが接続される。
装飾装置基板625は、I2CI/Oエクスパンダ615を備えておらず、LEDのみを備えた基板である。この場合、装飾装置基板625に備えたLEDに接続される電流制限抵抗(図8A)を、装飾装置基板625に設けることになるが、I2CI/Oエクスパンダ615が備えられた装飾制御装置610に設けてもよい。
なお、装飾装置基板625に設けたLEDの数に対応して、装飾制御装置610から装飾装置基板625へ渡されることになる、これらのLEDに電流を流すための接続線の数が決定される。例えば、装飾装置基板625に二つのLEDを備えた場合には、I2CI/Oエクスパンダ615のポートと対応するLEDとを接続するための2本の制御線と、Vledを供給する電源線が1本とが、少なくとも必要となる。
そして、中央の装飾制御装置610に設けられたI2CI/Oエクスパンダ615も、演出制御装置550から入力された演出制御データに含まれるアドレスと、当該I2CI/Oエクスパンダ615に設定されている個別アドレスとが一致する場合にのみ、演出制御データに含まれる装飾データに基づいて、I2CI/Oエクスパンダ615に接続されている装飾装置620を制御する。この場合、中央の装飾制御装置610に設けられた装飾装置620と、装飾装置基板625に設けられた装飾装置620の両方が、I2CI/Oエクスパンダ615によって制御される。
このように、装飾装置基板625を設けて、装飾制御装置610から一部の装飾装置(LED)を分離させることで、離れた箇所に配置されたLEDであっても、共通のI2CI/Oエクスパンダ615により制御することができる。
なお、装飾制御装置610は、装飾装置620の代わりに、役物駆動SOL560や役物駆動MOT561を接続し、これらを制御してもよいが、詳細は、図8Bで後述する。
図7は、本発明の第1の実施形態のI2CI/Oエクスパンダ615のブロック図である。
I2CI/Oエクスパンダ615は、接続線SDAに接続されるトランジスタ630、接続線SDAに接続されるフィルタ631、接続線SDAに接続されるドライバ632、接続線SCLに接続されるフィルタ633、バスコントローラ634、出力設定レジスタ635、出力コントローラ636、I2CI/Oエクスパンダ615の出力側の各ポート0〜15に接続されるドライバ637、各ポート0〜15に接続されるトランジスタ638A〜638P、及びリセット信号発生回路639を備える。
フィルタ631は、接続線SDAに接続され、接続線SDAから入力されたデータのノイズを除去し、ノイズが除去されたデータをバスコントローラ634に出力する。ドライバ632は、返答信号を接続線SDAから出力する場合に、トランジスタ630が動作可能な電圧をトランジスタ630に印加する。
ドライバ632は、接続線SDAからデータ(返答信号)を出力する場合に、トランジスタ630が動作可能な電圧をトランジスタ630に印加する。
トランジスタ630は、電力消費を抑えるために電界効果トランジスタ(FET)が用いられており、トランジスタ630のゲートはドライバ632に接続され、ドレインはプルアップ抵抗R(図4参照)により所定の電圧が印加された接続線SDAに接続され、ソースは接地されている。
トランジスタ630のゲートに印加される電圧がトランジスタ630を動作させる所定値よりも小さければ、ドレインとソースとの間に電流が流れない。一方、トランジスタ630のゲートに印加される電圧がトランジスタ630を動作させる所定値以上であれば、所定値の電圧が印加されたドレインから接地されているソースへ電流が流れることによって、接続線SDAの電圧が低下する。なお、トランジスタ630は、10ミリアンペア程度の電流をドレインからソースへ流しても破損しない仕様のものを用いている。
ドライバ632は、データ(返答信号)を接続線SDAから出力する場合に、トランジスタ630にドレインとソースとの間に電流を流すためにトランジスタ630のゲートにトランジスタ630が動作可能な値の電圧を印加する。そして、ドライバ632は、接続線SDAの電圧をHIGHからLOWへ繰り返し変化させることによって、データを接続線SDAから出力する。
フィルタ633は、接続線SCLに接続され、接続線SCLから入力されたデータのノイズを除去し、ノイズが除去されたデータをバスコントローラ634に出力する。
また、I2CI/Oエクスパンダ615には、当該I2CI/Oエクスパンダ615に備わるアドレス設定用端子A0〜A3によって固有のアドレスが設定されており、バスコントローラ634に入力されている。さらに、I2CI/Oエクスパンダ615をリセットするためのアドレスも、予め設定されている。
バスコントローラ634は、接続線SDAから入力されたデータのアドレスがI2CI/Oエクスパンダ615に設定された固有のアドレスと一致するか否かを判定し、一致している場合に当該データを演出制御データとして取り込む。
また、バスコントローラ634は、接続線SDAから入力されたデータのアドレスがI2CI/Oエクスパンダ615に予め設定されたリセット用のアドレスと一致するか否かを判定し、入力されたデータのアドレスとI2CI/Oエクスパンダ615に予め設定されたリセット用のアドレスとが一致している場合に当該データを初期化指示データとして取り込み、当該I2CI/Oエクスパンダ615を初期化する。
また、バスコントローラ634は、SCL接続線の信号レベルのLOWからHIGHへの変化回数が8回に達し8ビット目のデータを取り込んだ後、SCL接続線の信号レベルがHIGHからLOWへ変化すると、返答信号を接続線SDAからマスタIC570に出力する。さらに、SCL接続線の信号レベルがLOWからHIGHへ変化することが確認され、再度SCL接続線の信号レベルがHIGHからLOWへ変化すると、接続線SDAを開放する。つまり、SCL接続線の信号レベルのLOWからHIGHへの変化回数が9回になるタイミングで返答信号を出力する。
出力設定レジスタ635には、当該I2CI/Oエクスパンダ615の動作モードやポート0〜15の出力状態が設定される。バスコントローラ634が接続線SDAから初期化指示データを取り込んで、当該I2CI/Oエクスパンダ615が初期化された場合には、出力設定レジスタ635は、すべてのポート0〜15に電流が流れないように初期状態に設定される。
出力コントローラ636は、出力設定レジスタ635に設定されたデータに基づいて、ポートドライバ637を介して、各ポート0〜15に接続された演出装置に電流を流すことによって、演出装置の出力状態を実際に制御する。この出力状態は、バスコントローラ634が接続線SDAから演出制御データを取り込むと、取り込んだ演出制御データに指定されている内容に更新される。
ドライバ637は、ポートに電流を流す場合に、電流を流すポートに接続されるトランジスタ638A〜638Pが動作可能な電圧を当該トランジスタに印加する。
トランジスタ638A〜638Pのゲートはドライバ637に接続され、ドレインは図8A及び図8Bに示すように演出装置を動作させるための電圧が印加された接続線に接続するポート端子に接続され、ソースは接地されている。
トランジスタ638A〜638Pのゲートに印加される電圧がトランジスタ638A〜638Pを動作させる所定値よりも小さければ、ドレインとソースとの間に電流が流れない。一方、638A〜638Pのゲートに印加される電圧がトランジスタ638を動作させる所定値以上であれば、図8Aに示す電源Vled、又は図8Bに示す電源Vmotや電源Vsolからゲートに印加されている所定の電圧が、トランジスタ638のドレインを介して接地されているソースへ電流が流れることによって、ポート端子に接続された演出装置の出力状態を制御できる。
また、装飾制御装置610のI2CI/Oエクスパンダ615は、I2CI/Oエクスパンダ615のポート端子に接続された全ての演出装置を同時期に制御することが可能であるので、I2CI/Oエクスパンダ615のポート端子に接続された一つの演出装置を一つのグループとして制御することができる。
そして、各装飾制御装置610に備わるI2CI/Oエクスパンダ615同士は、互いに異なる個別アドレスが割り当てられているので、演出装置が複数のグループに分割された形態となっている。即ち、各装飾制御装置610に備わるI2CI/Oエクスパンダ615は、演出装置をグループ単位で制御可能なグループ単位制御手段として構成されているものである。
従って、装飾制御装置610を統括する演出制御装置550は、グループ単位制御手段を統括して制御するグループ統括制御手段として機能している。
リセット信号発生回路639には、I2CI/Oエクスパンダ615に電源を供給する接続線Vccと接続されるVcc端子、及び外部からのリセット信号を受け付けるRESET端子が接続されている。
リセット信号発生回路639は、I2CI/Oエクスパンダ615に電源が投入され、電圧が所定値まで立ち上がった場合、リセット信号を発生させ、発生させたリセット信号をバスコントローラ634、出力設定レジスタ635、及び出力コントローラ636に入力する。
なお、外部からLOWレベルのリセット信号が入力された場合には、リセット信号発生回路639はリセット信号を出力するので、演出制御装置550のCPU551から、NORゲート回路590を経由して、RESET端子からリセット信号を入力するようにしてもよい。RESET端子を使用しない場合は、図8A及び図8Bに示すようにRESET端子はHIGHにプルアップされていてもよい。
図8Aは、本発明の第1の実施形態の装飾装置620を制御する装飾制御装置610のI2CI/Oエクスパンダ615周辺の回路図である。
I2CI/Oエクスパンダ615は、入力端子としてNC端子、RESET端子、SCL端子、SDA端子、Vcc端子、A0〜A3端子、及びGND端子を備え、出力端子として、PORT0〜PORT15を備える。
RESET端子には、プルアップ抵抗Rを介してI2CI/Oエクスパンダ615に供給される電源が接続されている。このため、リセット端子に印加される電圧は常にHIGHに維持されている。
SCL端子は接続線SCLに接続され、SDA端子は接続線SDAに接続される。
Vcc端子には、I2CI/Oエクスパンダ615に供給される電源が接続される。また、Vcc端子には、電源ノイズを除去するコンデンサCPが接続される。
A0端子〜A3端子は、I2CI/Oエクスパンダ615に固有のアドレスを設定するための端子である。なお、通常I2CI/Oエクスパンダ615のアドレスは、4ビットで表現され、この端子にI2CI/Oエクスパンダ615の電源が印加されている場合にはバスコントローラ634に「1」が設定され、この端子がグランドに接続されている場合にはバスコントローラ634に「0」が設定される。
したがって、図8Aに示すI2CI/Oエクスパンダ615のアドレスは「0100」であり、図8Bに示すI2CI/Oエクスパンダ615のアドレスは「0110」である。GND端子は、電圧をグランドするための端子である。
各PORT0端子〜PORT15端子は、電流制限抵抗R0〜R15を介して各LED0〜LED15からなる装飾装置620に接続される。なお、PORT0にように、ポート1個に対して1個のLEDを接続してもよいが、PORT1〜15のように、ポート1個に対して複数個のLEDを接続してもよい。
全てのポートにLEDを1個ずつ設ける場合は、1個のI2CI/Oエクスパンダ615によって、最大で16個のLEDを制御できることになる。また、各ポートに接続されるLEDの個数が異なる場合は、1個のポートに直列に接続された全てのLEDを1種類のLEDということにすれば、1個のI2CI/Oエクスパンダ615によって、最大で16種類のLEDを制御できることになる。
PORT0端子〜PORT15端子に接続されるトランジスタ638A〜638P(図7参照)のゲートに対してドライバ637から電圧が印加されると、電圧が印加されたトランジスタ638A〜638Pのドレインからソースへ電流が流れることが可能になり、PORT0端子〜PORT15端子に接続されるLED0〜LED15に電流が流れ、各LED0〜LED15は点灯する。
一方、ドライバ637がトランジスタ638A〜638Pのゲートに電圧を印加しなければ、各LED0〜LED15に電流が流れない状態になり、各LED0〜LED15は点灯しない。
なお、I2CI/Oエクスパンダ615のPORT0端子〜PORT15端子には、LEDの代わりに、モータやソレノイドを接続することも可能であるので、I2CI/Oエクスパンダ615を用いて、モータやソレノイドを駆動する場合について説明する。
図8Bは、本発明の第1の実施形態の役物駆動MOT561及び役物駆動SOL560を制御する装飾制御装置610のI2CI/Oエクスパンダ615周辺の回路図である。
役物駆動MOT561はステッピングモータにより構成され、ステッピングモータを駆動する各相の信号端子に、所定の電圧を順次印加することで回動する。本実施形態では、役物駆動MOT561の各相の信号端子が、PORT0端子〜PORT3端子に接続される。
役物駆動MOT561に接続されているPORT0端子〜PORT3端子に接続されるトランジスタ638A〜638Dのいずれかのゲートに対してドライバ637から電圧が印加されると、電圧が印加されたトランジスタ638A〜638Dのドレインからソースへ電流が流れることが可能になり、PORT0端子〜PORT3端子に接続される役物駆動MOT561に電流が流れ、役物駆動MOT561が駆動する。
なお、各PORT0端子〜PORT3端子と役物駆動MOT561とを接続する接続線は分岐し、分岐した一方の接続線は、役物駆動MOT561に供給される電源にダイオードD及びツェナダイオードZDを介して接続される。
また、PORT端子15は、役物駆動SOL560に接続される。役物駆動SOL560に接続されているPORT15端子に接続されるトランジスタ638Pのゲートに対してドライバ637から電圧が印加されると、電圧が印加されたトランジスタ638Pのドレインからソースへ電流が流れることが可能になり、PORT15端子に接続される役物駆動SOL560に電流が流れ、役物駆動SOL560が駆動する。
なお、図8Bでは、I2CI/Oエクスパンダ615に役物駆動MOT561及び役物駆動SOL560の双方が接続されているが、一つのI2CI/Oエクスパンダ615に対して、役物駆動MOT561及び役物駆動SOL560の少なくとも一方だけを接続した構成でもよい。
例えば、ステッピングモータだけを制御するグループとしてのI2CI/Oエクスパンダ615を専用に設けたり、ソレノイドだけを制御するグループとしてのI2CI/Oエクスパンダ615を専用に設けるようにしてもよい。このような構成により、同一グループに属する演出装置を同じタイミングで制御することが可能となるので、高速処理が必要な演出装置だけをグループ化して効率よく制御することも可能となる。
図9は、本発明の第1実施形態の中継基板600の入出力に関する接続線の回路図である。
中継基板600は、上流コネクタ601、二つの下流コネクタ602A、602B、及びI2CI/Oエクスパンダ615を備える。
上流コネクタ601は中継基板600よりも上流のマスタIC570に接続されるコネクタであり、コネクタ602A、602Bは、中継基板600よりも下流の装飾制御装置610に接続される。
二つの下流コネクタ602A、602Bに接続線SDAを接続するために、上流コネクタ601から延びる内部接続線SDA911は分岐901で第1接続線SDA921と第2接続線SDA931とに分岐する。第1接続線SDA921は下流コネクタ602Aに接続され、第2接続線SDA931は下流コネクタ602Bに接続される。
同じく、上流コネクタ601から延びる内部接続線SCL912は分岐902で第1接続線SCL922と第2接続線SCL932とに分岐する。第1接続線SCL922は下流コネクタ602Aに接続され、第2接続線SCL932は下流コネクタ602Bに接続される。
接続線SDAをI2CI/Oエクスパンダ615に接続するために、第2接続線SDA931は分岐903で分岐し、分岐した第2接続線SDA931はI2CI/Oエクスパンダ615の図8A及び図8に示すSDA端子に接続される。また、接続線SCLをI2CI/Oエクスパンダ615に接続するために、第2接続線SCL932は分岐904で分岐し、分岐した第2接続線SCL932はI2CI/Oエクスパンダ615の図8A及び図8Bに示すSCL端子に接続される。
なお、I2CI/Oエクスパンダ615には、I2CI/Oエクスパンダ615の電源電圧となる電圧Vccが供給されている。また、図9では図示されていないが、I2CI/Oエクスパンダ615からは、中継基板600に設けたLED(装飾装置200)を駆動する各ポート0〜15の信号線(図8A参照)が出力されている。
また、I2CI/Oエクスパンダ615は、第2接続線SDA931及び第2接続線SCL932が接続されるとしたが、第1接続線SDA921及び第1接続線SCL922に接続されてもよい。
I2CI/Oエクスパンダ615が上流のマスタIC570に接続線SDAを介して出力する信号、及び上流のマスタIC570から中継基板600のI2CI/Oエクスパンダ615へ接続線SDAを介して入力される信号のノイズを除去するために、内部接続線SDA911にはツェナダイオードZD941が接続されている。
具体的には、内部接続線SDA911は分岐905で分岐し、分岐した内部接続線SDA911はツェナダイオードZD941のカソード側に接続され、ツェナダイオードZD941のアノード側は接地されている。
このため、内部接続線SDA911に印加された所定以上の電圧(例えば、パルス性のノイズ信号)は、ツェナダイオードZD941によって逃がされる。
また、上流のマスタIC570から中継基板600のI2CI/Oエクスパンダ615へ接続線SCLを介して入力される信号のノイズを除去するために、内部接続線SCL912にはツェナダイオードZD942が接続されている。
具体的には、内部接続線SCL912は分岐906で分岐し、分岐した内部接続線SCL912はツェナダイオードZD942のカソード側に接続され、ツェナダイオードZD942のアノード側は接地されている。
このため、内部接続線SCL912に印加された所定以上の電圧(例えば、パルス性のノイズ信号)は、ツェナダイオードZD942によって逃がされる。
中継基板600のI2CI/Oエクスパンダ615が下流コネクタ602Aに接続された装飾制御装置610に接続線SDAを介して出力する信号、及び下流コネクタ602Aに接続された装飾制御装置610から中継基板600のI2CI/Oエクスパンダ615へ接続線SDAを介して入力される信号のノイズを除去するために、第1接続線SDA921にはツェナダイオードZD943が接続されている。
具体的には、第1接続線SDA921は分岐907で分岐し、分岐した第1接続線SDA921はツェナダイオードZD943のカソード側に接続され、ツェナダイオードZD943のアノード側は接地されている。
このため、内部接続線SDA921に印加された所定以上の電圧(例えば、パルス性のノイズ信号)は、ツェナダイオードZD943によって逃がされる。
また、第1接続線SDA921に接続されるツェナダイオードZD943と同じく、第2接続線SDA931にもツェナダイオード945が接続される。
また、中継基板600のI2CI/Oエクスパンダ615から下流コネクタ602Aに接続された装飾制御装置610へ接続線SCLを介して入力される信号のノイズを除去するために、第1接続線SCL922にはツェナダイオードZD944が接続されている。
具体的には、第1接続線SCL922は分岐908で分岐し、分岐した第1接続線SCL922はツェナダイオードZD944のカソード側に接続され、ツェナダイオードZD944のアノード側は接地されている。
このため、内部接続線SCL922に印加された所定以上の電圧(例えば、パルス性のノイズ信号)は、ツェナダイオードZD944によって逃がされる。
また、第1接続線SCL922に接続されるツェナダイオードZD944と同じく、第2接続線SCL932にもツェナダイオードZD946が接続される。
また、マスタIC570に接続される上流側の接続線SDA、及び装飾制御装置610に接続される下流側の接続線SDAの電圧をプルアップするためのプルアップ抵抗R951が、第1接続線SDA921に接続される。同じく、マスタIC570に接続される上流側の接続線SCL、及び装飾制御装置610に接続される下流側の接続線SCLの電圧をプルアップするためのプルアップ抵抗R952が、第1接続線SDA922に接続される。
具体的には、第1接続線SDA921は分岐909で分岐し、分岐した第1接続線SDA921はプルアップ抵抗R951に接続される。同じく第1接続線SCL922は分岐910で分岐し、分岐した第1接続線SCL922はプルアップ抵抗R952に接続される。
なお、接続線SDA及び接続線SCLの電圧をプルアップするプルアップ抵抗951、952は、中継基板600が備えなくてもよく、マスタIC570が備えてもよいし、中継基板600以外の装飾制御装置610が備えてもよい。要するに、接続線SDA及び接続線SCLを駆動するトランジスタのドレインの端子に、電圧Vccを供給できる箇所であれば、どこでもよい。
中継基板600のI2CI/Oエクスパンダ615に電源電圧を供給する接続線Vccに接続される上流コネクタ601のVcc端子から延びる内部接続線Vcc971と、上流コネクタ601のGND端子から延び、接地されている内部接続線GND972とは、平滑コンデンサC961及びバイパスコンデンサ962を介して接続されている。
平滑コンデンサC961は、電源の電圧波形を滑らかにするためのコンデンサであり、バイパスコンデンサCP962は、電源の電圧のノイズを除去するためのコンデンサである。
このため、中継基板600のI2CI/Oエクスパンダ615に供給される電源電圧は、平滑コンデンサC961により電圧が平滑化され、バイパスコンデンサ962によりノイズが除去されて、I2CI/Oエクスパンダ615に供給される。
同じく、下流コネクタ602A、602BのVcc端子から延びる内部接続線Vcc973と、GND端子から延びる内部接続線GND974とは、平滑コンデンサC961及びバイパスコンデンサ962を介して接続されている。これによって、平滑化され、ノイズが除去された電圧が下流の装飾制御装置610に接続される接続線Vccに印加される。
図10は、本発明の第1実施形態の装飾制御装置610の入出力に関する接続線の回路図である。
装飾制御装置610は、上流コネクタ611、I2CI/Oエクスパンダ615、及び下流コネクタ612を備える。
上流コネクタ611には、中継基板600又は上流側の装飾制御装置610からバスが接続される。下流コネクタ612には、下流側の装飾制御装置610に接続するバスが接続される。
上流コネクタ611のSDA端子と下流コネクタ612のSDA端子とは、内部接続線SDA1011によって接続されている。また、上流コネクタ611のSCL端子と下流コネクタ612のSCL端子とは、内部接続線SCL1012によって接続されている。
接続線SDAをI2CI/Oエクスパンダ615に接続するために、内部接続線SDA1011は分岐1001で分岐し、分岐した内部接続線SDA1011はI2CI/Oエクスパンダ615の図8A及び図8に示すSDA端子に接続される。また、接続線SCLをI2CI/Oエクスパンダ615に接続するために、内部接続線SCL1012は分岐1002で分岐し、分岐した内部接続線SCL1012はI2CI/Oエクスパンダ615の図8A及び図8Bに示すSCL端子に接続される。
なお、I2CI/Oエクスパンダ615には、I2CI/Oエクスパンダ615の電源電圧となる電圧Vccが供給されている。また、図10では図示されていないが、I2CI/Oエクスパンダ615からは、当該装飾制御装置610に係わるLED(装飾装置200)を駆動する各ポート0〜15の信号線(図8A参照)が出力されている。
図10に示す装飾制御装置610のI2CI/Oエクスパンダ615が上流コネクタ611に接続された上流の装飾制御装置610又は中継基板600に接続線SDAを介して出力する信号、及び上流コネクタ611に接続された上流の装飾制御装置610又は中継基板600から図10に示す装飾制御装置610のI2CI/Oエクスパンダ615へ接続線SDAを介して入力される信号のノイズを除去するために、内部接続線SDA1011にはツェナダイオードZD1041が接続されている。
具体的には、内部接続線SDA1011は分岐1003で分岐し、分岐した内部接続線SDA1011はツェナダイオードZD1041のカソード側に接続され、ツェナダイオードZD1041のアノード側は接地されている。
このため、内部接続線SDA1011に印加された所定以上の電圧(例えば、パルス性のノイズ信号)は、ツェナダイオードZD1041によって逃がされる。
また、上流コネクタ611に接続される上流の装飾制御装置610又は中継基板600から図10に示す装飾制御装置610のI2CI/Oエクスパンダ615へ接続線SCLを介して入力される信号のノイズを除去するために、内部接続線SCL1012にはツェナダイオードZD942が接続されている。
具体的には、内部接続線SCL1012は分岐1004で分岐し、分岐した内部接続線SCL1012はツェナダイオードZD1042のカソード側に接続され、ツェナダイオードZD1042のアノード側は接地されている。
このため、内部接続線SCL1012に印加された所定以上の電圧(例えば、パルス性のノイズ信号)は、ツェナダイオードZD1042によって逃がされる。
図10に示す装飾制御装置610のI2CI/Oエクスパンダ615が下流コネクタ612に接続された下流の装飾制御装置610に接続線SDAを介して出力する信号、及び下流コネクタ612に接続された下流の装飾制御装置610から図10に示す装飾制御装置のI2CI/Oエクスパンダ615へ接続線SDAを介して入力される信号のノイズを除去するために、内部接続線SDA1011にはツェナダイオードZD1043が接続されている。
具体的には、内部接続線SDA1011は分岐1005で分岐し、分岐した内部接続線SDA1011はツェナダイオードZD1043のカソード側に接続され、ツェナダイオードZD1043のアノード側は接地されている。
このため、内部接続線SDA1011に印加された所定以上の電圧(例えば、パルス性のノイズ信号)は、ツェナダイオードZD1043によって逃がされる。
また、図10に示す装飾制御装置610のI2CI/Oエクスパンダ615から下流コネクタ612に接続された下流の装飾制御装置610へ接続線SCLを介して入力される信号のノイズを除去するために、内部接続線SCL1012にはツェナダイオードZD1044が接続されている。
具体的には、内部接続線SCL1012は分岐1006で分岐し、分岐した内部接続線SCL1012はツェナダイオードZD1044のカソード側に接続され、ツェナダイオードZD1044のアノード側は接地されている。
このため、内部接続線SCL1012に印加された所定以上の電圧(例えば、パルス性のノイズ信号)は、ツェナダイオードZD1044によって逃がされる。
装飾制御装置610のI2CI/Oエクスパンダ615に電源電圧を供給する接続線Vccに接続される上流コネクタ611のVcc端子から延びる内部接続線Vcc1071と、上流コネクタ611のGND端子から延び、接地されている内部接続線GND1072とは、平滑コンデンサC1061及びバイパスコンデンサ1062を介して接続されている。
平滑コンデンサC1061は図9に示す平滑コンデンサC961と同じコンデンサであり、バイパスコンデンサCP1062は図9に示すバイパスコンデンサ962と同じコンデンサである。
また、下流コネクタ612のVcc端子から延びる内部接続線Vcc1073と、GND端子から延びる内部接続線GND1074とは、平滑コンデンサC1061及びバイパスコンデンサ1062を介して接続されている。
図11は、本発明の第1の実施形態の演出制御装置550から装飾制御装置610に出力されるデータに含まれるスレーブアドレス1100の説明図である。
スレーブアドレス1100は、上位3ビットからなる固定アドレス部1101及び下位5ビットからなる可変アドレス部1102を含む。
固定アドレス部1101は、「110」が予め設定されていて、I2CI/Oエクスパンダ615が変更できないアドレスである。
可変アドレス部1102は、I2CI/Oエクスパンダ615に設定可能なアドレスであり、制御対象となるI2CI/Oエクスパンダ615のA0〜A3の端子に設定されているパターンに対応した4ビットのI2CI/Oエクスパンダアドレス1103と、当該データが読み出し要求であるのか書き込み要求であるのかを示す1ビットのR/W識別データ1104と、が含まれる。
演出制御装置550から装飾制御装置610に出力される演出制御データは、書き込み要求であるので、R/W識別データ1104には、通常「0」が登録される。
図12は、本発明の第1の実施形態のI2CI/Oエクスパンダアドレステーブル1200の説明図である。
I2CI/Oエクスパンダアドレステーブル1200は、マスタIC570によって管理されるテーブルである。I2CI/Oエクスパンダアドレステーブル1200は、スレーブアドレス1201とI2CI/Oエクスパンダアドレス1202との対応関係を示している。
スレーブアドレス1201には、演出制御装置550により送受信の対象として指定される装飾制御装置610のスレーブアドレスが格納されている。スレーブアドレスは、図13で前述したように、上位3ビットからなる固定アドレス部と、4ビットのI2CI/Oエクスパンダアドレスと、1ビットのR/W識別データとを組み合わせて構成される。
I2CI/Oエクスパンダアドレス1202には、図8Aや図8Bで前述したように、各スレーブアドレスに対応する4ビットのI2CI/Oエクスパンダアドレスが登録される。
ただし、I2CI/Oエクスパンダアドレスのうち、アドレス「1000」及びアドレス「1011」は、各I2CI/Oエクスパンダ615を相互に識別するための固有のアドレスとしては使用できない。
「1000」は、すべての装飾制御装置610に対する指令を出力する場合に指定されるアドレス(オールコールアドレス)の電源投入時のデフォルト値として用いられる。「1011」はソフトウェアによって、マスタIC570に接続されている全ての装飾制御装置610を無条件にリセットする場合に用いられる共通アドレスである。
このように、装飾制御装置610のI2CI/Oエクスパンダ615に設定可能な固有アドレスは14個であるために、演出制御装置550は、14個のI2CI/Oエクスパンダ615を制御できる。また、一つの装飾制御装置610は、PORT0〜PORT15を備えるので、16個(言い換えれば16種類)のLEDを制御できる。よって、演出制御装置550は、224個(言い換えれば224種類)のLEDを制御できる。
図13は、本発明の第1の実施形態のI2CI/Oエクスパンダ615に備わる出力設定レジスタ635(図7参照)に割り当てられたワークレジスタを説明するための図である。
I2CI/Oエクスパンダ615の出力設定レジスタ635には、ワークレジスタ(デバイスレジスタ)と、コントロールレジスタ(制御レジスタ)とが割り当てられている。ワークレジスタは、I2CI/Oエクスパンダ615に対して予め定義されている設定を行うための情報や、I2CI/Oエクスパンダ615に接続されている演出装置(例えば、LED)の出力態様を特定するための情報を記憶するものである。また、コントロールレジスタは、ワークレジスタへのデータ書き込み手順を規定する情報を記憶するものである。
なお、図13に示すように、ワークレジスタは、複数の情報を異なる記憶領域に分散して記憶する構成となっており、各記憶領域毎に異なるレジスタ番号が付与されている。
レジスタ番号が「00h」となる記憶領域には、「MODE1」というレジスタ名が付与されており、また、レジスタ番号が「01h」となる記憶領域には、「MODE2」というレジスタ名が付与されている。レジスタ番号「00h」及び「01h」の記憶領域に値が書き込まれると、書き込まれた値に基づいて、I2CI/Oエクスパンダ615の初期設定が行われる。
レジスタ番号が「02h」〜「11h」となる記憶領域には、「PWM0」〜「PWM15」というレジスタ名が付与されている。レジスタ番号「02h」〜「11h」の記憶領域のいずれかに値が書き込まれると、I2CI/Oエクスパンダ615に接続される発光装置を構成する16個のLEDのうち、値が書き込まれたレジスタ番号に対応するLEDの輝度が、書き込まれた値に基づいて調整される。例えば、レジスタ番号「02h」の記憶領域に値が書き込まれた場合には、図8Aに示すポート0に接続されたLED0の輝度が調整される。
なお、I2CI/Oエクスパンダ615に役物駆動SOL560が接続される場合には、役物駆動SOL560が接続されるポートに対応するレジスタ番号の記憶領域には、役物駆動SOL560を通電して作動するか、通電せずに未作動状態にするかを示す値が書き込まれる。
また、I2CI/Oエクスパンダ615に役物駆動MOT561が接続される場合には、役物駆動MOT561が接続されるポートに対応するレジスタ番号の記憶領域には、役物駆動MOT561の目標回転位置を示す値が書き込まれる。
レジスタ番号が「12h」となる記憶領域には、「GRPPWM」というレジスタ名が付与され、レジスタ番号が「13h」となる記憶領域には、「GRPFREQ」というレジスタ名が付与されている。レジスタ番号「12h」及び「13h」の記憶領域に値が書き込まれると、書き込まれた値に基づいて、全体のLED(16個のLED)の点滅パターンが設定される。
具体的には、レジスタ番号「12h」の記憶領域に値が書き込まれた場合には、全体のLEDのオン・オフ比率であるデューティサイクルが設定され、レジスタ番号「13h」の記憶領域に値が書き込まれた場合には、全体のLEDの点滅周期が設定される。
レジスタ番号が「14h」となる記憶領域には、「LEDOUT0」というレジスタ名が付与されている。レジスタ番号「14h」の記憶領域に値が書き込まれると、書き込まれた値に基づいて、LED0〜LED3の出力状態が設定される。
レジスタ番号が「15h」となる記憶領域には、「LEDOUT1」というレジスタ名が付与されている。レジスタ番号「15h」の記憶領域に値が書き込まれると、書き込まれた値に基づいて、LED4〜LED7の出力状態が設定される。
レジスタ番号が「16h」となる記憶領域には、「LEDOUT2」というレジスタ名が付与されている。レジスタ番号「16h」の記憶領域に値が書き込まれると、書き込まれた値に基づいて、LED8〜LED11の出力状態が設定される。
レジスタ番号が「17h」となる記憶領域には、「LEDOUT3」というレジスタ名が付与されている。レジスタ番号「17h」の記憶領域に値が書き込まれると、書き込まれた値に基づいて、LED12〜LED15の出力状態が設定される。
レジスタ番号が「18h」〜「1Ah」となる記憶領域には、「SUBADR1」〜「SUBADR3」というレジスタ名が付与されている。レジスタ番号「18h」〜「1Ah」の記憶領域に値が書き込まれると、書き込まれた値に基づいて、第1サブアドレス〜第3サブアドレスが設定される。
レジスタ番号が「1Bh」となる記憶領域には、「ALLCALLADR」というレジスタ名が付与されている。レジスタ番号「1Bh」の記憶領域に値が書き込まれると、書き込まれた値に基づいて、オールコールアドレスが設定される。
図14は、本発明の第1の実施形態のマスタIC570が接続線SDA及び接続線SCLを介して出力するデータのスタート条件及びストップ条件の説明図である。
接続線SCLは、データの非送信時に信号レベルがHIGHになっており、マスタIC570は、装飾制御装置610にデータを出力する際に、接続線SCLの信号レベルをLOWからHIGHに変化させ、装飾制御装置610が接続線SDAのデータを取り込むためのストローブ信号として作用させる。
接続線SDAは、データの非送信時に信号レベルがHIGHになっており、接続線SCLのクロック信号に合わせて接続線SDAからデータが出力される。
マスタIC570は、接続線SCLの信号レベルをHIGHに維持したまま、接続線SDAの信号レベルをHIGHからLOWに変化させることで、データの出力が開始することを示すスタート条件となる信号を出力する。
装飾制御装置610のI2CI/Oエクスパンダ615は、接続線SDA及び接続線SCLからスタート条件となる信号が入力されると、データの出力が開始することを把握する。
マスタIC570は、接続線SCLの信号レベルをHIGHに維持したまま、接続線SDAの信号レベルをLOWからHIGHに変化させることで、データの出力が終了することを示すストップ条件を示す信号を出力する。
装飾制御装置610のI2CI/Oエクスパンダ615は、ストップ条件が入力されると、データの出力が終了することを把握する。
図15は、本発明の第1の実施形態のマスタIC570から出力されたデータが入力された装飾制御装置610が返答信号を出力するタイミングチャートである。
装飾制御装置610は、スタート条件が成立してから接続線SCLの信号レベルの変化回数を計数し、接続線SCLのクロック信号に合わせて接続線SDAから入力されるデータを取り込む。
そして、装飾制御装置610は、スタート条件が成立してから接続線SCLの信号レベルの変化回数が9回に達する直前に、返答信号をマスタIC570に接続線SDAを介して出力する。換言すると、装飾制御装置610は、接続線SDAから8ビット目のデータを取り込んだ後に、接続線SCLの信号レベルがHIGHからLOWに変化することを契機に、返答信号を当該接続線SDAを介して出力する。
なお、図に示すように、データの受信に成功したことを示す返答信号(ACKの返答信号)はLOWレベルによって示され、データの受信に失敗したことを示す返答信号(NACKの返答信号、図ではACK出力なしに相当)はHIGHレベルによって示される。
また、マスタIC570は、スタート条件が成立してから接続線SCLの信号レベルが8回変化すると、接続線SDAを解放することによって、装飾制御装置610から返答信号の入力を待機する。そして、マスタIC570は、接続線SDAを解放したまま、接続線SCLの信号レベルを変化させて、装飾制御装置610からの返答信号を取り込む。
図16は、本発明の第1の実施形態のマスタIC570が演出制御データを出力する場合の接続線SDA及び接続線SCLの信号レベルのタイミングチャートである。
まず、マスタIC570は、データの出力を開始する場合には、接続線SCLの信号レベルをHIGHに維持したまま、接続線SDAの信号レベルをHIGHからLOWに変化させることによって、スタート条件を示す信号を出力し、これからデータを出力することを装飾制御装置610に通知する。
次に、マスタIC570は、合計7ビットからなる制御対象となる装飾制御装置610のスレーブアドレスを出力する。次に、マスタIC570は、読み出し要求である書き込み要求であるかを示すデータを8ビット目に出力する。
そして、マスタIC570は、接続線SCLの信号レベルが9回目にHIGHになるときに、装飾制御装置610から返答信号が入力されるので、ACKの返答信号であれば接続線SDAの信号レベルがLOWに変化し、NACKの返答信号であれば接続線SDAの信号レベルがHIGHに変化する。
次に、マスタIC570は、アドレスデータの出力後、データを、8の倍数となるビット数で出力する。マスタIC570は、データの8ビット目を出力した後、ACKの返答信号が入力されるのを待ってデータの9ビット目を出力する。以降、8の倍数番目に相当するビットのデータを出力すると、ACKの返答信号が入力されるのを確認してから、(8の倍数+1)番目のビットを出力し、全データが出力されるまで繰り返す。
なお、マスタIC570は、データの8の倍数番目となるビットを出力した後、所定時間経過してもACKの返答信号が入力されない場合には、データの送信に失敗したものとみなして、再度スタート条件を送信する。次いで、接続線SDAを介して、再度アドレスデータを出力し、ACKの返答信号を確認しながら、もう一度、データを1ビット目から出力する。
また、マスタIC570は、データの最後のビットのデータを出力した後、ACKの返答信号が入力されるのを待って、ストップ条件を示す信号を出力する。
なお、図16では、スタート条件を示す信号を出力してからストップ条件を示す信号を出力するまでの間に、合計24ビット(スレーブアドレス8ビット、データ16ビット)のデータを出力しているが、24ビット以上であってもよいし、24ビット以下であってもよい。
図17は、本発明の第1の実施形態のマスタIC570が、スレーブの個別アドレスを指定して装飾制御装置610に演出制御データを設定する場合において、マスタIC570とI2CI/Oエクスパンダ615との間で授受されるデータのフォーマットを説明する図である。
はじめに出力される8ビットのデータ1801には、データ送信の対象となる装飾制御装置610のアドレス「A0〜A6」と、当該データが読み出し要求であるのか書き込み要求であるのかを示す1ビットのR/W識別データとが含まれる。このアドレス「A0〜A6」のうち、「A4〜A6」は値「110」となる固定アドレス部であり、「A0〜A3」はI2CI/Oエクスパンダ615のA0〜A3の端子に設定されているアドレスに相当する(図8参照)。なお、このデータ1801は、図16における「ADRESS」及び「R/W」に対応するものである。
次に、出力される8ビットのデータ1802には、I2CI/Oエクスパンダ615の出力設定レジスタ635(図7参照)に割り当てられているコントロールレジスタへの設定データが含まれる。このデータ1802は、図16において1番目に送信される「DATA」に対応するものである。
ここで、コントロールレジスタについて説明する。コントロールレジスタは8ビットからなり、上位3ビット「AI0〜AI2」が出力設定レジスタ635のワークレジスタへの書き込み又は読み出し方法を指定する自動書込パラメータであり、下位5ビット「D0〜D4」がワークレジスタにおけるアクセス開始位置(書き込みを開始する先頭位置、又は読み出しを開始する先頭位置)を指定するレジスタアドレスである。
自動書込パラメータは、マスタIC570によって、レジスタアドレスが指定するアクセス開始位置の領域のみをアクセス(オートインクリメントを禁止)するのか、指定するアクセス開始位置の領域に隣接する領域も含んでアクセス(オートインクリメントを許可)するのかを指定するパラメータであり、具体的には「000」、「100」、「101」、「110」、「111」の何れかの値を設定することができる。
自動書込パラメータに「000」の値を設定すると、オートインクリメントが禁止され、レジスタアドレスが指定するアクセス開始位置の領域のみにアクセスし、開始位置以外の領域にはアクセスしない。例えば、レジスタアドレスが「10100」であれば、レジスタ番号が「14h」となる記憶領域のみにアクセスし、他の記憶領域にはアクセスしない。
自動書込パラメータに「100」の値を設定すると、オートインクリメントが許可され、レジスタアドレスが指定するアクセス開始位置の領域にアクセスした後は、レジスタ番号が増加する方向に領域を移動しながら順にアクセスを繰り返す。そして、レジスタ番号が最終の「1Bh」となる記憶領域にアクセスした後は、レジスタ番号が「00h」となる記憶領域にアクセスし、再度、レジスタ番号が増加する方向に領域を移動しながら順にアクセスを繰り返す。例えば、レジスタアドレスが「10100」であれば、レジスタ番号が「14h」となる記憶領域にアクセスした後は、レジスタ番号が「15h」→「16h」→・・→「1Bh」→「00h」→「01h」→・・となる領域(即ち、全ての領域)に、繰り返しアクセスする。
自動書込パラメータに「101」の値を設定すると、自動書込パラメータに「100」の値を設定した場合と同様に、レジスタアドレスが指定するアクセス開始位置の領域にアクセスした後は、レジスタ番号が増加する方向に領域を移動しながら順にアクセスを繰り返す。但し、一旦、レジスタ番号が「11h」となる記憶領域にアクセスした後は、レジスタ番号が「02h」となる記憶領域にアクセスし、以降、レジスタ番号が「02h」〜「11h」となる区間の記録領域(LEDの輝度調整に関する領域)に繰り返しアクセスする。例えば、レジスタアドレスが「10100」であれば、レジスタ番号が「14h」となる記憶領域にアクセスした後は、レジスタ番号が「15h」→「16h」→・・→「1Bh」→「00h」→「01h」→・・となる領域に、順にアクセスする。そして、レジスタ番号が「11h」となる記憶領域にアクセスした後は、レジスタ番号が「02h」→「03h」→・・→「11h」→「02h」→「03h」→・・となる領域に、繰り返しアクセスする。
自動書込パラメータに「110」の値を設定すると、自動書込パラメータに「100」の値を設定した場合と同様に、レジスタアドレスが指定するアクセス開始位置の領域にアクセスした後は、レジスタ番号が増加する方向に領域を移動しながら順にアクセスを繰り返す。但し、一旦、レジスタ番号が「13h」となる記憶領域にアクセスした後は、レジスタ番号が「12h」となる記憶領域にアクセスし、以降、レジスタ番号が「12h」〜「13h」となる区間の記録領域(LEDの点滅周期に関する領域)を繰り返しアクセスする。例えば、レジスタアドレスが「10100」であれば、レジスタ番号が「14h」となる記憶領域にアクセスした後は、レジスタ番号が「15h」→「16h」→・・→「1Bh」→「00h」→「01h」→・・となる領域に、順にアクセスする。そして、レジスタ番号が「13h」となる記憶領域にアクセスした後は、レジスタ番号が「12h」→「13h」→「12h」→「13h」→・・となる領域に、繰り返しアクセスする。
自動書込パラメータに「111」の値を設定すると、自動書込パラメータに「100」の値を設定した場合と同様に、レジスタアドレスが指定するアクセス開始位置の領域にアクセスした後は、レジスタ番号が増加する方向に領域を移動しながら順にアクセスを繰り返す。但し、一旦、レジスタ番号が「13h」となる記憶領域にアクセスした後は、レジスタ番号が「02h」となる記憶領域にアクセスし、以降、レジスタ番号が「02h」〜「13h」となる区間の記録領域(LEDの輝度及び点滅周期に関する領域)に繰り返しアクセスする。例えば、レジスタアドレスが「10100」であれば、レジスタ番号が「14h」となる記憶領域にアクセスした後は、レジスタ番号が「15h」→「16h」→・・→「1Bh」→「00h」→「01h」→・・となる領域に、順にアクセスする。そして、レジスタ番号が「13h」となる記憶領域にアクセスした後は、レジスタ番号が「02h」→「03h」→・・→「13h」→「02h」→「03h」→・・となる領域に、繰り返しアクセスする。
図17に戻り、コントロールレジスタへの設定データ1802に続いて、ワークレジスタへの設定データ1803が出力される。この設定データ1803は、図16において2番目以降に送信される「DATA」に対応するものである。
自動書込パラメータを「000」とした場合には、この設定データ1803は、レジスタアドレスが指定する1箇所の記憶領域を更新するために必要な8ビットのデータとなる。自動書込パラメータを「000」以外の値とした場合には、この設定データ1803は、レジスタアドレスが指定する記憶領域を先頭に、複数の領域を繰り返し更新するために必要な8の倍数となるビットのデータとなる。
図18は、本発明の第1の実施形態のマスタIC570が、スレーブの個別アドレスを指定して装飾制御装置610に演出制御データを設定する場合において、マスタIC570とI2CI/Oエクスパンダ615との間で授受される演出制御データに具体的な数値を適用したものである。本図では、オートインクリメントを禁止して、ワークレジスタの1箇所の記憶領域だけを更新する演出制御データを例示しており、I2CI/Oエクスパンダ615のPORT0端子〜PORT3端子に接続されるLEDの発光状態を更新する場合を想定している。
まず、はじめに出力される8ビットのデータ1901には、送信先の装飾制御装置610のI2CI/Oエクスパンダ615のスレーブアドレスを示す「1101100」が割り当てられている。
次に出力される8ビットのデータ1902には、自動書込パラメータ、及びLEDの出力データを設定するために割り当てられているI2CI/Oエクスパンダ615の出力設定レジスタ635のコントロールレジスタに設定される値が含まれる。
ここでは、I2CI/Oエクスパンダ615のPORT0端子〜PORT3端子に接続されるLEDの発光状態を設定するので、レジスタアドレスにはLEDOUT0(アドレス=10100)を指定することにする。
なお、自動書込パラメータには、オートインクリメントを禁止するために「000」が指定されている。
次に、出力される8ビットのデータ1903には、送信先の装飾制御装置610によって制御される装飾装置620の発光態様を設定するデータが含まれる。具体的には、LEDOUT0レジスタに設定されるデータが割り当てられている。これにより、I2CI/Oエクスパンダ615のPORT0端子〜PORT3端子に接続されるLEDの発光状態(点灯、消灯、点滅など)が指定され、指定された状態でLEDが発光する。
このようにして、I2CI/Oエクスパンダ615のPORT0端子〜PORT3端子のLEDの発光状態が制御されるが、I2CI/Oエクスパンダ615の他のPORT端子(PORT4〜PORT15)も、コントロールレジスタに書き込むデータ1902の値を指定して、出力データ1903を設定することで制御可能である。PORT端子に、モータやソレノイドが接続されていても、同様に制御される。
図19は、本発明の第1の実施形態の演出制御データの別の形態を説明する図である。本図では、オートインクリメントを許可して、ワークレジスタの全ての記憶領域を更新する場合を想定しており、演出制御データに含まれる各データの送信順序を規定している。
まず、マスタIC570は、制御対象となる装飾制御装置610の個別アドレスを特定可能な8ビットのデータ(図18のデータ1901と同一フォーマットのデータ)を送信する。
次に、マスタIC570は、制御対象のI2CI/Oエクスパンダ615の出力設定レジスタ635のコントロールレジスタに設定されるデータ(図18のデータ1902と同一フォーマットのデータ)を送信する。本図においては、オートインクリメントを許可してワークレジスタの全ての記憶領域を更新するため、自動書込パラメータには「100」が指定され、書き込み先又は読み出しの開始位置を指定するレジスタアドレスには、ワークレジスタの先頭領域となる「00h」が指定される。
このため、コントロールレジスタ設定値を受信した後の制御対象となる装飾制御装置610のI2CI/Oエクスパンダ615においては、レジスタ番号が「00h」の記憶領域(MODE1レジスタ)が最初に更新されることになる。
次いで、マスタIC570は、コントロールレジスタ設定値の送信後、MODE1レジスタに書き込む値(合計8ビット)を送信する。I2CI/Oエクスパンダ615は、当該書き込み値を受信するとMODE1レジスタの値を更新し、レジスタ番号をインクリメントして次の「01h」の記憶領域(MODE2レジスタ)を更新するための準備をする。
次いで、マスタIC570は、MODE2レジスタに書き込む値(合計8ビット)を送信し、以降、レジスタ番号が「02h」〜「1Bh」となる残りの記憶領域のレジスタに対して、順に設定値を送信する。I2CI/Oエクスパンダ615は、当該書き込み値を受信する毎に対応するレジスタの値を更新し、レジスタ番号をインクリメントして次の記憶領域を更新するための準備を繰り返すことで、ワークレジスタに割り当てられた「00h」〜「1Bh」の全てのレジスタの値が更新される。
なお、I2CI/Oエクスパンダ615は、ワークレジスタの最終となる「1Bh」の記憶領域を更新すると、レジスタ番号は「00h」に変更して、MODE1レジスタの更新を待つ状態となる。
図20は、本発明の第1の実施形態のマスタIC570がI2CI/Oエクスパンダ615を初期化するときに、マスタIC570からI2CI/Oエクスパンダ615へ送信される初期化指示データのデータフォーマットを説明する図である。
演出制御装置550のCPU551がマスタIC570に対して装飾制御装置610の初期化を行うように指示すると、マスタIC570は、配下に接続している全ての装飾制御装置610に初期化指示データを送信する。
はじめに出力される8ビットのデータ2001には、図18に示す固定アドレス「110」と、共通アドレスであるリセットアドレス「1011」(図12参照)とが含まれる。なお、このデータ2001は、図16における「ADRESS」に対応するものであり、「R/W」のビットには、書き込みを示す「0」が設定される。
次に出力される8ビットのデータ2002では、第1所定値「10100101」が出力さて、次に出力される8ビットのデータ2003では、第2所定値「01011010」が出力される。なお、このデータ2002は、図16において1番目に送信される「DATA」に対応し、データ2003は、図16において2番目に送信される「DATA」に対応する。
マスタIC570に接続されるすべてのI2CI/Oエクスパンダ615は、リセットアドレス、第1所定値、及び第2所定値から構成される初期化指示データを受信すると、自身の初期化を行う。
リセットアドレスの出力後に、第1所定値及び第2所定値を出力するようにしたのは、マスタIC570がリセットアドレス「1011」を送信していないにもかかわらず、ノイズなどの影響で、I2CI/Oエクスパンダ615が誤ってリセットアドレス「1011」を取り込んでしまい、誤ったタイミングで初期化が行われることを防止するためである。
また、リセットアドレスは、個別アドレスとは異なって、全て(換言すれば複数)のI2CI/Oエクスパンダ615に共通なアドレスである。そのため、リセットアドレスを含んだ初期化指示データを1回送信するだけで、全て(複数)のI2CI/Oエクスパンダ615を選択して初期化することになるので、I2CI/Oエクスパンダ615を個別に選択して初期化を指示する方法と比較すると、高速に初期化を指示することが可能となる。
なお、図20では、第1所定値と第2所定値とを異なる値としたが、同じ値であってもよい。また、第1所定値及び第2所定値のいずれかが1回送信されるようにしてもよい。
図21は、本発明の第1の実施形態の異常判定テーブル2100を説明する図である。
異常判定テーブル2100は、演出制御装置550のRAM553に格納される。異常判定テーブル2100は、演出制御装置550のマスタIC570と当該マスタIC570に接続されるI2CI/Oエクスパンダ615との接続状態を監視するものであり、接続状態の確認結果に対応して、該当するI2CI/Oエクスパンダ615に対応した後述のエラーフラグ2105が設定される。
異常判定テーブル2100は、I/Oエクスパンダアドレス2101、スレーブアドレス2102、エラーカウンタ2103、比較値2104、及びエラーフラグ2105を含む。
I/Oエクスパンダアドレス2101は、マスタIC570に接続されるI2CI/Oエクスパンダ615のA0〜A3の端子に設定されているアドレス(図8参照)に対応している。
スレーブアドレス2102には、図12に示すI2CI/Oエクスパンダアドレステーブル1200に登録されているスレーブアドレスが登録される。
エラーカウンタ2103は、マスタIC570からI2CI/Oエクスパンダ615への演出制御データの送信に対して、I2CI/Oエクスパンダ615からのACKが受信できたか否かを監視した際に、このACKの受信に2回連続して失敗するとインクリメントされるものである。
比較値2104には所定値が登録される。エラーフラグ2105には、当該エントリのI2CI/Oエクスパンダ615との接続状態に異常が発生したか否かを示すエラーフラグが登録される。
具体的には、インクリメントされたエラーカウンタ2103の値が、比較値2104に登録された所定値に達した場合に、エラーフラグ2105にONが設定されて当該エントリのI2CI/Oエクスパンダ615に異常が発生したことが登録される。
なお、I/Oエクスパンダアドレス2101に登録された「0110」のI2CI/Oエクスパンダ615は、図8Bに示すように、役物駆動SOL560や役物駆動MOT561といった可動装置を制御している。そこで、このI2CI/Oエクスパンダ615を備える装飾制御装置610を、可動制御装置(可動グループ単位制御手段)ということにする。
一方、I/Oエクスパンダアドレス2101に登録された「0110」以外のI2CI/Oエクスパンダ615は、図8Aに示すように、LED等の発光装置を制御している。そのため、このI2CI/Oエクスパンダ615を備える装飾制御装置610を、前述の可動制御装置と区別するために、発光制御装置(発光グループ単位制御手段)ということにする。
図21では、可動制御装置(I/Oエクスパンダアドレス2101に登録された値が「0110」)のエントリが存在せず、発光制御装置のエントリのみが登録されている。
可動制御装置に異常が発生している場合には、役物駆動MOT561が回転しすぎて、可動役物60が動作可能な範囲を超えて可動してしまい、可動役物60及び可動役物付近の部材を破損してしまうことを防止するため、発光制御装置よりも短時間で異常判定する必要がある。そのため、可動制御装置の接続監視タイミングと発光制御装置の接続監視タイミングとが異なるので、換言すると、可動制御装置の接続監視の構成と発光制御装置の接続監視の構成とが異なるので、異常判定テーブル2100から可動制御装置のエントリが除外されているのである。
具体的には、本実施形態では、後述するように、発光制御装置のデータ出力処理(図22参照)は、VDP割込(約33.3ms周期)に同期して実行されるようし、可動制御装置のデータ出力処理をタイマ割込(2ms周期)に同期して実行されるようにしている。
前述したように、マスタIC570から、発光制御装置に備えられるI2CI/Oエクスパンダ615への2回目の演出制御データの送信に対して、当該I2CI/Oエクスパンダ615からのACKが受信できなければ、エラーカウンタ2103がインクリメントされる。
したがって、発光制御装置に異常が発生している場合には、データ出力処理の実行周期が33msで、比較値2104が「300」であるので、33.3ms×300≒10sで発光制御装置に異常が発生したことを検出する。
なお、可動制御装置に異常が発生している場合には、データ出力処理の実行周期が2msであり、後述するように、次の実行周期を待つことなく、異常が発生したことを検出するので、極めて短時間(2ms程度の時間)で可動制御装置に異常が発生したことを検出できる。
このため、可動制御装置のエラー判定が発光制御装置のエラー判定よりも頻繁に行われ、可動制御装置に異常が発生したことを発光制御装置に異常が発生したことよりも早く検出することができるので、可動役物60が動作可能な範囲を超えて可動してしまい、可動役物60及び可動役物付近の部材を破損してしまうことを防止できる。
これに対して、LED等の発光装置は、誤動作によって破損する恐れが少ないため、発光制御装置に関する異常判定に時間を要しても問題が生じることはない。
従って、異常判定を短時間で行う必要がある装飾制御装置610に限定して判定の周期を短縮し、他の装飾制御装置610の異常判定を余裕のある周期で行うので、処理負担のバランスを考慮した異常判定処理を実行することが可能となる。
また、I/Oエクスパンダアドレス2101には「0111」が登録されていない。アドレス「0111」を装飾制御装置610に付与することも可能であるが、本実施形態では、この「0111」のアドレスは使用しないため、I/Oエクスパンダアドレス2101に登録されない。
一つのマスタIC570には、14個のI2CI/Oエクスパンダ615が接続可能であるが、一つのマスタIC570には14個すべてのI2CI/Oエクスパンダ615が接続されなくてもよい。例えば、本実施形態では、上述したように、図20に示す異常判定テーブル2100に対応するマスタIC570には、13個のI2CI/Oエクスパンダ615が接続されるようになっている。
このように、アドレスが付与されるI2CI/Oエクスパンダ615は、マスタIC570に接続可能なI2CI/Oエクスパンダ615であり、かつ遊技の演出を行う可能性のある装飾装置620を制御する装飾制御装置610のI2CI/Oエクスパンダ615である。
このため、異常判定テーブル2100のI/Oエクパンダアドレス2101には、マスタIC570に接続可能なI2CI/Oエクスパンダ615であって、かつ、遊技の演出を行う可能性のある装飾装置620を制御する装飾制御装置610のI2CI/Oエクスパンダ615のアドレスが登録される。
なお、I/Oエクスパンダアドレス2101に登録されたすべてのアドレスのI2CI/Oエクスパンダ615がマスタIC570に実際に接続されておらず、一部のアドレスのI2CI/Oエクスパンダ615のみがマスタIC570に接続されている。
図21においては、例えば、アドレスが「0000」のI2CI/Oエクスパンダ615がマスタIC570に接続されていなく、その他のアドレスのI2CI/Oエクスパンダ615はマスタIC570に接続されているものとする。
図25で説明するように、マスタIC570は、I/Oエクスパンダアドレス2101に登録されたすべてのアドレスに対して、装飾制御データを送信するので、I/Oエクスパンダアドレス2101に登録されたアドレスのI2CI/Oエクスパンダ615であれば、マスタIC570に接続されても、接続されなくても、同じ制御プログラムで、マスタIC570に接続されたI2CI/Oエクスパンダ615を制御できる。
なお、遊技の演出を行う可能性のある装飾装置620を制御する装飾制御装置610のI2CI/Oエクスパンダ615が14個存在すれば、当該14個のI2CI/Oエクスパンダ615にアドレスが付与され、当該マスタIC570に14個のI2CI/Oエクスパンダ615が接続されてもよい。
図22は、本発明の第1実施形態の演出制御装置550による処理のフローチャートである。
図22に示す演出制御装置550の処理は、演出制御装置550のCPU551によって実行される。
演出制御装置550は、演出制御装置550に電源が投入されると、まずステップ2201〜2210の処理を実行した後、VDP556から画像更新周期と同期する同期信号(例えば、33ms秒周期の同期信号)がCPU551に入力されるまで待機する。そして、以降は、VDP556から画像更新周期と同期する同期信号がCPU551に入力される毎に、ステップ2204〜2210の処理を繰り返し実行する。
まず、演出制御装置550は、演出制御装置550のRAM553を初期化する(2201)。このとき、当該演出制御装置550への電源投入時を基点として、CPU551からVDP556や音LSI557に出力される、初回の制御データも生成される。
次に、演出制御装置550は、マスタIC570、及びマスタIC570に接続された装飾制御装置610、を初期化するI2C初期リセット処理を実行する(2202)。I2C初期リセット処理は、図23で詳細を説明する。このI2C初期リセット処理が実行されると、役物駆動MOT561、及び役物駆動SOL560の初期化動作も開始される。
そして、演出制御装置550は、VDP556から画像更新周期と同期する同期信号(VDP割込)、及びタイマ割込の受け入れを許可する(2203)。
そして、演出制御装置550は、表示装置53に画像を表示するために、VDP556に画像を表示させる指令となるデータを出力し(2204)、スピーカ30から音を遊技状態に応じて出力させるために、音制御データを音LSI557に出力し、音LSI557に音制御データに基づいてスピーカ30から音を出力させる(2205)。
次に、演出制御装置550は、発光制御装置に演出制御データをマスタIC570から出力する発光制御スレーブ出力処理を実行する(2206)。発光制御スレーブ出力処理は、図25で詳細を説明する。
そして、演出制御装置550は、VDP556に次に出力されるデータを編集し(2207)、音LSI557に次に出力される音制御データを編集し(2208)、各グループの発光制御装置に次に出力される演出制御データを編集する(2209)。
次に、演出制御装置550は、異常判定テーブル2100を参照して、すべての発光制御装置のエラーフラグ2105がONになっている場合にリセット条件が成立したとみなし、マスタIC570、役物駆動MOT561、マスタIC570に接続されたすべてのI2CI/Oエクスパンダ615、及び役物駆動SOL560の初期化を指示するI2C随時リセット処理を実行し(2210)、その後、VDP556から同期信号がCPU551に入力されるまで待機する。I2C随時リセット処理は、図27で詳細を説明する。
図22による処理では、表示装置53の画像を更新する周期と同期して、演出制御装置550のマスタIC570から装飾制御装置610のI2CI/Oエクスパンダ615へ演出制御データを送信し、I2CI/Oエクスパンダ615は受信した演出制御データに基づいて装飾装置620を制御するので、表示装置53における演出と装飾装置620における演出とが調和し、遊技者に違和感を与えないので、興趣を高めることができる。
また、表示装置53の画像を更新する周期と同期してマスタIC570から送信された演出制御データが装飾制御装置610で受信されると、その都度、I2CI/Oエクスパンダ615によってワークレジスタの値が更新される。そのため、毎回ワークレジスタの値が最新の状態に更新されるので、ノイズ等でワークレジスタの値が破壊されても、正常な値に復帰することが可能である。
また、表示装置53の画像を更新する周期と同期して、ステップ2211の処理で実行されるエラー判定処理を実行するので、エラー判定の実行頻度を適切にできる、つまり、エラー判定処理の実行頻度が高すぎる(単位時間当たりの実行回数が多すぎる)と、演出制御装置550のCPU551の処理負荷が増大してしまい、逆に、エラー判定処理の実行頻度が低すぎる(単位時間当たりの実行回数が少なすぎる)と、異常が発生したことを適切に検出できなくなってしまうことになるので、適度な頻度でエラー判定を行うことにより処理の不具合を防止することができる。
図23は、本発明の第1実施形態のI2C初期リセット処理のフローチャートである。
I2C初期リセット処理は、演出制御装置550への電源投入の直後に、マスタIC570、マスタIC570に接続されたすべてのI2CI/Oエクスパンダ615の初期化を指示する処理であり、図22に示すステップ2202の処理で実行される。なお、当該処理中にて、役物駆動MOT561、及び役物駆動SOL560の初期化動作の開始が指示される。
まず、演出制御装置550のCPU551は、初期化中であることを示すリセット要求フラグを設定し(2301)、入出力I/F558とNORゲート回路590とを介してリセットパルスをマスタIC570へ入力し、マスタIC570をハード的に初期化(ハードリセット)する(2302)。
ハードリセットとは、マスタIC570の図示しないリセット回路にマスタIC570のRESET端子が接続されており、RESET端子に印加される電圧が所定時間ロウレベルに保持されることによって、マスタIC570のリセット回路がマスタIC570自身をリセットすることをいう。なお、このRESET端子は、本実施形態における初期化信号入力指示端子として機能している。
本実施形態では、このRESET端子に印加されるリセット信号が、前述したように、演出制御装置550に備わっている他の回路にも接続されている。この他の回路とは、例えば、VDP556や音LSI557などであり、演出制御装置550に電源が投入されて起動したときに、CPU551により初期化されるものである。従って、電源投入時には、ハードリセットによって、マスタIC570とともに、これらの回路もあわせて初期化できるため、処理の高速化が期待できる。
次に、演出制御装置550は、マスタIC570に接続されたすべての装飾制御装置610のI2CI/Oエクスパンダ615を初期化するために、マスタIC570から初期化指示データを出力するスレーブリセット処理を実行する(2303)。スレーブリセット処理は、図24で詳細を説明する。
次に、演出制御装置550は、ステップ2302の処理、及びステップ2303の処理でマスタIC570及びI2CI/Oエクスパンダ615の初期化が完了したので、リセット要求フラグを解除する(2304)。そして、演出制御装置550は、役物駆動MOT561が初期化中であることを示すモータ初期化フラグを設定する(2305)。なお、役物駆動MOT561の初期化とは、役物駆動MOT561の回転軸を初期位置に戻す処理であり、図28に示すタイマ割込処理で行われる。
次に、演出制御装置550は、役物駆動MOT561を初期化する場合に役物駆動MOT561に出力されるモータ出力データをRAM553に設定する(2306)。そして、演出制御装置550は、役物駆動SOL560を初期化するために、役物駆動SOL560の通電状態を非通電状態にするオフデータを役物駆動SOL560に出力し(2307)、図22に示すステップ2203の処理に進む。なお、役物駆動SOL560の初期化とは、役物駆動SOL560の通電状態を非通電状態にすることである。
なお、CPU551は、入出力I/F558とNORゲート回路590とを介してリセットパルスをマスタIC570へ入力し、マスタIC570をハード的にリセットするとしたが、CPU551から、バス563を介してリセットレジスタ573に情報を書き込むことにより、マスタIC570をソフト的にリセットしてもよい。
図24は、本発明の第1実施形態のスレーブリセット処理のフローチャートである。
スレーブリセット処理は、I2CI/Oエクスパンダ615を初期化するための初期化指示データをI2CI/Oエクスパンダ615に送信する処理であり、図23に示すステップ2303の処理、及び図27に示すステップ2706の処理で実行される。
初期化指示データは、マスタIC570からバイトモードで送信される。バイトモードでは、マスタIC570は、I2CI/Oエクスパンダ615へデータを1バイト送信する毎に、I2CI/Oエクスパンダ615からACK又はNACKを受信し、ACK及びNACKの何れを受信した場合でも、割込信号をCPU551に出力する。つまり、マスタIC570からI2CI/Oエクスパンダ615へ1バイトのデータを送信することが完了すれば、ACK/NACKの受信に拘らず、必ず、マスタIC570からCPU551へ割込信号が出力される。
まず、マスタIC570は、接続線SDA及び接続線SCLの信号レベルを、スタート条件を示す信号レベルに変化させる(2401)。
次に、CPU551は、リセットアドレス(図20参照)を示す1バイト分のデータを出力用BUF572に設定する(2402)。
そして、CPU551は、マスタIC570へデータ送信の開始を指示した時点から、マスタIC570がCPU551へ割込信号を伝達させるまでの時間を監視するために、バイトモード用の監視タイマの起動を開始する(2403)。以降、この監視時間をバイトモード監視時間ということにする。
CPU551は、バイトモード時間の監視を開始してから所定時間経過しても、マスタIC570から割込信号を受け付けていない場合には、タイムアウトが発生したとして、データ送信を中断するために、マスタIC570にストップ条件を出力させ(2415)、その後、ステップ2401の処理に戻り、再度マスタIC570にスタート条件を出力させてから、初期化指示データを初めのデータから送信する。
次に、マスタIC570は、ステップ2402の処理で出力用バッファ572に設定されたリセットアドレスをI2CI/Oエクスパンダ615に出力する(2404)。マスタIC570は、このリセットアドレスを出力する際に、一旦、ドライバ576Aをオフさせて接続線SDAを解放する(ハイレベルに変化させる)動作を行う。そして、接続線SDAが解放されていない場合(ドライバ576Aをオフしても、接続線SDAがハイレベルにならずロウレベルのままで維持されているとき)には、このリセットアドレスの出力は、接続線SDAが開放される(接続線SDAがハイレベルになる)まで待機する。
次に、マスタIC570は、1バイト分のデータ出力完了から、所定時間(前述したバイトモード監視時間よりも短い監視時間となっている)以内にACKの返答信号がマスタIC570に入力されたか否かを確認する(2405)。
そして、マスタIC570は、ステップ2405の処理の確認結果に基づいて、データが出力されてから所定時間以内にACKの返答信号が入力されているか否かを判定する(2406)。
ステップ2406の処理で、データが出力されてから所定時間以内にACKの返答信号が入力されていないと判定された場合、マスタIC570は、ステータスREG579に返答信号がNACKであった旨の情報を設定したうえで、割込信号を発生させる。これにより、I2CI/Oエクスパンダ615からNACKの返答信号を受信したことが、CPU551に通知される。このとき、CPU551はバイトモードの時間監視を終了する(2407)。
次いで、CPUは、データ送信を中断するために、マスタIC570にストップ条件を出力させ(2415)、その後、ステップ2401の処理に戻り、再度マスタIC570にスタート条件を出力させてから、初期化指示データを再度出力する。
ステップ2406の処理で、データが出力されてから所定時間以内にACKの返答信号が入力されたと判定された場合、マスタIC570は、ステータスREG579に返答信号がACKであった旨の情報を設定したうえで、割込信号を発生させる。これにより、I2CI/Oエクスパンダ615からACKの返答信号を受信したことが、CPU551に通知される。このとき、CPU551はバイトモードの時間監視を終了する(2408)。
そして、CPU551は、初期化指示データを構成する3種類のデータ(図20に示す、リセットアドレスを含むデータ2001、第1所定値のデータ2002、及び第2所定値のデータ2003)をすべて出力したか否かを判定する(2409)。なお、これらのデータは出力順序が予め定められているので、ステップ2409の処理では、第2所定値のデータ2003が出力された直後か否かを判定すればよい。
ステップ2409の処理で、初期化指示データを構成するすべてのデータを出力したと判定された場合、つまり、図20に示す第2所定値を示すデータを出力した場合には、マスタIC570は、接続線SDA及び接続線SCLの信号レベルを、ストップ条件を示す信号レベルに変化させ(2410)、スレーブリセット処理を終了する。
ステップ2409の処理で、初期化指示データ構成するすべてのデータ出力していないと判定された場合には、CPU551は、次に送信される1バイトのデータを出力用BUF572に設定する(2411)。リセットアドレスを出力した直後に実行されるステップ2411の処理では、出力用BUF572には、図20に示す第1所定値のデータ2002が設定され、第1所定値のデータを出力した直後に実行されるステップ2411の処理では、出力用BUF572には、図20に示す第2所定値のデータ2002が設定される。
そして、CPU551は、マスタIC570へデータ送信の開始を指示した時点から、マスタIC570がCPU551へ割込信号を伝達させるまでの時間を監視するために、バイトモード用の監視タイマの起動を開始する(2412)。
次に、マスタIC570は、接続線SDAの電圧レベルを監視し、接続線SDAが解放されていることを確認してから(2413)、出力用BUF572に設定された1バイトのデータを出力し(2414)、ステップ2405の処理に進む。ステップ2413の処理は、グループ単位制御手段からの返答信号の出力が終了するまでは、接続線SDAが返答信号により占有されているので、マスタIC570は、グループ単位制御手段からの返答信号の出力が終了し、接続線SDAが解放されるまで待機する処理である。
以上より、初期化指示データは、1バイトのデータを出力するごとに(つまり、3バイトの初期化指示データを送信する途中で)、出力した1バイトのデータに対する返答信号が否かを示す割込信号が出力されるか否かを監視するバイトモードで送信される。
なお、ステップ2403の処理、及びステップ2412の処理において、1バイトのデータを送信してからマスタIC570から割込信号が出力されるまでの時間の監視は、CPU551が行ったが、マスタIC570自身が、1バイトのデータを送信してからマスタIC570から割込信号を出力するまでの時間を監視してもよい。
図25は、本発明の第1実施形態の発光制御スレーブ出力処理のフローチャートである。
発光制御スレーブ出力処理は、発光装置に接続されるI2CI/Oエクスパンダ615(発光制御装置)に発行制御データを送信する処理であり、図22に示すステップ2206の処理で実行される。
まず、演出制御装置550は、時分割カウンタをインクリメントする(2501)。時分割カウンタは、0〜3までの整数をカウントするカウンタである。
後述するように、本実施形態の遊技機では、図21に示す異常判定テーブル2100により、マスタIC570に接続されていることが確定したI2CI/Oエクスパンダ615に対して、定期的にマスタIC570からデータを送信するのはもちろんのこと、マスタIC570に接続されていないI2CI/Oエクスパンダ615にも、一定の間隔でマスタIC570からデータを送信している。
これは、現時点では接続されていないI2CI/Oエクスパンダ615が、遊技店の営業中にマスタIC570と接続を再開したような場合を想定しているからである。但し、接続が確定しているI2CI/Oエクスパンダ615よりもデータ送信頻度を低くするために、時分割カウンタが0である場合にのみマスタIC570からデータ送信を行うようにしている。
次に、演出制御装置550は、ステップ2501の処理でインクリメントされた時分割カウンタの値が最大値よりも大きいか否かを判定する(2502)。
ステップ2502の処理で、時分割カウンタの値が最大値よりも大きいと判定された場合、時分割カウンタの値を0に設定する(2503)。
ここで、時分割カウンタの最大値は3に設定されるので、時分割カウンタの値が3よりも大きくなると、つまり、時分割カウンタの値が4になると、時分割カウンタの値が0に設定される。したがって、時分割カウンタは発光制御装置スレーブ処理が実行されるたびにインクリメントされ、0→1→2→3→0→・・・と変化する。
ステップ2502の処理で、時分割カウンタの値が最大値以下であると判定された場合、又は、ステップ2503の処理の実行後、演出制御装置550は、図21に示す異常判定テーブル2100から一つのアドレスを選択し、送信先となるI2CI/Oエクスパンダ615を選択する(2504)。
具体的には、演出制御装置550は、図21に示す異常判定テーブル2100のI/Oエクスパンダアドレス2101に登録されたアドレスから一つのアドレスを選択する。ステップ2504の処理で選択されたアドレスのI2CI/Oエクスパンダ615が送信先のI2CI/Oエクスパンダ615となる。
次に、演出制御装置550は、ステップ2504の処理で選択されたI2CI/Oエクスパンダ615が当該マスタIC570に接続されているか否かを判定するめに、図21に示す異常判定テーブル2100を参照し、ステップ2504の処理で選択されたアドレスのエントリに含まれるエラーフラグ2105がONとなっているか否かを判定する(2505)。
ステップ2504の処理で選択されたアドレスのエントリに含まれるエラーフラグ2105がオンであるとステップ2505の処理で判定された場合には、当該アドレスへのデータ送信が比較値2104に登録された値まで連続して失敗しているので、当該アドレスのI2CI/Oエクスパンダ615がマスタIC570に接続されていないと判定する。そして、演出制御装置550は、RPに0を設定する(2506)。
RPは、図26で詳細を説明するが、マスタIC570から送信先となるI2CI/Oエクスパンダ615へのデータ送信が失敗した場合(マスタIC570がI2CI/Oエクスパンダ615からACKの返答信号を受信できなかった場合、又は、CPU551にデータ送信開始から所定時間経過してもマスタIC570から割込信号が入力されなかった場合)に、当該データの再送信回数を決定するものである。
したがって、ステップ2506の処理では、RPに0を設定するので、マスタIC570にI2CI/Oエクスパンダ615が接続されていない場合には、当該I2CI/Oエクスパンダ615へのデータ送信が失敗しても再送信は行わないように設定される。
次に、演出制御装置550は、時分割カウンタの値が0であるか否かを判定する(2507)。
ステップ2507の処理で、時分割カウンタの値が0であると判定された場合、演出制御装置550は、スレーブ連続出力処理を実行して、送信先となるI2CI/Oエクスパンダ615にデータを送信する(2508)。
一方、ステップ2507の処理で、時分割カウンタの値が0でないと判定された場合、スレーブ連続出力処理を実行せずに、ステップ2509の処理に進む。
したがって、マスタIC570に接続されていないI2CI/Oエクスパンダ615へのデータ送信は、発光制御スレーブ出力処理が4回実行されると1回の頻度で行われる。
なお、スレーブ連続出力処理は、図26で詳細を説明する。
ステップ2508の処理で実行されるスレーブ連続処理が終了した場合、又はステップ2507の処理で時分割カウンタが0でないと判定された場合、演出制御装置550は、図21に示す異常判定テーブル2100に登録されたすべてのアドレスに対してデータ送信が終了したか否かを判定する(2509)。
ステップ2509の処理で、図21に示す異常判定テーブル2100に登録されたすべてのアドレスに対してデータ送信が終了していないと判定された場合、演出制御装置550は、図21に示す異常判定テーブル2100に登録されたアドレスのうち、まだデータ送信が行われていないアドレスを選択して(2510)、ステップ2505の処理に戻る。ステップ2509の処理で、図21に示す異常判定テーブル2100に登録されたすべてのアドレスに対してデータ送信が終了していると判定された場合は、ストップコンディションを出力して(2512)、呼び出し元の処理に戻る。
一方、ステップ2504の処理で選択されたアドレスのエントリに含まれるエラーフラグ2105がオフであるとステップ2505の処理で判定された場合には、当該アドレスのI2CI/Oエクスパンダ615がマスタIC570に接続されていると判定する。そして、演出制御装置550は、RPに2を設定し(2511)、ステップ2508の処理に進む。
ステップ2511の処理では、RPに2を設定するので、マスタIC570にI2CI/Oエクスパンダ615が接続されている場合には、当該I2CI/Oエクスパンダ615へのデータ送信が失敗した場合の再送信回数は2回である。
図25の処理では、マスタIC570は、図21に示す異常判定テーブル2100に登録されたすべてアドレスのI2CI/Oエクスパンダ615に対してデータ送信を行う。つまり、マスタIC570に接続可能なすべてのI2CI/Oエクスパンダ615のアドレスに対して、データ送信を行う。
ここで、本実施形態では、図21に示す異常判定テーブル2100に登録されたすべてのアドレスのI2CI/Oエクスパンダ615のうち、一部のI2CI/Oエクスパンダ615のみがマスタIC570に接続されている。
このため、図21に示す異常判定テーブル2100にアドレスが登録されていれば、I2CI/Oエクスパンダ615がマスタIC570に接続されてなくても、マスタIC570はデータを送信する。
これにより、異常判定テーブル2100に登録されたアドレスのI2CI/Oエクスパンダ615であれば、いずれのアドレスのI2CI/Oエクスパンダ615がマスタIC570に接続された場合であっても、接続されたI2CI/Oエクスパンダ615を正確に制御できる。
例えば、設けられる演出装置の種類が互いに異なる第1仕様の遊技機と第2仕様の遊技機(ともに後述)を開発する場合を想定する。設けられる演出装置の種類が異なれば、必然的に設けられるI/Oエクスパンダ615の種類も異なることになる。この場合であっても、異常判定テーブル2100に登録されたすべてのI2CI/Oエクスパンダ615のアドレスに対してデータを送信するプログラムを1種類作成するだけで、第1仕様の遊技機と第2仕様の遊技機の両方に適用が可能となる。よって、第1仕様の遊技機用のプログラム及び第2仕様の遊技機用のプログラムを、各々作成する必要がなくなり、遊技機の製造コストを削減できる。
図25の処理では、マスタIC570に接続されていると判定されたI2CI/Oエクスパンダ615へは、発光制御スレーブ出力処理が実行されるごとにデータが出力されるようにし、一方、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615へは、発光制御スレーブ出力処理が4回実行されると1回の割合でデータが出力される。
このように、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615へのデータ送信頻度を、マスタIC570に接続されていると判定されたI2CI/Oエクスパンダ615へのデータ送信頻度よりも低くする(単位時間当たりの送信回数を少なくする)ので、マスタIC570とI2CI/Oエクスパンダ615との間の全体的なデータ通信量を減少させることができる。
また、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615は、所定回数連続してデータ送信が失敗したと判定されたI2CI/Oエクスパンダ615であるので、一時的に当該I2CI/Oエクスパンダ615に異常(遊技店の営業中に通信不能となった場合など)が発生している可能性も考えられる。またI2CI/Oエクスパンダ615の発生した異常において、何らかの事情(故障したI2CI/Oエクスパンダ615を交換して通信状態が復帰した場合など)により、時間が経過すると当該異常が解消している場合がある。
ここで、本実施形態では、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615へはデータ送信を中止するわけではなく、4回に1回の頻度でデータ送信を行う。このため、異常が発生しているI2CI/Oエクスパンダ615へもデータ送信が行われる。
上述したように、発生した異常が何らかの事情で解消されたI2CI/Oエクスパンダ615は、1バイトのデータを受信すると、返答信号をマスタIC570に出力する。当該返答信号をマスタIC570が受信すると、マスタIC570とI2CI/Oエクスパンダ615との間でデータ送信が正常に行われているので、図21に示す異常判定テーブル2100のエントリのうち、当該I2CI/Oエクスパンダ615のアドレスのエントリに含まれるエラーカウンタ2103には初期値が設定され(図26に示すステップ2620の処理参照)、また、当該エントリに含まれるエラーフラグ2106にオフが登録される。
したがって、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615へのデータ送信を中止しないので、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615に異常が発生している場合であっても、当該I2CI/Oエクスパンダ615の異常が解消すると、当該I2CI/Oエクスパンダ615にいち早く制御を行わせることができる。
図26は、本発明の第1実施形態のスレーブ連続処理のフローチャートである。
スレーブ連続処理は、発光装置に接続されるI2CI/Oエクスパンダ615に演出制御データである発光制御データを送信する処理であり、図25に示すステップ2508の処理で実行される。
なお、発光制御データは、マスタIC570からバッファモードで送信される。バッファモードでは、マスタIC570は、出力用BUF572に格納された複数バイトのデータを、I2CI/Oエクスパンダ615へ1バイト毎送信し、その送信の都度、I2CI/Oエクスパンダ615からACK又はNACKを受信する。そして、NACKを受信した場合には、その時点で、割込信号をCPU551に出力する。
但し、ACKを受信した場合には、出力用BUF572に格納されたすべてのデータが送信完了となった場合にのみ、割込信号をCPU551に出力する。マスタIC570は、出力用BUF572に未送信のデータが残っている状態でI2CI/Oエクスパンダ615からACKを受信したときには、割込信号をCPU551に出力せずに、出力用BUF572から次の送信すべきデータを取り出して、I2CI/Oエクスパンダ615へ出力する。
つまり、バッファモードの場合には、マスタIC570は、出力用BUF572に格納されたデータがI2CI/Oエクスパンダ615にすべて送信されるまでの間は、I2CI/Oエクスパンダ615からACKを受信し続けている限り、CPU551に処理を引き渡すことなく、処理を継続することとなる。
図26に戻って、まず、CPU551は、ACKの返答信号の受信に失敗したことを計数するACKカウンタに0を設定する(2601)。
次に、CPU551は、選択されている装飾制御装置610に出力するデータを生成する(2602)。
そして、CPU551は、ステップ2602の処理で生成されたデータを出力用BUF572に設定するバッファ設定処理を実行する(2603)。設定されるデータは、図19に示す演出制御データのフォーマットとなっており、図に示した送信順序に従って、1バイト毎に区切られながら、I2CI/Oエクスパンダ615へ送信される。
そして、マスタIC570は、接続線SDA及び接続線SCLの信号レベルを、スタート条件を示す信号レベルに変化させる(2604)。
具体的には、マスタIC570は、接続線SCLの信号レベルをHIGHに維持したまま、接続線SDAの信号レベルをHIGHからLOWに変化させることよってスタート条件を示す信号を出力する。
なお、マスタIC570は、スタート条件を示す信号を出力後、制御対象となる装飾制御装置610へデータを送るために、接続線SCLのレベルをLOWに変更する。
次に、CPU551は、マスタIC570へデータ送信の開始を指示した時点から、マスタIC570がCPU551へ割込信号を伝達させるまでの時間を監視するために、バッファモード用の監視タイマの起動を開始する(2605)。以降、この監視時間をバッファモード監視時間ということにする。
そして、マスタIC570は、出力用BUF572に設定されているデータの先頭から、制御対象となる装飾制御装置610のスレーブアドレスに相当する8ビット分のデータを取得し、このアドレスの値を、接続線SCLの信号レベルを変化させながら、接続線SDAを介して出力する(2606)。
ステップ2606の処理で出力されるアドレスデータは8ビットのデータ列であるため、1回の出力処理(接続線SCLが8回HIGHに変化する間の出力)でアドレスデータが出力される。
なお、マスタIC570は、このスレーブアドレスを出力する際に、一旦、ドライバ576Aをオフさせて接続線SDAを解放する(ハイレベルに変化させる)動作を行う。そして、接続線SDAが解放されていない場合には、このスレーブアドレスの出力は、接続線SDAが開放されるまで待機する。
ステップ2606の処理で出力されたアドレスデータがI2CI/Oエクスパンダ615に入力された場合、I2CI/Oエクスパンダ615は、入力されたアドレスデータと自身に設定されているアドレスとが一致するか否かを判定する。
入力されたアドレスデータと一致するアドレスが設定されているI2CI/Oエクスパンダ615は、接続線SCLのLOWからHIGHへの変更回数が8回目になった直後であって、そのHIGHレベルとなっている接続線SCLがLOWレベルへと変化することを契機として、返答信号を接続線SDAからマスタIC570に出力する。
次に、マスタIC570は、ステップ2605の処理でアドレスデータが出力されてから所定時間以内にACKの返答信号がマスタIC570に入力されたか否かを確認する(2607)。
次に、マスタIC570は、ステップ2606の処理の確認結果に基づいて、ステップ2602の処理でアドレスデータが出力されてから所定時間以内にACKの返答信号が入力されているか否かを判定する(2608)。
ステップ2605の処理でアドレスデータが出力されてから所定時間以内にACKの返答信号が入力されていないと、ステップ2608の処理で判定された場合には、マスタIC570は、ステータスREG579に返答信号がNACKであった旨の情報を設定したうえで、割込信号を発生させる。これにより、I2CI/Oエクスパンダ615からNACKの返答信号を受信したことが、CPU551に通知される。このとき、CPU551は、バイトモードの時間監視を終了する(2609)。
CPU551は、ステップ2609で割込信号を受けつけると、マスタIC570に対して、指示されたマスタIC570は、接続線SDA及び接続線SCLの信号レベルを制御して、ストップ条件を発行する(2610)。その後、ACKカウンタがRP以上であるか否かを判定する(2611)。
ステップ2611の処理で、ACKカウンタがRPよりも小さいと判定された場合、ACKの返答信号の受信に失敗したことを計数するためにACKカウンタを+1更新し(2612)、同じデータを当該装飾制御装置610に再度送信するために、ステップ2602の処理に戻る。
一方、ステップ2611の処理で、ACKカウンタがRP以上であると判定された場合、CPU551は、異常判定テーブル2100に登録されたエントリのうち、I/Oエクスパンダアドレス2101が選択された装飾制御装置610のI2CI/Oエクスパンダ615のアドレスと一致するエントリを選択し、選択されたエントリのエラーカウンタ2103をインクリメントする(2613)。
ここで、RPには、0又は2の値が設定され得る。I2CI/Oエクスパンダ615がマスタIC570に接続されていないと判定された場合、RPには0が設定されるので、ステップ2611の処理でACKカウンタがRPよりも少ないと判定されることはない。よって、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615へのデータ送信が失敗しても、当該I2CI/Oエクスパンダ615へのデータの再送信を行わない。
一方、I2CI/Oエクスパンダ615がマスタIC570に接続されていないと判定された場合、RPには2が設定されるので、I2CI/Oエクスパンダ615へのデータの再送信を最大2回行う。
なお、本実施形態では、I2CI/Oエクスパンダ615がマスタIC570に接続されていないと判定された場合、当該I2CI/Oエクスパンダ615へのデータ再送信が行わないとしたが、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615へのデータの再送信回数が、マスタIC570に接続されていると判定されたI2CI/Oエクスパンダ615へのデータの再送信回数よりも少なくなるようにすればよい。
このように、図26の処理では、マスタIC570に接続されていないと判定されたI2CI/Oエクスパンダ615へのデータの再送信回数が、マスタIC570に接続されていると判定されたI2CI/Oエクスパンダ615へのデータの再送信回数よりも少なくなるので、マスタIC570とI2CI/Oエクスパンダ615との間のデータ通信量を全体的に減少させることができる。
ステップ2612の処理の実行後、CPU551は、ステップ2612の処理でインクリメントされたエラーカウンタ2103の値が比較値2104に達しているか否かを判定する(2614)。
ステップ2613の処理でインクリメントされたエラーカウンタ2103の値が比較値2104に達していると、ステップ2614の処理で判定された場合、CPU551は、異常判定テーブル2100に登録されたエントリのうち、選択された装飾制御装置610のエントリのエラーフラグをONに設定し(2615)、スレーブ連続出力処理を終了する。
一方、ステップ2613の処理でインクリメントされたエラーカウンタ2103の値が比較値2104に達していないと、ステップ2613の処理で判定された場合、スレーブ連続出力処理を終了する。
一方、ステップ2602の処理でアドレスデータが出力されてから所定時間以内にACKの返答信号が入力されたと、ステップ2608の処理で判定された場合には、マスタIC570は、出力用BUF572に記憶されているすべてのデータを出力したか否かを判定する(2616)。
ステップ2616の処理で、出力用BUF572に記憶されているすべてのデータを出力したと判定された場合には、マスタIC570は、ステータスREG579に返答信号がACKであった旨の情報を設定したうえで、割込信号を発生させる。これにより、I2CI/Oエクスパンダ615への全バイトデータの送信を完了したことが、CPU551に通知される。このとき、CPU551は、バッファモードの時間監視を終了する(2619)。
そして、CPU551は、ステップ2619の処理の実行後に、異常判定テーブル2100に登録されたエントリのうち、I/Oエクスパンダアドレス2101が選択された装飾制御装置610のI2CI/Oエクスパンダ615のアドレスと一致するエントリを選択し、選択されたエントリのエラーカウンタ2103をゼロに初期化し(2620)、当該エントリのエラーフラグ2105をオフに設定し(2621)、スレーブ連続出力処理を終了する。
一方、ステップ2616の処理で、出力用BUF572に記憶されているすべてのデータを出力していないと判定された場合には、マスタIC570は、接続線SDAの電圧レベルを監視し、接続線SDAが開放されていることを確認してから(2617)、出力用BUF572に記憶されたデータのうち次に送信すべき1バイトのデータを送信し(2618)、ステップ2607の処理に進む。
以上より、発光制御データは、1バイトのデータを出力するごとに(つまり、発光制御データを送信する途中で)、返答信号の受信が監視されるものの、マスタIC570へACKの返答信号が入力されている限り、出力用BUF572に記憶されている全てのデータが送信完了となるまでマスタIC570からCPU551へ処理を引き渡さない構成となっているバッファモードで送信される。
ここで、共通アドレスを含む初期化指示データは、バイトモードで送信されており、図24に示すように1バイトのデータの送信を開始するごとに、その都度、マスタIC570からCPU551へ割込信号が返ってくるまでの時間(バイトモード監視時間)が監視されている。
一方、個別アドレスとなるスレーブアドレスを含む発光制御データは、バッファモードで送信されており、図26に示すように、出力用BUF572に保存されている、先頭バイトのデータ送信の開始から、最終バイトのデータ送信の終了までの時間(バッファモード監視時間)が監視されている。
本実施形態では、演出制御装置550から装飾制御装置610へデータを送信する場合に、前述したバイトモード若しくはバッファモードの何れかのモードを選択する。ここで、バイトモード及びバッファモードの特徴について説明する。
バイトモードでは、マスタIC570から送信された1バイトのデータに対して、装飾制御装置610から如何なる返答信号が入力されても(ACKでもNACKでも)、直ちに割込信号がマスタIC570からCPU551へ伝達される。このとき、バイトモード監視時間には、1バイトのデータ送信と返答信号の受信に要する時間に合わせた時間値が設定されている。
CPU551は、装飾制御装置610からマスタIC570へACKの返答信号が伝達された場合に、1バイトのデータ送信が成功したと判断して、次の処理を行う。一方で、CPU551は、装飾制御装置610からマスタIC570へNACKの返答信号が伝達された場合に、或いは、バイトモード監視時間がタイムアウトした場合に、データ送信に異常が発生したものと判断して、必要な処理を行う。
これに対して、バッファモードでは、マスタIC570から送信された1バイトのデータに対して、装飾制御装置610からNACKの返答信号が入力された場合に限り、直ちに割込信号がマスタIC570からCPU551へ伝達される。しかしながら、装飾制御装置610からACKの返答信号が入力された場合には、出力用BUF572に保存されているデータが全て送信されたタイミングでないと、割込信号がマスタIC570からCPU551へ伝達されず、マスタIC570は、出力用BUF572に保存されているデータを次々と送信する処理を行うことになる。
そのため、バッファモードによるデータ送信では、バイトモードのときと比較して、割込信号がマスタIC570からCPU551へ伝達される回数が少なくなるため、マスタIC570からCPU551へ処理を引き渡す回数が少なくなり、複数バイトのデータを送信するときの全体的な送信時間を短縮することができる。
その一方で、バッファモードでは、装飾制御装置610からACKの返答信号が入力され続ける限り、送信すべきデータの全てが送信完了となるまで、マスタIC570からCPU551へ処理が引き渡されない。そのため、データ送信中に、何らかの理由で、接続線SDAを用いてデータ送信ができない状態が発生すると、その都度、マスタIC570によってデータ送信が中断され、マスタIC570からCPU551へ処理が引き渡されるまでの時間が、非常に長くなってしまう恐れもあり得る。
なお、マスタIC570からCPU551へ処理が引き渡されるまでの時間を監視するために、前述のバッファモード監視時間には、送信する全バイトのデータ送信と返答信号の受信に要する時間に合わせた時間値が設定されている。必然的に、このバッファモード監視時間は、前述のバイトモード監視時間よりも長い時間が設定されることになる。
CPU551は、装飾制御装置610からマスタIC570へACKの返答信号が伝達された場合に、送信すべき全バイトのデータ送信が成功したと判断して、次の処理を行う。一方で、CPU551は、装飾制御装置610からマスタIC570へNACKの返答信号が伝達された場合に、或いは、バッファモード監視時間がタイムアウトした場合に、データ送信に異常が発生したものと判断して、必要な処理を行う。
以上のことから、データ送信に関して全く異常が発生しないという前提であれば、複数バイトのデータ(必然的に送信単位である8ビットよりも長いビット数のデータとなる)を送信する場合には、バッファモードを用いたデータ送信の方が、バイトモードを用いたデータ送信よりも高速な処理を行えるのは確かである。しかしながら、データ送信時に異常が発生する可能性を考慮すると、バイトモードにはデータ送信の完了を1バイト毎に確認しながら処理を行えるという利点を有するので、どちらのモードが優れているのかは単純には比較できない。
本実施形態では、初期化指示データをバイトモードで送信し、発光制御データをバッファモードで送信しており、そのような構成により奏する効果について説明する。
まず、共通アドレスを含む初期化指示データに対しては、共通アドレスが予め割り当てられたすべての装飾制御装置610からACKの返答信号が出力される。一方、個別アドレスを含む発光制御データに対しては、個別アドレスが予め割り当てられた一つの装飾制御装置610からACKの返答信号が出力される。
このため、初期化指示データを送信した場合には複数の装飾制御装置610から返答信号が出力されるので、初期化指示データの1バイトのデータを送信した後の接続線SDAが解放されるまでの待機時間は、当該複数の装飾制御装置610の全てが接続線SDAを開放するまでの時間に依存する。これに対して、発光制御データの1バイトのデータを送信した後の接続線SDAが解放されるまでの待機時間は、送信対象の一つの装飾制御装置610のみが接続線SDAを開放するまでの時間に依存する。従って、前者の方が接続線SDAが解放されるまでの待機時間が長くなる。
なお、初期化指示データは、共通アドレスのデータ2001、第1所定値のデータ2002、及び第2所定値のデータ2003というように3回に分けて送信される。さらに、この3種類の初期化指示データが正確に装飾制御装置610に伝達されない場合には、装飾制御装置610を確実に初期化するために、何度でも初期化指示データの送信を繰り返す処理が行われる。
ここで、バッファモードを用いて初期化指示データを送信した場合と、バイトモードを用いて初期化指示データを送信した場合とを比較する。それぞれのモードにおいて、最初の共通アドレスのデータ2001の送信後、又は次の第1所定値のデータ2002の送信後に、何らかの理由によって、接続線SDAが解放されない異常状態が発生した場合を想定するとどうなるかを説明する。
初期化指示データがバッファモードで送信されると、バッファモード監視時間には、共通アドレスのデータ2001の送信開始から第2所定値のデータ2003の送信によるACKの受信までの、少なくとも3バイト分のデータ送信に必要な時間が設定されなければならない。このため、初期化指示データをバッファモードで送信するようにした場合には、接続線SDAが解放されない異常が発生すると、CPU551は、バッファモード監視時間のタイムアップを待つことになる。
一方、初期化指示データがバイトモードで送信されると、バイトモード監視時間には、少なくとも1バイト分のデータ送信に必要な時間が設定されなければならない。このため、初期化指示データをバイトモードで送信するようにした場合には、接続線SDAが解放されない異常が発生すると、CPU551は、バイトモード監視時間のタイムアップを待つことになる。
このため、初期化指示データをバッファモードで送信するようにした場合には、接続線SDAが解放されない異常が発生すると、CPU551は、長いタイムアップ時間の経過を待ってから異常解除をすることになるので、却って非効率なデータ送信を行うことになってしまう。
一方、初期化指示データをバイトモードで送信するようにした場合には、接続線SDAが解放されない異常が発生しても、CPU551は、短いタイムアップ時間の経過を待ってから異常解除をするとになるので、無駄な時間を抑制でき、効率的なデータ送信を行うことができる。
このため、本実施形態では、初期化指示データをバイトモードで送信するようにしたので、接続線SDAが解放されない異常をいち早く検出できるようにしたので、結果としてデータ送信の時間を短縮できる。
特に、前述したように、初期化指示データは複数の装飾制御装置610に送信され、これらの装飾制御装置610から全ての返答信号が出力されることを監視するので、接続線SDAが解放されるまでの待機時間が長くなる傾向にあり、監視時間自体を長めに設定する必要があることから、バイトモードを用いて時間監視を行うことが好ましい。
一方で、本実施形態では、発光制御データはバッファモードで送信される。これは、上述したように、バッファモードによるデータ送信では、バイトモードのときと比較して、割込信号がマスタIC570からCPU551へ伝達される回数が少なくなるため、マスタIC570からCPU551へ処理を引き渡す回数が少なくなり、複数バイトのデータを送信するときの全体的な送信時間を短縮することができるからである。
なお、発光制御データをバッファモードで送信し、何らかの理由によって、接続線SDAが解放されない異常状態が発生した場合には、バッファモード監視時間のタイムアップを待って異常を解除し、1回だけ装飾制御装置610へ発光制御データを再送する。もし、2回連続して発光制御データの送信異常が発生した場合には、発光制御データの送信を中止する。
したがって、発光制御データを送信する場合には、接続線SDAが解放されない異常を検出するまでの無駄な時間を減少させるよりも割込信号が出力される回数を減少させてCPU551にかかる処理負荷を軽減させたほうがデータ送信の時間が短縮できるので、発光制御データは割込信号が出力される回数がバイトモードよりも少ないバッファモードで送信されるようにしている。
また、図24に示すように、初期化指示データにおいては、接続線SDAが解放されずタイムアウトが発生した場合、又は、1バイトのデータに対する返答信号がマスタIC570に入力されなかった場合には、初期化指示データの最初のデータ(共通アドレスを含むデータ2001)から再送信を行い、初期化指示データがI2CI/Oエクスパンダ615によって受信されるまで当該再送信が繰り返し行われるので、初期化指示データは正確にI2CI/Oエクスパンダ615に受信されるので、正確にI2CI/Oエクスパンダ615を初期化できる。また、図26に示すように、発光制御データにおいては、接続線SDAが解放されずタイムアウトが発生した場合、又は、1バイトのデータに対する返答信号がマスタIC570に入力されなかった場合には、発光制御データの最初のデータから再送信を1回のみ行うので、高速なデータ送信が可能となる。
I2CI/Oエクスパンダ615の初期化は異常発生時において発生した異常を解消するために行う処理であるため、確実に初期化が行われるように、初期化指示データがI2CI/Oエクスパンダ615に確実に受信されるまで再送信を繰り返し行うようにしている。これに対して、発光制御データはI2CI/Oエクスパンダ615に受信されなくとも発光装置の出力態様が前回の出力態様で停止するのみであるので、データ送信の高速性を重視して、1回のみ再送信を行うようにしている。
図27は、本発明の第1実施形態のI2C随時リセット処理のフローチャートである。
I2C随時リセット処理は、マスタIC570、役物駆動MOT561、マスタIC570に接続されたすべてのI2CI/Oエクスパンダ615、及び役物駆動SOL560の初期化を指示する処理であり、図22に示すステップ2210の処理である。
まず、演出制御装置550は、リセット要求フラグがオンであるか否かを判定する(2701)。
ステップ2701の処理でリセット要求フラグがオンでないと判定された場合、演出制御装置550は、リセットを指示する条件が成立しているか否かを判定するために、異常判定テーブル2100を参照して、マスタIC570に接続されるI2CI/Oエクスパンダ615のうち、装飾装置が接続されたすべてのI2CI/Oエクスパンダ615から所定回数連続してACKの返答信号を受信できなかったか否かを確認する(2702)。
具体的には、演出制御装置550は、異常判定テーブル2100に登録されたすべてのエントリのエラーフラグ2105にオンが登録されているか否かを判定する。
次に、演出制御装置550は、ステップ2702の処理の確認結果に基づいて、リセット条件が成立しているか否かを判定する(2703)。
具体的には、ステップ2702の処理の時点ですべてのエラーフラグ2105がONになっている場合(エラーフラグ2105がOFFとなっている発光制御装置が存在しない場合)には、ステップ2703の処理でリセット条件が成立しているとみなされる。その他の場合は、ステップ2703の処理でリセット条件が成立していないとみなされる。
ステップ2703の処理で、リセット条件が成立しているとみなされた場合、演出制御装置550は、初期化中であることを示すリセット要求フラグを設定する(2704)。
そして、演出制御装置550は、マスタIC570をソフトリセットする(2705)。具体的には、CPU551が、データバスを介してマスタIC570に備わるリセットREG573に所定の値を書き込む。マスタIC570に備わるリセットREG573に所定の値が書き込まれると、マスタIC570のコントローラは、入力用BUF571、出力用BUF572、リセットREG573、及び送信モードREG574の値を初期値に設定し、マスタIC570を初期化する。CPU551がデータバスを介してマスタIC570に備わるリセットREG573に所定の値を書き込むことによって、マスタIC570を初期化することをソフトリセットという。
本実施形態では、マスタIC570をハードリセットすると、前述したように、演出制御装置550に備わっている他の回路(VDP556や音LSI557などの電源投入時に初期化される回路)も初期化してしまうが、マスタIC570に異常が発生したと判定された場合には、このようなソフトリセットを行うことで、異常が発生したマスタICのみに対してリセットを行い、マスタIC570と直接関係のない回路までもリセットしてしまうことを防止する。
次に、演出制御装置550は、マスタIC570に接続されたすべての装飾制御装置610のI2CI/Oエクスパンダ615を初期化するために、マスタIC570からリセット信号を出力する図24に示すスレーブリセット処理を実行する(2706)。
このように、マスタIC570が初期化されると、当該マスタIC570に接続されたすべてのI2CI/Oエクスパンダ615に対して初期化指示データを送信するので、確実に遊技機1を初期化することができる。
そして、演出制御装置550は、役物駆動MOT561が初期化中であることを示すモータ初期化フラグを設定し(2707)、役物駆動MOT561を初期化する場合に役物駆動MOT561に出力されるモータ出力データをRAM553に設定する(2708)。そして、演出制御装置550は、役物駆動SOL560を初期化するために、役物駆動SOL560の通電状態を非通電状態にするオフデータをRAM553に設定し(2709)、リセット要求フラグを解除して(2710)、I2C随時リセット処理を終了する。
ステップ2701の処理で、リセット要求フラグが設定されていると判定された場合には、初期化をすぐに実行しなければならないので、リセット条件が成立しているか否かを判定せずに、ステップ2705の処理に進む。
また、ステップ2704の処理で、リセット条件が成立していないと判定された場合、初期化を行う必要はないので、ステップ2710の処理に進み、リセット要求フラグを解除し、I2C随時リセット処理を終了する。
このように、リセット条件が成立したと判定された場合には、ステップ2706の処理で、マスタIC570に接続されるすべてのI2CI/Oエクスパンダ615に対して、同時に初期化を指示するので、言い換えれば、すべてのI2CI/Oエクスパンダ615を同時に選択して初期化することになるので、I2CI/Oエクスパンダ615を個別に選択して初期化を指示する方法と比較すると、高速に初期化を行うことができ、I2CI/Oエクスパンダ615を正常な状態へ高速に復帰させることができる。
なお、すべてのI2CI/Oエクスパンダ615へ入力されるRESET端子(図7参照)とCPU551とを電気的に接続し、CPU551から一斉に、全てのI2CI/Oエクスパンダ615のRESET端子へリセット信号を送信する構成としても、全てのI2CI/Oエクスパンダ615を同時に選択して初期化することは可能である。
なお、ステップ2702の処理でリセット条件成立とみなされた場合は、マスタIC570において異常が発生していることが考えられるので、ステップ2705の処理でマスタIC570も初期化するようにしている。
マスタIC570は、CPU551からの指令によって、接続線SDA及び接続線SCLの信号レベルを制御する信号レベル制御手段として機能しているので、すべての発光制御装置にてデータ送信に関する異常が発生している場合には、マスタIC570自身に異常が発生していることも考えられる。
そのため、すべての装飾制御装置610にてデータ送信に関する異常が発生している場合には、念のために、CPU551(演算処理手段)によりマスタIC570が初期化される。これにより、マスタIC570で異常が発生している場合であっても確実にマスタIC570を制御可能にすることができる。
また、図22に示すように、表示装置53の画像を更新する周期と同期して、演出制御装置550のマスタIC570からI2CI/Oエクスパンダ615へ発光制御データを送信し、I2CI/Oエクスパンダ615は受信した発光制御に基づいて発光装置を制御するので、表示装置53における演出と発光装置における演出とが調和し、遊技者に違和感を与えないので、興趣を高めることができる。
また、表示装置53の画像を更新する周期と同期してマスタIC570から送信された発光制御データが装飾制御装置610で受信されると、その都度、I2CI/Oエクスパンダ615によってワークレジスタの値が更新される。そのため、毎回ワークレジスタの値が最新の状態に更新されるので、ノイズ等でワークレジスタの値が破壊されても、正常な値に復帰することが可能である。
また、表示装置53の画像を更新する周期と同期して、エラー判定処理を実行するので、エラー判定の実行頻度を適切にできる、つまり、エラー判定処理の実行頻度が高すぎる(単位時間当たりの実行回数が多すぎる)と、演出制御装置550のCPU551の処理負荷が増大してしまい、逆に、エラー判定処理の実行頻度が低すぎる(単位時間当たりの実行回数が少なすぎる)と、異常が発生したことを適切に検出できなくなってしまうことになるので、適度な頻度でエラー判定を行うことにより処理の不具合を防止することができる。
図28は、本発明の第1実施形態のタイマ割込が発生した場合に実行されるタイマ割込処理のフローチャートである。
タイマ割込は、タイマ割込が許可されているという条件の下で、2ms周期で発生するタイマ割込をCPU551が受け付けた場合に、図22に示す処理に割り込む形態で実行される。
タイマ割込処理は、役物駆動MOT561及び役物駆動SOL560(可動物)に接続されたI2CI/Oエクスパンダ615(可動制御装置)へ制御データを出力し、可動物を制御する処理である。
まず、演出制御装置550は、リセット要求フラグが設定されているか否かを判定する(2801)。
ステップ2801の処理で、リセット要求フラグが設定されていると判定された場合には、可動制御装置を含む装飾制御装置600のリセット処理が開始するのを待機している状態であるので、タイマ割込処理を終了する。
一方、ステップ2801の処理で、リセット要求フラグが設定されていないと判定された場合には、制御対象となる可動制御装置を選択し(2802)、ステップ2802の処理で選択された可動制御装置へ、演出制御データである可動制御データを送信するスレーブ単発出力処理を実行する(2803)。スレーブ単発出力処理は、図29で詳細を説明する。
次に、演出制御装置550は、ステップ2803の処理で実行されたスレーブ単発出力処理が正常に終了したか否かを判定する(2804)。スレーブ単発出力処理では、ステップ2802の処理で選択された可動制御装置へ1回目のデータ出力が失敗し、さらに2回目のデータ出力も失敗した場合には、異常終了する。
ステップ2804の処理で、スレーブ単発出力処理が正常に終了していないと判定された場合、つまり、スレーブ単発出力処理が異常終了したと判定された場合、演出制御装置550は、役物駆動MOT561が初期化中であることを示すモータ初期化フラグを設定し(2805)、装飾制御装置600のリセット処理を開始するためにリセット要求フラグを設定する(2806)。
そして、演出制御装置550は、役物駆動MOT561を初期化する場合に可動制御装置に出力されるモータ出力データをRAM553に設定し(2807)、役物駆動SOL560を初期化する場合に可動制御装置に出力される、役物駆動SOL560の通電状態を非通電状態にするオフデータをRAM553に設定し(2808)、タイマ割込処理を終了する。
一方、ステップ2804の処理で、スレーブ単発出力処理が正常に終了したと判定された場合、役物駆動MOT561の初期化を実行するか否かを判定するために、モータ初期化フラグが設定されているか否かを判定する(2809)。
ステップ2809の処理で、モータ初期化フラグが設定されていると判定された場合には、モータ位置検出センサ510が役物駆動MOT561の回転軸が初期位置に戻ったことを検出したか否かを判定する(2810)。
ステップ2810の処理で、モータ位置検出センサ510が役物駆動MOT561の回転軸が初期位置に戻ったことを検出していないと判定された場合、ステップ2807の処理に進み、役物駆動MOT561を初期化する場合に可動制御装置に出力されるモータ出力データをRAM553に設定する。
一方、ステップ2810の処理で、モータ位置検出センサ510が役物駆動MOT561の回転軸が初期位置に戻ったことを検出したと判定された場合、役物駆動MOT561の回転を停止させる停止データを可動制御装置に出力するために、RAM553に設定し(2811)、役物駆動MOT561の初期化が完了したので、モータ初期化フラグを解除し(2812)、タイマ割込処理を終了する。
ステップ2809の処理で、モータ初期化フラグが設定されていないと判定された場合には、演出制御装置550は、役物駆動MOT561で動作異常が検出されたか否かを判定する(2813)。
ステップ2813の処理で、役物駆動MOT561で動作異常が検出されたと判定された場合には、役物駆動MOT561を初期化するために、ステップ2805の処理に進む。
一方、ステップ2813の処理で、役物駆動MOT561で動作異常が検出されていないと判定された場合には、演出制御装置550は、役物駆動MOT561の回転軸を目標値まで回転させるための制御データを可動制御装置に出力するために、RAM553に設定し(2814)、役物駆動SOL560を通電状態にするか非通電状態にするかを示すソレノイド出力データを可動制御装置に出力するために、RAM553に設定し(2815)、タイマ割込処理を終了する。
図29は、本発明の第1実施形態のスレーブ単発出力処理のフローチャートである。
スレーブ単発出力処理は、可動制御装置に可動制御データを送信する処理であり、図28に示すステップ2803の処理で実行される。
可動制御データは、マスタIC570からバイトモードで送信される。バイトモードでは、マスタIC570は、I2CI/Oエクスパンダ615へデータを1バイト送信する毎に、I2CI/Oエクスパンダ615からACK又はNACKを受信し、ACK及びNACKの何れを受信した場合でも、割込信号をCPU551に出力する。つまり、マスタIC570からI2CI/Oエクスパンダ615へ1バイトのデータを送信することが完了すれば、ACK/NACKの受信に拘らず、必ず、マスタIC570からCPU551へ割込信号が出力される。
まず、CPU551は、ACKの返答信号の受信に失敗したことを計数するACKカウンタに0を設定する(2901)。
そして、マスタIC570は、接続線SDA及び接続線SCLの信号レベルを、スタート条件を示す信号レベルに変化させる(2902)。
具体的には、マスタIC570は、接続線SCLの信号レベルをHIGHに維持したまま、接続線SDAの信号レベルをHIGHからLOWに変化させることよってスタート条件を示す信号を出力する。
なお、マスタIC570は、スタート条件を示す信号を出力後、制御対象となる装飾制御装置610へデータを送るために、接続線SCLのレベルをLOWに変更する。
次に、CPU551は、送信対象として選択されている可動制御装置のアドレスデータを出力用BUF572に設定する(2903)。
そして、CPU551は、マスタIC570へデータ送信の開始を指示した時点から、マスタIC570がCPU551へ割込信号を伝達させるまでの時間を監視するために、バイトモード用の監視タイマの起動を開始する(2904)。
CPU551は、バイトモード時間の監視を開始してから所定時間経過しても、割込信号を受け付けていない場合には、データ送信を中断するために、マスタIC570にストップ条件を出力させ(2912)、その後、ACKカウンタの値を一つ加算して、ステップ2902の処理に戻り、再度マスタIC570にスタート条件を出力させてから、可動制御データを初めのデータ(可動制御装置のアドレス)から送信する。ただし、ACKカウンタの値がステップ2913の時点で所定値(例えば「1」)となっている場合には、処理を終了する。
そして、CPU551は、ステップ2902の処理で出力用BUF572に設定されたアドレスデータを送信する指令をマスタIC57に出力し、マスタIC570は、当該指令を受け付けると、ステップ2902の処理で出力用BUF572に設定されたアドレスデータを、接続線SCLの信号レベルを変化させながら、接続線SDAを介してI2CI/Oエクスパンダ615に送信する(2905)。マスタIC570は、このアドレスデータを出力する際に、一旦、ドライバ576Aをオフさせて接続線SDAを解放する(ハイレベルに変化させる)動作を行う。そして、接続線SDAが解放されていない場合(ドライバ576Aをオフしても、接続線SDAがハイレベルにならずロウレベルのままで維持されているとき)には、このアドレスデータの出力は、接続線SDAが開放される(接続線SDAがハイレベルになる)まで待機する。
ステップ2905の処理で出力されるアドレスデータは8ビットのデータ列であるため、1回の出力処理(接続線SCLが8回HIGHに変化する間の出力)でアドレスデータが出力される。
ステップ2905の処理で出力されたアドレスデータがI2CI/Oエクスパンダ615に入力された場合、I2CI/Oエクスパンダ615は、入力されたアドレスデータと自身に設定されているアドレスとが一致するか否かを判定する。
入力されたアドレスデータと一致するアドレスが設定されているI2CI/Oエクスパンダ615は、接続線SCLのLOWからHIGHへの変更回数が8回目になった直後であって、そのHIGHレベルとなっている接続線SCLがLOWレベルへと変化することを契機として、返答信号を接続線SDAからマスタIC570に出力する。
次に、マスタIC570は、1バイト分のデータ出力完了から、所定時間(前述したバイトモード監視時間よりも短い監視時間となっている)以内にACKの返答信号がマスタIC570に入力されたか否かを確認する(2906)。
次に、マスタIC570は、ステップ2906の処理の確認結果に基づいて、ステップ2905の処理でアドレスデータが出力されてから所定時間以内にACKの返答信号が入力されているか否かを判定する(2907)。
ステップ2905の処理でアドレスデータが出力されてから所定時間以内にACKの返答信号が入力されていないと、ステップ2907の処理で判定された場合には、マスタIC570は、ステータスREG579に返答信号がNACKであった旨の情報を設定したうえで、割込信号を発生させる。これにより、I2CI/Oエクスパンダ615からNACKの返答信号を受信したことが、CPU551に通知される。このとき、CPU551はバイトモードの時間監視を終了する(2911)。
次いで、CPU551は、データ送信を中断するために、マスタIC570にストップ条件を出力させ(2912)、ACKカウンタが所定値であるか否かを判定する(2913)。
ステップ2912の処理で、ACKカウンタが所定値であると判定された場合、スレーブ単発出力処理を異常終了する。
一方、ステップ2913の処理で、ACKカウンタが所定値でないと判定された場合、ACKカウンタをインクリメントし、ステップ2902の処理に戻り、再度マスタIC570にスタート条件を出力させてから、再度同じ可動制御データを出力する(可動制御装置のアドレスから再出力する)。
一方、ステップ2905の処理で、1バイト分のデータ出力完了から、所定時間以内にACKの返答信号が入力されたと、ステップ2907の処理で判定された場合には、マスタIC570は、ステータスREG579に返答信号がACKであった旨の情報を設定したうえで、割込信号を発生させる。これにより、I2CI/Oエクスパンダ615からACKの返答信号を受信したことが、CPU551に通知される。このとき、CPU551はバイトモードの時間監視を終了する(2908)。
次に、CPU551は、可動制御装置に出力すべきデータをすべて出力したか否かを判定する(2909)。
ステップ2909の処理で、可動制御装置に出力すべきデータをすべて出力したと判定された場合、接続線SDA及び接続線SCLの信号レベルを、ストップ条件を示す信号レベルに変化させて(2910)、スレーブ単発出力処理を正常終了する。
一方、ステップ2909の処理で、可動制御装置に出力すべきデータを未だ出力していないと判定された場合、CPU551は、可動制御装置に出力すべき次の1バイト分のデータを出力用BUF572に設定する(2915)。
次に、CPU551は、マスタIC570へデータ送信の開始を指示した時点から、マスタIC570がCPU551へ割込信号を伝達させるまでの時間を監視するために、バイトモード用の監視タイマの起動を開始する(2916)。
1バイトのデータを送信してからマスタIC570から当該1バイトのデータに対するACKである返答信号が入力されたか否かを通知するための割込が発行されるまでの時間(バイトモード時間)の監視を開始する(2916)。
前述したように、CPU551は、バイトモード時間の監視を開始してから所定時間経過しても、割込信号を受け付けていない場合には、データ送信を中断するために、マスタIC570にストップ条件を出力させ(2912)、その後、ACKカウンタの値を1つ加算して、ステップ2902の処理に戻り、再度マスタIC570にスタート条件を出力させてから、可動制御データを初めのデータ(可動制御装置のアドレス)から送信する。ただし、ACKカウンタの値がステップ2913の時点で所定値となっている場合には、処理を終了する。
次に、マスタIC570は、接続線SDAの電圧レベルを監視し、接続線SDAが解放されていることを確認してから(2917)、出力用BUF572に設定された1バイトのデータを出力し(2918)、ステップ2906の処理に進む。ステップ2917の処理は、グループ単位制御手段からの返答信号の出力が終了するまでは、接続線SDAが返答信号により占有されているので、マスタIC570は、グループ単位制御手段からの返答信号の出力が終了し、接続線SDAが解放されるまで待機する処理である。I2C
以後、可動制御データを順に送信し、全ての可動制御データの送信が完了すると、前述したようにステップ2910の処理を経て、正常終了する。
送信される可動動制御データの順序は、発光制御データと同様に図19に示すフォーマットとなっているが、可動動制御データはバイトモードで送信されるため、図19に示すフォーマットの全データを、一度に出力用BUF572に設定するのではなく、先頭から1バイト毎に区切って、出力用BUF572に設定しながら、データの送信を行う。そのため、図19に示すフォーマットの全データ(モータやソレノイドの制御データを含んでいる)は、RAM553に一時的に記憶されることになる。
これにより、I2C可動制御装置が制御する役物駆動MOT561及び役物駆動SOL560は、VDP割込(約33.3ms周期)に同期して可動制御データを出力するのでは、演出に合わせて可動部材を制御できないため、VDP割込よりも周期の短いタイマ割込(2ms周期)に同期して可動制御データが出力されるようにしている。これによって、遊技状態に合わせた可動部材による演出を行うことができる。
また、可動制御データは、図29に示すように、バイトモードで送信される。これは、接続線SDAが解放されない異常が発生した場合には可動制御装置が制御できなくなり、役物駆動MOT561が予め設定されている可動部材の可動可能な範囲を超えて可動部材を可動させるおそれがあるので、バイトモード監視時間による短時間のタイムアップ監視を行って、接続線SDAが解放されない異常を即座に検出するためである。
図26、及び図29による処理では、マスタIC570は、8ビットのデータを出力後に、装飾制御装置610からの返答信号を取り込むことにより、データ転送の成否を判定し、データ転送が失敗している場合(つまり、NACKの返答信号がマスタIC570に入力された場合)、出力したデータを1回だけ再度出力するので、装飾制御装置610にデータを可能な限り確実に出力することができ、演出装置の誤動作を防止できる。
なお、マスタIC570がスタート条件を送信する際には、接続線SDAがHIGHになっている必要があるが、ノイズ等の影響によって、接続線SDAがLOWとなったまま変化しない状態が発生する場合がある。
本実施形態では、マスタIC570が装飾制御装置610のI2CI/Oエクスパンダ615に送信するスレーブアドレスには、R/W識別データが「0」(書き込みを意味する)となっているものだけを用いている(図11参照)が、ノイズ等の影響によって、R/W識別データが「1」(読み出しを意味する)となった状態で、I2CI/Oエクスパンダ615へ伝わることがある。
この場合、I2CI/Oエクスパンダ615は読み出しモードとなり、マスタIC570によって接続線SCLの信号レベルが変化することに対応して、I2CI/Oエクスパンダ615からマスタIC570へ、接続線SDAを介してデータを1ビットごと伝送する処理を行う。
このとき、I2CI/Oエクスパンダ615は、8ビットのデータを伝送するごとに、マスタIC570から接続線SDAを介してアクノリッジ信号を受信する処理を行い、アクノリッジ信号を受信するとさらに8ビットのデータ伝送を行い、以後、この8ビットのデータ伝送とアクノリッジ信号の確認を繰り返すが、この間は、接続線SDAがI2CI/Oエクスパンダ615によって専有されている状態となる。
一方で、I2CI/Oエクスパンダ615は、8ビットのデータ伝送後に、マスタIC570から接続線SDAを介してアクノリッジ信号を受信できないときは、接続線SDAを解放してデータ伝送を中止する。なお、I2CI/Oエクスパンダ615は、マスタIC570から接続線SDAを介してアクノリッジ信号を受信する際には、接続線SDAがLOWレベルであればアクノリッジ信号を受信したと解釈し、接続線SDAがHIGHレベルであればアクノリッジ信号を受信しないと解釈する。
よって、マスタIC570からのデータがノイズ等の影響により変化し、この変化したデータを勝手に受信して読み出しモードとなったI2CI/Oエクスパンダ615が発生してしまうと、接続線SDAがいつまでも解放されないことになる。
このような場合に、接続線SDAの信号レベルはLOWに維持されたままになり、マスタIC570と、本来送信を行うことを意図していた装飾制御装置610のI2CI/Oエクスパンダ615との間で接続線SDAを介した通信が行えなくなる。
そこで、マスタIC570は、スタート条件を示す信号を出力する前に、接続線SDAからデータが出力できる状態であるか否かを判定するために、接続線SDAの信号レベルがHIGHであるか否かを判定する。
接続線SDAの信号レベルがHIGHでないと判定された場合、接続線SDAからデータが出力できないので、ドライバ576Aによりトランジスタ578Aに動作可能な電圧を印加しないことによってトランジスタ578Aをオンさせずに(接続線SDAを解放した状態で)、接続SCLの信号レベルを少なくとも9回変化させる。
このような処理を行うことで、読み出しモードとなったI2CI/Oエクスパンダ615は、接続SCLの信号レベルの変化に合わせて接続線SDAにデータを出力するが、接続SCLの信号レベルの変化が少なくとも9回行われる途中において、マスタIC570からのアクノリッジ信号を確認するタイミングが発生する。このとき、接続線SDAは解放されているのでHIGHレベルとなり、読み出しモードとなったI2CI/Oエクスパンダ615は、アクノリッジ信号を受信しなかったと判断するので、データ伝送をやめて接続線SDAを解放することになる。
なお、この処理は、スタート条件を示す信号を出力する前だけでなく、マスタIC570が装飾制御装置610へ実際のデータを出力する前に行われるようにしてもよい。
このようにして、読み出しモードとなった装飾制御装置610のI2CI/Oエクスパンダ615から強制的に接続線SDAを解放させるので、接続線SDAの信号レベルはHIGHに維持されるようになる。
図30は、本発明の第1の実施形態の遊技機全体に設けられる装飾制御装置610の接続形態を示す図であり、特に前面枠3に設けられる装飾制御装置610について説明する図である。
装飾制御装置610は、主に、遊技盤10及び前面枠3に取り付けられている。前面枠3に取り付けられた装飾制御装置610が制御するLEDは、装飾部材9、照明ユニット11、及び異常報知LED29を照射するものである。
遊技機には複数の仕様があり、通常版遊技機1(第1仕様の遊技機)と廉価版遊技機1(第2仕様の遊技機)とがある。通常版遊技機1は、標準仕様の装飾部材9を備える前面枠3(通常版前面枠、第1の遊技枠)を備えている。廉価版遊技機1は、標準仕様の装飾部材9よりも廉価なコストで構成された装飾部材9’を備える前面枠3(廉価版前面枠、第2の遊技枠)を備えている。
通常版前面枠3と廉価版前面枠3とは、装飾部材9を照射するために取り付けられる装飾制御装置610の数が相違する。具体的には、通常版前面枠3の装飾部材9は四つの装飾制御装置610により照射され、廉価版前面枠3の装飾部材9’は二つの装飾制御装置610により照射される。装飾部材9は最大60個のLEDによって照射されるのに対して、装飾部材9’は最大30個のLEDによって照射されるので、装飾部材9のほうが装飾部材9’よりも明るくなる。このため、通常版前面枠3が取り付けられた場合の装飾制御装置610の制御と、廉価版前面枠3が取り付けられた場合の装飾制御装置610の制御とが異なる。
通常版前面枠3に取り付けられる装飾制御装置610のI2CI/Oエクスパンダ615のアドレスと廉価版前面枠3に取り付けられる装飾制御装置610のI2CI/Oエクスパンダ615の固有アドレスとが同じであると、通常版前面枠3が取り付けられた場合の制御を行う通常版用の演出制御装置550と、廉価版前面枠3が取り付けられた場合の制御を行う廉価版用の演出制御装置550と、を用意して、取り付けられる前面枠3に対応して演出制御装置550を取り換えなければならない。したがって、製造メーカーが遊技機1を出荷する場合に、通常版用の演出制御装置550と廉価版用の演出制御装置550とを用意しなければならず、製造コストが高くなってしまう。
このため、本実施形態では、通常版前面枠3と廉価版前面枠3とで制御が異なる装飾制御装置610のI2CI/Oエクスパンダ615の個別アドレスには、異なるアドレスを割り当て、一つの演出制御装置550が通常版用の制御と廉価版用の制御とを行えるようにした。これによって、通常版用の演出制御装置550と廉価版用の演出制御装置550とを用意する必要がなくなり、製造コストを削減できる。
具体的には、通常版前面枠3の装飾部材9を照射するLEDに接続される四つの装飾制御装置610(第1の仕様依存型グループ単位制御手段)のI2CI/Oエクスパンダ615の固有アドレスには、「1001」、「1010」、「1100」、及び「1101」が割り当てられる。
一方、廉価版前面枠3の装飾部材9’を照射するLEDに接続される二つの装飾制御装置610のI2CI/Oエクスパンダ615(第2の仕様依存型グループ単位制御手段)のアドレスには、通常版前面枠3の装飾部材9を照射するLEDに接続される四つの装飾制御装置610のI2CI/Oエクスパンダ615の固有アドレスと異なる「1110」及び「1111」が割り当てられる。
そして、通常版前面枠3と廉価版前面枠3の何れに使用される場合であっても、演出制御装置550からは、装飾部材9、9’のI2CI/Oエクスパンダ615に割り当てられた固有アドレスである「1001」、「1010」、「1100」、「1101」、「1110」及び「1111」の全てを含んだ演出制御データが、装飾制御装置610に送信される。
したがって、通常版用の制御と廉価版用の制御とを行えるようにした一つの演出制御装置550で通常版前面枠3の装飾制御装置610と廉価版用の装飾制御装置610とを制御できるので、製造コストを削減できる。
また、通常版前面枠3と廉価版前面枠3とで同じ制御をする照明ユニット11及び異常報知LED29を照射するLEDに接続された装飾制御装置610のI2CI/Oエクスパンダ615には、通常版前面枠3と廉価版前面枠3とで異なるアドレスにする必要はなく、同じアドレスが割り当てられる。
なお、廉価版前面枠3では、固有アドレスが「1001」、「1010」、「1100」、「1101」となるI2CI/Oエクスパンダ615は使用されず、通常版前面枠3では、固有アドレスが「1110」、「1111」となるI2CI/Oエクスパンダ615は使用されない。そのため、何れの仕様の前面枠3であっても、異常判定テーブル2100(図21)において、接続されないI2CI/Oエクスパンダ615が存在することになるが、前述したように、異常判定テーブル2100に登録されているI2CI/Oエクスパンダ615の一つと、マスタIC570との間でデータ送受信が行われれば、正常な状態として処理されるので問題はない。
(第2実施形態)
本発明の第2実施形態を図31〜図34を用いて説明する。
本発明の第2実施形態は、演出制御装置550が複数のマスタIC570を備える場合の実施形態である。
図31は、本発明の第2実施形態の複数のマスタIC570とI2CI/Oエクスパンダ615との接続の説明図である。
演出制御装置550は、二つのマスタIC570A及び570Bを備える。
マスタIC570Aには、遊技盤10を装飾する7個の装飾制御装置610(中継基板600A、及び装飾制御装置610A〜610F)が接続される。
中継基板600AはI2CI/Oエクスパンダ615を備えるので、装飾制御装置610の一種であり、遊技盤10に取り付けられた装飾制御装置610の中で最も上流に位置する。中継基盤600Aには、直接に接続された装飾制御装置610A〜610Cと直接に接続された装飾制御装置610D〜610Fとが並列に接続される。
マスタIC570Bには、通常版前面枠3に取り付けられる7個の装飾制御装置600B及び610G〜610L、又は、廉価版前面枠3に取り付けられる4個の装飾制御装置600B及び610M〜610Oが接続される。
装飾制御装置600Bは、遊技機1に通常版前面枠3及び廉価版前面枠3のいずれが取り付けられも、マスタIC570Bに接続される装飾制御装置610の中で最も上流に位置する装飾制御装置610であるため、中継基板600としても機能する。このため、装飾制御装置600Bと記載している。
装飾制御装置600Bは、照明ユニット11及び異常報知LED29を照射するLEDを制御するものである。照明ユニット11及び異常報知LED29の照射態様は、通常版前面枠3であっても廉価版前面枠3であっても同じである。このため、通常版前面枠3及び廉価版前面枠3には、同じアドレスが付与された装飾制御装置610Bが取り付けられている。
遊技機1に通常版前面枠3が取り付けられる場合には、装飾制御装置600Bには、直列に接続された装飾制御装置610G〜610Iと直列に接続された装飾制御装置610J〜610Lとが並列に接続される。一方、遊技機1に廉価版前面枠3が取り付けられる場合には、装飾制御装置600Bには、直列に接続された装飾制御装置610M〜610Oが接続される。
通常版前面枠3の装飾部材9を照射するLEDは、6個の装飾制御装置610G〜610Lによって制御される。廉価版前面枠3の装飾部材9’を照射するLEDは、3個の装飾制御装置610M〜610Oによって制御される。
このため、装飾部材9のほうが装飾部材9’よりも明るくなる。このため、通常版前面枠3が取り付けられた場合の装飾制御装置610の制御と、廉価版前面枠3が取り付けられた場合の装飾制御装置610の制御とが異なる。
なお、各マスタIC570に接続される装飾制御装置610のI2CI/Oエクスパンダ615のアドレスは、接続されているマスタIC570内で一意であるように付与される。図30で説明したように、マスタIC570Bに接続される装飾制御装置610G〜610Lと装飾制御装置610M〜610とは異なるアドレスが付与される。
通常版前面枠3及び廉価版前面枠3のいずれが遊技機1に取り付けられても、装飾部材9、9’を照射するLEDを制御する装飾制御装置610のI2CI/Oエクスパンダ615に割り当てられたすべての固有アドレスに対して演出制御データがマスタIC570Bから送信される。
したがって、通常版用の制御と廉価版用の制御とを行えるようにした一つの演出制御装置550で通常版前面枠3の装飾制御装置610と廉価版用の装飾制御装置610とを制御できるので、製造コストを削減できる。
また、遊技盤10に取り付けられる装飾制御装置610のI2CI/Oエクスパンダ615が接続されるマスタIC570と、通常版前面枠3に取り付けられる装飾制御装置610のI2CI/Oエクスパンダ615又は廉価版前面枠3に取り付けられる装飾制御装置610のI2CI/Oエクスパンダ615が接続されるマスタIC570と、を分離している。
これによって、1個のマスタIC570で制御できるI2CI/Oエクスパンダ615の数の制限(図12に示すように14個を上限とする)がなくなり、多彩な演出制御を可能とすることが期待できる。
本実施形態でも、異常判定テーブル2100(図32参照)に登録されたI2CI/Oエクスパンダ615のうちの一つのI2CI/Oエクスパンダ615とマスタIC570との間でデータ送受信が行われれば、正常な状態として処理が行われるが、異常の判定、並びに、I2CI/Oエクスパンダ615及びマスタIC570の初期化の処理を、各系統毎に独立して行う点が第1の実施形態とは異なっている。
本実施形態では、図32に示すように、異常判定テーブル2100が各系統毎に用意されている。換言すると、各マスタIC570に対応する異常判定テーブル2100が演出制御装置550のRAM553に記憶されている。
これらの異常判定テーブル2100について具体的に説明する。図32は、本発明の第2実施形態の異常判定テーブル2100の説明図である。
マスタIC570Aと中継基板600A、装飾制御装置610A〜610Fとの間で行われるデータ送受信の異常を装飾制御装置毎に判定する第1異常判定テーブル2100A、及び、マスタIC570Bと通常版遊技枠3に取り付けられた装飾制御装置600B、610G〜610L、又は廉価版遊技枠3に取り付けられた装飾制御装置600B、610M〜610Oとの間で行われるデータ送受信の異常を装飾制御装置毎に判定する第2異常判定テーブル2100Bの2種類のテーブルが存在する。
そして、何れかの異常判定テーブルにて、すべてのI2CI/Oエクスパンダ615に関してデータ送受信異常が発生したと判定された場合には、当該異常判定テーブルに属するすべての装飾制御装置610を初期化し、あわせて対応するマスタIC570も初期化する。但し、他の異常判定テーブルに属する装飾制御装置610やマスタIC570は初期化しない。
例えば、前述した第1の異常判定テーブルにて、全てのI2CI/Oエクスパンダ615に関してデータ送受信異常が発生したと判定された場合には、マスタIC570A及び中継基板600A、装飾制御装置610A〜610Fのみを初期化し、他の、マスタIC570B、及び装飾制御装置600B、装飾制御装置610G〜610Oは初期化しない。
このため、データ送信異常が発生したマスタIC570及びデータ送信異常が発生したマスタIC570に接続される装飾制御装置610が初期化中であっても、異常が発生していないマスタIC570と装飾制御装置610との間で、装飾制御データが送受信できるので、遊技の途中で装飾装置620による演出が突然一時停止してしまうことを防止できる。
なお、各マスタIC570A、570Bを初期化する方法として、ソフトリセットとハードリセットとがある。
ソフトリセットでは、CPU551によって各マスタIC570A、570Bのうちの一つが初期化される。
具体的には、各マスタIC570A、570Bには、各々リセットREG573(図4参照)を備えている。CPU551がバス563を介してこのリセットレジスタ573に特定値(初期化指示情報)を書き込むと、特定値を書き込まれたリセットREG573を備えるマスタIC570だけが初期化される。この場合、リセットREG573は、初期化指示情報記憶領域となる。
ハードリセットでは、入出力I/F558及び電源投入検出回路559に接続されるNORゲート回路590に各マスタIC570A、570BのRESET端子が接続されており、NORゲート回路590に印加される電圧が所定時間ローに保持されると、RESET端子に印加される電圧(初期化信号)も所定時間ローに保持され、全てのマスタIC570A、570Bが初期化される。この場合、RESET端子は、初期化信号入力端子となる。
NORゲート回路590は、すべてのマスタIC570のRESET端子に接続されており、NORゲート回路590に印加される電圧が所定時間ローに保持されると、すべてのマスタIC570のRESET端子に印加される電圧も所定時間ローになり、すべてのマスタIC570に初期化信号として取り込まれる。
なお、NORゲート回路590とマスタIC570のRESET端子とを接続する線は、バス563とは別個の線(バスを介さない信号線)である。
本実施形態では、電源投入時には、ハードリセットによって、全てのマスタIC570A、570Bを初期化し、合せて対応する装飾制御装置610を初期化する。そして、何れかの異常判定テーブルにて、全てのI2CI/Oエクスパンダ615に関してデータ送受信異常が発生したと判定された場合には、当該異常判定テーブルに属するマスタICのみをソフトリセットにより初期化し、合わせて対応する装飾制御装置610を初期化するが、他のマスタICや装飾制御装置610はリセットしない。
このように、演出制御装置550に複数のマスタIC570が備わる場合に、異常が発生したマスタICのみに対してリセットを行うので、遊技機1全体の装飾が一時停止することなく、遊技者に違和感を与えることを抑制できる。また、すべてのマスタIC570を同時に高速にリセットしたい場合には、ハードリセットによりリセットが行えるので、様々な態様のリセット処理を実施することができる。
第2実施形態では、第1実施形態と同じ処理を実行するが、第1実施形態と異なる処理のみ、図33及び図34で詳細を説明する。
図33は、本発明の第2実施形態のI2C初期リセット処理のフローチャートである。図33では、図23に示すI2C初期リセット処理と同じ処理は同じ符号を付与し、説明を省略する。
I2C初期リセット処理は電源投入時に実行される処理であり、第2実施形態のI2C初期リセット処理では、各マスタIC570に接続される装飾制御装置610に初期化指示データを送信する。
具体的には、ステップ2302の処理ですべてのマスタIC570がハードリセットされた後、CPU551は、第1のマスタIC570Aを選択して(3301)、ステップ3301の処理で選択されたマスタIC570Aに接続される中継基板600A、装飾制御装置610A〜610Fに初期化指示データを送信するスレーブリセット処理を実行し(2303)、第1のマスタIC570Aに接続される中継基板600A、装飾制御装置610A〜610Fを初期化する。
そして、CPU551は、第2のマスタIC570Bを選択して(3302)、ステップ3302の処理で選択されたマスタIC570Bに接続される装飾制御装置610G〜610Lに初期化指示データを送信するスレーブリセット処理を実行し(2303)、マスタIC570Bに接続される装飾制御装置600B、装飾制御装置610G〜610Oを初期化する。
図34は、本発明の第2実施形態のI2C随時リセット処理のフローチャートである。図34では、図27に示すI2C随時リセット処理と同じ処理は同じ符号を付与し、説明を省略する。
ステップ2701の処理でリセット要求フラグが設定されていると判定された場合、又は、ステップ2703の処理でリセット条件が成立していると判定された場合、CPU551は、リセット条件が成立したマスタIC570を選択し(3401)、ステップ3401の処理でマスタIC570に備わるリセットREG573に所定の値を書き込み、当該マスタIC570をソフトリセットする(3402)。
そして、CPU551は、ステップ3401の処理で選択されたマスタIC570に接続されるすべての装飾制御装置610に初期化指示データを送信するスレーブリセット処理を実行する(2706)。
次に、CPU551は、リセット条件が成立したマスタIC570が可動制御装置に接続されたマスタIC570であるか否かを判定する(3403)。
ステップ3403の処理で、リセット条件が成立したマスタIC570が可動制御装置に接続されたマスタIC570であると判定された場合、可動制御装置が制御する役物駆動MOT561及び役物駆動SOL560を初期位置に戻す初期化処理を実行するので、ステップ2707の処理に進む。
一方、ステップ3403の処理で、リセット条件が成立したマスタIC570が可動制御装置に接続されたマスタIC570でないと判定された場合、ステップ2710の処理に進む。
このように、本実施形態では、異常が検出されたマスタIC570のみをソフトリセットするので、異常が検出されていないマスタIC570を初期化しなくてもよいので、遊技中に出力が一時停止する装飾装置の数を最小限に抑えることができ、遊技者に与える違和感を減少させることができる。
また、ハードリセット又はソフトリセットによってマスタIC570が初期化されると、初期化されるマスタIC570に接続されるすべての装飾制御装置610も初期化されるので、確実に異常を解消できる。
なお、本明細書に開示されている実施の形態は、パチンコ機のみならずパチスロ機等の他の遊技機でも適用可能であることは当然意図されるものである。
また、実施の形態として、変動表示ゲームの結果に対応して特別遊技状態を発生するパチンコ機が開示されているが、変動表示ゲームに限らず、他の補助遊技の結果に対応して特別遊技状態を発生する遊技機であっても構わないことは当然意図されるものである。
例えば、所定条件の成立によって特定の入賞装置の入口が開口し(特定入賞装置の可動部材が作動して入口が開口し)、入賞装置内部へ取り込まれた遊技球が、入賞装置内部に設けられた何れの入賞領域(特定入賞領域と一般入賞領域とがある)に入賞するかを抽選する遊技を補助遊技としてもよい。この場合、入賞装置内部へ取り込まれた遊技球が特定入賞領域に入賞することで、特別遊技状態が発生することになる。
また、実施の形態として、特図変動表示ゲームの結果に対応して特別遊技状態を発生するパチンコ機が開示されているが、普図変動表示ゲームの結果に対応して(或いは、普図変動表示ゲームの結果に起因して)、特別遊技状態を発生する様なパチンコ機であっても、本発明が適用可能であることは当然意図されるものである。例えば、普図変動表示ゲームの結果により特定の入賞装置の入口が開口し、入賞装置内部へ取り込まれた遊技球が特定入賞領域へ入賞した場合に特別遊技状態を発生するパチンコ機であっても、本発明は適用可能である。
また、実施の形態として、遊技制御装置と演出制御装置とが分離されている構成が開示されているが、遊技制御装置と演出制御装置とが一体となって1つの制御装置を構成していても差し支えないものであり、或いは、遊技制御装置自身がグループ統括制御手段として構成されていても差し支えないことは当然意図されることである。
なお、今回開示した実施の形態は、全ての点で例示であって制限的なものではない。また、本発明の範囲は前述した発明の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び内容の範囲での全ての変更が含まれることが意図される。