RS08に仕事をさせる

DEMO9RS08KA2評価ボードには、BDMポートを付けることもできます。 これを使って、アプリケーションを作ってみましょう。 題材は、ルーレットゲームです。

緊急発行のため、プログラムは公開しておりません。 ご了承ください。

RouletteKA2の写真

アジェンダ

ハードウェア

回路図

以下にこのアプリケーションの回路図を示します。 押しボタンの操作で8個のLEDと1個の圧電スピーカを駆動します。

R2(470Ω)は、 FLASH ROMのプログラム用12V電源がつながっている時に押しボタンを押しても、 悲惨な事故が起こらないように入れてあります。

LEDには、電流制限抵抗を入れていません。 これは、MC9RS08KA2の出力電流が多くないという事実を利用しています。 設計では、電源電圧3Vのときに、 "H"出力ポートと"L"出力ポートで0.5Vづつ電圧降下が起き、 それによって出力電流は5mAに制限されます。 これは、3V電源の時に限る計算です。 したがって、この回路に5V電源を与えると マイコンとLEDに大電流が流れて破壊する可能性がありますのでご注意ください。

ルーレットKA2の部品表
品名規格メーカ個数調達先
マイコンMC9RS08KA2CPCFreescale1Freescale
カーボン抵抗470Ω 1/6W-1秋月電子
カーボン抵抗1kΩ 1/6W-1秋月電子
電解コンデンサ47µF 16VSANYO1手持在庫
積層セラミック・コンデンサ0.1µF 50V-2秋月電子
赤色発光ダイオードOSDR5113AOptoSupply1秋月電子
黄色発光ダイオードOSNG5113AOptoSupply3秋月電子
緑色発光ダイオードOSYL5113AOptoSupply4秋月電子
タクト・スイッチ--1梅澤無線
ICソケット8P DIP-1秋月電子
ボタン電池ホルダCH25-2032SHOGYO1秋月電子
ボタン電池CR2032東芝1千石電商
圧電スピーカ--1梅澤無線
ピンヘッダ2×3-1秋月電子
片面ユニバーサル基板95mm×72mm-1秋月電子
丸ビス2mm×10mm-2手持在庫
6角ナット2mm-2手持在庫
スペーサ3mm×20mmマック84手持在庫
6角ナット3mm-4手持在庫

アートワーク

このアプリケーションは、ユニバーサル基板に作ったため、 一箇所、ジャンパ線があります。 プリント基板にするときには、 ジャンパ線の配線を迂回させて片面基板に収めることができます。

BDMポート

DEMO9RS08KA2を評価ボードとして使用するためには、 評価ボードにもBDMピンヘッダをつけます。

BDMポートの写真

これで、ソフトウェア開発の準備は完了です。

BDMによる接続の写真

ソフトウェア

ここでは、ソフトウェアの概要を説明します。 プログラムコードの詳細については、 都合により、割愛しています。

動作

このプログラムは、 押しボタンスイッチを押すとLEDの光が走り出し、 押しボタンスイッチを放すとLEDの速度が徐々に遅くなり、 最後には停止します。 停止した位置によって、「あたり」と「はずれ」の音を出します。

このプログラムでは、押しボタンスイッチを押さずに 一定期間放置すると、LEDを消灯し、低消費電力モードに入ります。 低消費電力状態からは、押しボタンスイッチを押すと復帰します。

状態遷移

このプログラムは、状態遷移によって動作しています。

電源ONによるリセット直後、MC9RS08KA2は PROLOGUEという状態に入ります。 PROLOGUEでは、 押しボタンスイッチが押されていない状態であることを確認します。 つまり、押しボタンスイッチを押したまま電源を投入しても ルーレットは走り出しません。

押しボタンスイッチが押されていないことを確認したら、 MC9RS08KA2は、WAITという状態に入ります。 この状態では、キーボード割り込みを待ち、 押しボタンが押されたらRUNという状態に遷移します。 同時に、押しボタンが押されなかった時間を計測しており、 約5分間、押しボタンが押されない場合には、STOPという 状態に遷移します。

STOP状態では、 STOP命令により低消費電力モードに入ります。 この状態では、押しボタンスイッチが押されるのを待ちます。 押しボタンが押されたら、再び、PROLOGUE状態に 遷移します。

一方、RUN状態では、 徐々に移動速度を落としながら、LEDを移動させます。 移動速度が、ある決められた移動速度にまで低下したら、 EPILOGUE状態に遷移します。

EPILOGUE状態では、停止したLEDの位置によって、 「あたり」と「はずれ」の効果音を圧電スピーカから出します。 効果音を出し終わったら、PROLOGUE状態に遷移します。

デバッグ

ここでは、プログラムのデバッグの際に問題になった事柄を取り上げます。

圧電スピーカの接続

圧電スピーカは、PTA3端子に接続されています。 この端子は、デバッグ時には、BKGD端子として使用されていますので、 デバッグ中は、圧電スピーカから雑音が出ます。

また、同じ理由で、 圧電スピーカから出す音のデバッグをデバッガを使って行うことができません。 端子数の少ないマイコンだから、仕方が無いですね。

WAIT命令とSTOP命令

このプログラムは、複数の割り込み待ちループによって構成されています。 それぞれの割り込み待ちには、 反応時間の短縮と低消費電力化を狙って WAITSTOPという命令が使用されています。

STOP命令は、内部クロックを停止させる命令ですが、 デバッグ中、内部クロックが無いとBDMはうまく接続できません。 データシートでは、STOP状態でもBDMがイネーブルされていれば クロックが動き続けるとされているのですが、 実際には、STOP命令を実行するとデバッガが接続されなくなってしまいました。

そこで、wait_nopstop_nopというアセンブラのマクロを宣言して、 デバッグ中はNOPに置き換えてやることにしました。 こうすると、デバッグ中もクロックが停止せず、 消費電力の削減はできませんが、快適にデバッグを行うことができます。

遊ぶ

リチウム型ボタン電池を入れて完成です。

ルーレットKA2の写真

消費電力を測定するため、 STOP状態の消費電流を手持ちのテスタで測定しましたが、 測定不能という結果になってしまいました。 おそらく、1µA以下になったのだろうと推測しています。

2006-06-11 緊急発行。

Copyright (C) 2006 noritan.org ■