MAXQ2000とMAX7312を使用したLEDシューティングゲーム
要約
このアプリケーションノートは、LEDシューティングゲームです。このゲームは、マイクロコントローラMAXQ2000 (MAXQ20コア)およびポートエキスパンダMAX7312の機能を示すものです。2つのデバイスのインタフェースに必要なすべてのファームウェアが提供されます。
はじめに
このアプリケーションノートでは、マイクロコントローラMAXQ2000 (MAXQ20コア)と16ビットポートエキスパンダMAX7312のインタフェースに必要なすべてのファームウェアを提供します。アプリケーション例は、LEDシューティングゲームです。サンプルのアセンブリ言語プログラムは、フリーのIAR Embedded Workbench® IDE version 2.10Aを使用してMAXQ2000専用に記述およびアセンブルを行いました。
ハードウェアの概要
MAX7312は、割込みおよびホットスワップ保護を備えた2線式インタフェースの16ビットI/Oポートエキスパンダです。このアプリケーションノートおよびMAX7312のEV (評価)キットを使用して、LEDシューティングゲームを作成することができます。EVキットの赤と緑のLEDが、素早く上下に移動します。ゲームの目的は、赤と緑のLEDライトが中央ですれ違う瞬間にプッシュボタンの1つを押すことです。
MAX7312のEVキットは、MAX7312、マイクロコトンローラMAXQ2000、必要なすべての受動部品、および実証済みのPCBレイアウトで構成されます。MAX7312のEVキットの回路図を図1および2に示します。
マイクロコントローラMAXQ2000の詳細については、MAXQ2000のEVキットを注文してください。MAXQ2000のEVキットには、ソフトウェア、ハードウェア、サンプルコード、およびMAXQ2000を使用した設計を開始するために必要となるドキュメントの完全なセットが含まれています。MAXQ2000のEVキットの回路図はデータシートに含まれています。
画像の拡大(PDF、292kB)
図1. MAX7312EVキットの回路図(1/2)
画像の拡大(PDF、332kB)
図2. MAX7312EVキットの回路図(2/2)
ファームウェアの概要
ファームウェアのプログラム例(後述)では、MAXQ2000の汎用入出力(GPIO)ポートにI²CインタフェースをビットバンギングすることによってMAX7312との通信を行います。MAXQ2000のシステムクロックは20MHzであるため、ビットバンギングされたI²Cインタフェースを最大400kHzで動作させることが可能です。ユーザはヘッダーファイルmaxqi2c.hを書き換えて、I²Cインタフェースの速度およびSDA/SCLとして使用するGPIOポートを選択します。詳細については、アプリケーションノート3588 「MAXQ2000マイクロコントローラのソフトウェアI²Cドライバ」を参照してください。
MAX7312のEVキットの電源オン後、MAXQ2000は自動的にMAX7312のI²Cアドレスを検出します。その後、プログラムはMAX7312のポート1 GPIOの設定を開始して、LEDライトの移動効果を実現します。ポート2 GPIOの8および9は入力ポートに設定され、ファームウェアはこれらのポートを通してプッシュボタンの状態を読み取ります。
このゲームは、赤と緑のLEDライトが中央ですれ違うときにプレーヤーにプッシュボタンを押させるものです。LEDがすれ違う瞬間にボタンが押された場合、マイクロコントローラMAXQ2000がそれを検出して、すべてのLEDが点滅してプレーヤーがゲームに勝ったことを示します。
表1に、このゲームアプリケーションで必要となるすべてのI²Cの操作を示します。
表1. I²Cの操作
I²C/SMBus Protocol | Application Purpose | Device Slave Address | Register Address |
Read port 2 input register | Read the states of the pushbuttons | 0x40 | 0x01 |
01000000b | 00000001b | ||
Write configuration registers to port 1 | Configure the I/O direction for port 1 | 0x40 | 0x06 |
01000000b | 00000110b | ||
Write configuration registers to port 2 | Configure port 2 GPIOs 8 and 9 as input ports | 0x40 | 0x07 |
01000000b | 00000111b | ||
Write output port register to port 1 | Turn LED lights on or off | 0x40 | 0x02 |
01000000b | 00000010b |
このアプリケーションのソースコードをダウンロードすることができます。