ルーレットKA2ルーレットKA2MC9RS08KA2マイコンを使って、ルーレットゲームを作ります。目標は、できるだけ半田付け箇所を減らすことです。以下にこのアプリケーションの回路図を示します。押しボタンの操作で8個のLEDと1個の圧電スピーカを駆動します。悲惨な事故が起こらないように入れてあります。手持在庫LEDには、電流制限抵抗を入れていません。これは、MC9RS08KA2の出力電流が多くないという事実を利用しています。電位差(VOH-VOL)とLEDの順方向電圧(VF)をモデル化したものです。これら二つのグラフの交点でLEDが点灯します。それによって出力電流は約5mAに制限されます。これは、3V電源の時に限る計算です。マイコンとLEDに大電流が流れて破壊する可能性がありますのでご注意ください。一箇所だけジャンパ線があります。ジャンパ線の配線を迂回させて片面基板に収めることができます。BDMピンヘッダをつけます。これで、ソフトウェア開発の準備は完了です。ソフトウェアここでは、ソフトウェアの概要を説明します。停止した位置によって、「あたり」と「はずれ」の音を出します。一定期間放置すると、LEDを消灯し、低消費電力モードに入ります。低消費電力状態からは、押しボタンスイッチを押すと復帰します。状態遷移このプログラムは、状態遷移によって動作しています。PROLOGUEという状態に入ります。押しボタンスイッチが押されていない状態であることを確認します。ルーレットは走り出しません。MC9RS08KA2は、WAITという状態に入ります。押しボタンが押されたらRUNという状態に遷移します。STOP命令により低消費電力モードに入ります。この状態では、押しボタンスイッチが押されるのを待ちます。徐々に移動速度を落としながら、LEDを移動させます。EPILOGUE状態に遷移します。「あたり」と「はずれ」の効果音を圧電スピーカから出します。効果音を出し終わったら、PROLOGUE状態に遷移します。ソースコードMC9RS08KA2には、Cなどの高級言語が準備されていません。アセンブラで行いました。一つのファイルにすべての記述を行っています。このプログラムの全ソースコードは、以下のようになっています。光の移動速度を積分することによって光るLEDの位置を計算しています。この時に加速度を移動速度の-1/256倍にしています。以下の微分方程式に従うことになります。3.41)という一般式が得られます。v0は、時刻0の時の移動速度です。この式は、3.41秒かけて光の移動速度が1/2.7倍になることを示しています。デバッグここでは、プログラムのデバッグの際に問題になった事柄を取り上げます。圧電スピーカは、PTA3端子に接続されています。デバッグ中は、圧電スピーカから雑音が出ます。デバッグ時には取り外すと雑音は出なくなります。圧電スピーカから出す音のデバッグをデバッガを使って行うことができません。端子数の少ないマイコンだから、仕方が無いですね。WAIT命令とSTOP命令このプログラムは、複数の割り込み待ちループによって構成されています。WAITとSTOPという命令が使用されています。デバッグ中、内部クロックが無いとBDMはうまく接続できません。実際には、STOP命令を実行するとデバッガが接続されなくなってしまいました。デバッグ中はNOPに置き換えてやることにしました。消費電力の削減はできませんが、快適にデバッグを行うことができます。遊ぶリチウム型ボタン電池を入れて完成です。測定不能という結果になってしまいました。1μA以下になったのだろうと推測しています。noritan.org。