このアプリケーションは、 ソフトウェア開発の練習用に作成したハードウェアです。 1個のMCU、11個のLED、1個のタクトスイッチ、 そして単4電池2本が実装されています。 BDM端子もつけたので、オンボードプログラミングも可能です。 どんなアプリケーションになるかはプログラム次第です。
このアプリケーションは、ソフトウェア屋さんに マイコンのプログラム開発を経験してもらうために作成した アプリケーションです。 そのため、ハードウェアは実に簡単です。
品名 | 型番 | 個数 | 調達先 |
---|---|---|---|
マイコン | MC9S08QG8CPE | 1 | Freescale |
LED | OSDR5113A | 11 | 秋月電子 |
抵抗 | 220Ω ¼W | 11 | 手持ち在庫 |
積層セラミックコンデンサ | 0.1µF | 1 | 秋月電子 |
タクタイルスイッチ | OMRON B3F | 1 | 梅澤無線 |
電池ボックス | 単4×1本 | 2 | 秋月電子 |
片面ガラスユニバーサル基板 | 95mm×72mm | 1 | 秋月電子 |
ICソケット | 16P | 1 | 手持ち在庫 |
ピンヘッダ | 1×4 | 1 | 秋月電子 |
ピンヘッダ | 2×3 | 1 | 秋月電子 |
部品がそろったら、製作に入ります。
まず、LEDを取り付けます。 LEDは、基板の端に一列に配置します。 この時に、基板の面に水平に光が発射されるように LEDの足を90度曲げてから基板に実装します。
11個のLEDの足をすべて同じ長さで曲げるのは、見た目よりも結構大変です。 きれいにそろえないと、光線の発射角度がまちまちになってしまいます。 そこで、まず、LEDの足を曲げるための冶具を作成しました。
冶具といっても、何のことは無い、基板の切れ端です。 この基板は、LEDを配置しようとしている基板と同じ位置から 切り出されているので、冶具に合えば基板にも合うという寸法です。 また、穴の位置でカットされているのがミソです。
この冶具の使い方ですが、 まず、下の写真のように冶具にLEDをあてがい、 ラジオペンチでしっかりとはさみます。 LEDの端子には、極性があります。 アノード端子(長い足)とカソード端子(短い足)の位置を 間違えないように気をつけてください。
この時にLEDの足の位置と冶具の穴の位置を合わせることが重要です。 次に下の写真のように、片手でしっかりとラジオペンチを握って、 もう片方の手の指でLEDの足を曲げます。
この時に曲げた足が基板の穴の位置に入り込んだ状態になります。
足を曲げたLEDは、基板の端から二番目の穴に配置します。
配置したLEDの足は、 基板から落ちないように曲げておきます。 このアプリケーションでは、LEDの足は短くしても良いので、 下の写真のようにアノードを基板の内側にカソードを基板の外側にまげて 0.1インチの長さでカットします。
最後にLEDの足を半田付けして固定します。
この時、隣の穴まで半田を流さないように注意します。 特にアノードの隣の穴は、後で抵抗を配置しますので、 半田付けをすると取り付けられなくなってしまいます。
次は、220Ωの抵抗をLED一つに一本ずつ並べます。 ただし、抵抗の並べ方は光線の角度に影響しないので LEDのように厳密にそろえる必要はありません。
LEDの時と同じように基板の切れ端で冶具を作ってみました。
ところが、あまり調子が良くありません。 二本ほど使ってみて、 残りはラジオペンチだけで曲げる従来どおりの方法をとりました。
抵抗の足を曲げたら、基板に配置します。
抵抗は、LEDの時と同じように足をまげて仮固定して半田付けします。
抵抗の足のうち、マイコンに接続される側の足はまだ半田付けしません。 これらの足は、マイコンまでの配線としても使用されます。
次は、マイコン用のICソケットを取り付けます。
ICソケットは、LEDや抵抗のように足をまげて仮固定することができません。 このため、ICソケットをテープで固定するなどの工夫が必要です。
ICソケットをテープなどで固定したら、半田付けします。
この時には、対角の二箇所だけ半田付けして仮止めします。 これは、ソケットが傾いていたような場合に すべての箇所を半田付けしてしまうと簡単には修正できなくなってしまう ためです。
抵抗とICソケットの間を配線します。 抵抗の足を曲げて、届くところはそのまま配線します。 届かないところは、スズめっき線を使って配線します。
LEDのもう一方の端子であるカソード側の配線を行います。 すべてのLEDのカソードをICソケットのVSSに接続するため、 スズめっき線を配線します。
以上で、LEDに関連した配線は終了しました。 ここで、ひとまず配線に誤りが無いかを検査します。 ICソケットのところで、 VSS端子と各ポート出力との間に3Vの乾電池を接続して LEDが点灯するかどうかを確認します。
この写真では、 電池のマイナス側を4番ピン(VSS)に、 プラス側を11番ピン(PTB1)につないているので、 LED1が点灯しています。
タクトスイッチとパスコンを取り付けます。 タクトスイッチは、足の間隔が基板の穴の間隔よりも狭いので、 多少強引に入れることになります。 パスコンのほうは、抵抗と同様に足を折り曲げて仮固定します。
どちらも半田付けをして後の配線に備えます。
次は、電池ケースを取り付けます。
今回使おうとしている電池ケースは、 基板に固定するための端子が出ていません。 そのため、このままでは基板に固定することができません。 また、軟質プラスチックで出来ているため、 半田ごてをあてると融けてしまう可能性があります。
そこで、電池ケースを固定するための金具をスズめっき線で作って、 電池ケースの端子を機械的に固定することにしました。 作成した金具は、以下の写真のようなものです。
この金具を電池ケースのラグ端子の穴に通して、 金具の両端を基板に固定します。
電池ケースが融ける怖れがあるため、 ラグ端子には半田付けをしていません。 テスタで実測したところ、0.1Ωの抵抗値を示したため、 このままで良しとしました。
二本の電池ケースにそれぞれ二つラグ端子が付いていますので、 合計4本の金具を作って電池ケースを固定します。
このボードは、オンボードプログラミングを可能にするため、 Background Debug Mode (BDM)に対応したインターフェースを 備えます。 このインターフェースは、 2×3構成のピンヘッダで提供されます。
各端子に現れる信号については、開発ツールの説明で述べます。
以上でアプリケーションボードは完成です。 すぐに電源をつなぎたいところですが、 その前に致命的な間違いが無いかを確認しておきます。
致命的な間違いの一つ目は、電源のショートです。 アプリケーション基板は、開発ツールと接続されるため、 ボード上での電源のショートは開発ツールを破壊することになります。
確認方法は、簡単です。 ICソケットの3番ピン(VDD)と4番ピン(VSS)の間の抵抗値を テスタで測定します。 この基板の場合には、直流的な電流経路が全く無いため、 テスタを当ててしばらくしているとメガオームクラスの抵抗値を示します。
マイコンは、電源のプラスとマイナスを間違えただけで簡単に 破壊してしまいます。 この致命的間違いを検出するためには、 電池ケースのプラスとマイナスがICソケットに 正しく接続されているかを確認します。
この基板の場合には、 BDMピンヘッダからも電源が供給される場合がありますので、 ピンヘッダとICソケットとの間の配線も確認します。
アプリケーションボードはできました。 後は、マイコンを実装して、 開発ツールを使って好みのプログラムを書き込んだら完成です。 でも、開発ツールなんてどこにあるの?
Freeescale社は、多くの種類の評価ボードを販売しています。 その多くは、マイコンそのものの評価をするものなのですが、 最近の評価ボードは、評価ボードそのものに開発ツールが搭載されています。 DEMO9S08QG8もその一つです。
この評価ボードには、USBMULTILINKBDMという開発ツールと同等の機能を持った USB-to-BDMインターフェースが搭載されています。 この写真の右下の部分がUSB-to-BDMインターフェースです。
実は、評価ボードそのままでは開発ツールとしては使用できません。 この評価ボードに2×3構成のピンヘッダを追加すると 開発ツールとしても使えるようになります。 追加する位置は、上の写真の左下にあるBDM_PORTと印刷された箇所です。
これで、開発ツールの準備は完了です。
開発ツールとアプリケーションボードをつなぐケーブルは、 開発ツールには付属しています。 ところが、DEMO9S08QG8評価ボードには付属していません。 このため、自力でケーブルを作成する必要があります。
BDMコネクタは、2×3コネクタとして規格化されています。 このコネクタには、以下のような信号線が接続されています。
信号名 | ピン番号 | ピン番号 | 信号名 |
---|---|---|---|
BKGD | 1 | 2 | VSS |
N.C. | 3 | 4 | RESET* |
N.C. | 5 | 6 | VDD |
N.C.は、接続せず(Non-Connection)という意味を表しています。 開発ツールもこのコネクタ規格を使用しています。
ここで作成するケーブルは、6芯のフラットケーブルの両端に 2×3;コネクタを接続したものです。
材料は、フラットケーブル、コネクタ、それに2×3に加工した 基板の切れ端を使用します。 ケーブルは、奇数番を偶数番よりも多少短めにして予備半田しておきます。
まず、基板の切れ端に被服を剥いだ奇数番のケーブルの先端を差し込みます。 写真では、奥から1番ピン、3番ピン、5番ピンになっています。
次にケーブルを差し込んだままの基板にさらにコネクタの端子を差し込んで 半田付けします。
最後に偶数番のケーブルを基板とコネクタ端子の間に差し込んで、 半田付けすると完成です。
同じ作業をケーブルの両端に行うと接続ケーブルの完成です。
いよいよ、アプリケーションボードと開発ツールを接続します。
DEMO9S08QG8評価ボードを開発ツールとして使うには、 ソケットに搭載されているマイコンを取り外す必要があります。 IC取り外し冶具を使うのが最善なのですが、無い場合には、 ソケットとICの間にピンセットなどを差し込んでゆっくりとやさしく 抜いてやります。
今のところMC9S08QG8チップは、この評価ボードでしか手に入りませんので、 壊さないように慎重に取り外して、導電性のスポンジで休ませます。
次に、アプリケーションボードに先ほど抜いたマイコンを挿します。
次に二つのボードをBDM接続ケーブルでつなぎます。
これで、プログラム開発の準備が完了しました。
次は、プログラム開発です。
#include <hidef.h> /* for EnableInterrupts macro */ #include <MC9S08QG8.h> /* include peripheral declarations */ void wait10000() { int i; for (i = 0; i < 10000; i++) { __RESET_WATCHDOG(); /* feeds the dog */ } } void main(void) { unsigned int data; unsigned char pivot; EnableInterrupts; /* enable interrupts */ /* include your code here */ PTAD = 0x00; PTBD = 0x00; PTADD = 0x07; PTBDD = 0xFF; pivot = 0; for(;;) { data = 1 << pivot; PTAD = data & 0x07; PTBD = (data >> 3) & 0xFF; pivot++; if (pivot >= 11) { pivot = 0; } wait10000(); __RESET_WATCHDOG(); /* feeds the dog */ } /* loop forever */ /* please make sure that you never leave this function */ }
正しくプログラムが書くことができたので、 こんどは、アプリケーションボード単体で実行させてみます。
まず、評価ボードからUSBケーブルをはずします。 次にアプリケーションボードからBDM接続ケーブルをはずします。 最後に、アプリケーションボードの電池ケースに単4電池を挿入すると このアプリケーションボードは単独で動作を始めます。
今回用意したサンプルプログラムは、 光が移動するだけの単純な動きしかしません。 また、スイッチを取り付けましたが、このプログラムでは使用していません。 次なる課題は、スイッチに連動して残像を利用した文字表示プログラムの 実現です。 また、スイッチの操作をどのようにして待つかについても 色々な方法が考えられます。 このアプリケーションボードだけでも色々な応用が考えられます。