アプリケーションK2K

このアプリケーションは、 ソフトウェア開発の練習用に作成したハードウェアです。 1個のMCU、11個のLED、1個のタクトスイッチ、 そして単4電池2本が実装されています。 BDM端子もつけたので、オンボードプログラミングも可能です。 どんなアプリケーションになるかはプログラム次第です。

概要

このアプリケーションは、ソフトウェア屋さんに マイコンのプログラム開発を経験してもらうために作成した アプリケーションです。 そのため、ハードウェアは実に簡単です。

K2Kアプリケーション回路図
K2Kアプリケーションアートワーク
K2Kアプリケーション部品表
品名型番個数調達先
マイコンMC9S08QG8CPE1Freescale
LEDOSDR5113A11秋月電子
抵抗220Ω ¼W11手持ち在庫
積層セラミックコンデンサ0.1µF1秋月電子
タクタイルスイッチOMRON B3F1梅澤無線
電池ボックス単4×1本2秋月電子
片面ガラスユニバーサル基板95mm×72mm1秋月電子
ICソケット16P1手持ち在庫
ピンヘッダ1×41秋月電子
ピンヘッダ2×31秋月電子

部品がそろったら、製作に入ります。

LEDを取り付ける

まず、LEDを取り付けます。 LEDは、基板の端に一列に配置します。 この時に、基板の面に水平に光が発射されるように LEDの足を90度曲げてから基板に実装します。

LEDの足を曲げる冶具

11個のLEDの足をすべて同じ長さで曲げるのは、見た目よりも結構大変です。 きれいにそろえないと、光線の発射角度がまちまちになってしまいます。 そこで、まず、LEDの足を曲げるための冶具を作成しました。

LEDの足を曲げる冶具

冶具といっても、何のことは無い、基板の切れ端です。 この基板は、LEDを配置しようとしている基板と同じ位置から 切り出されているので、冶具に合えば基板にも合うという寸法です。 また、穴の位置でカットされているのがミソです。

この冶具の使い方ですが、 まず、下の写真のように冶具にLEDをあてがい、 ラジオペンチでしっかりとはさみます。 LEDの端子には、極性があります。 アノード端子(長い足)とカソード端子(短い足)の位置を 間違えないように気をつけてください。

冶具にLEDをあてがう

この時にLEDの足の位置と冶具の穴の位置を合わせることが重要です。 次に下の写真のように、片手でしっかりとラジオペンチを握って、 もう片方の手の指でLEDの足を曲げます。

LEDの足を曲げる

この時に曲げた足が基板の穴の位置に入り込んだ状態になります。

曲がったLEDの足
横から見たLEDの足

LEDを配置する

足を曲げたLEDは、基板の端から二番目の穴に配置します。

LEDを並べる

配置したLEDの足は、 基板から落ちないように曲げておきます。 このアプリケーションでは、LEDの足は短くしても良いので、 下の写真のようにアノードを基板の内側にカソードを基板の外側にまげて 0.1インチの長さでカットします。

LEDを仮固定する

最後にLEDの足を半田付けして固定します。

LEDを半田付けする

この時、隣の穴まで半田を流さないように注意します。 特にアノードの隣の穴は、後で抵抗を配置しますので、 半田付けをすると取り付けられなくなってしまいます。

抵抗を取り付ける

次は、220Ωの抵抗をLED一つに一本ずつ並べます。 ただし、抵抗の並べ方は光線の角度に影響しないので LEDのように厳密にそろえる必要はありません。

抵抗の足を曲げる

LEDの時と同じように基板の切れ端で冶具を作ってみました。

抵抗の足を曲げる冶具
冶具を使って抵抗の足を曲げる

ところが、あまり調子が良くありません。 二本ほど使ってみて、 残りはラジオペンチだけで曲げる従来どおりの方法をとりました。

抵抗を配置する

抵抗の足を曲げたら、基板に配置します。

抵抗を配置する

抵抗は、LEDの時と同じように足をまげて仮固定して半田付けします。

抵抗を半田付けする

抵抗の足のうち、マイコンに接続される側の足はまだ半田付けしません。 これらの足は、マイコンまでの配線としても使用されます。

マイコン用ICソケットを取り付ける

次は、マイコン用のICソケットを取り付けます。

ICソケットは、LEDや抵抗のように足をまげて仮固定することができません。 このため、ICソケットをテープで固定するなどの工夫が必要です。

ICソケットを配置する

ICソケットをテープなどで固定したら、半田付けします。

ICソケットを仮止めする

この時には、対角の二箇所だけ半田付けして仮止めします。 これは、ソケットが傾いていたような場合に すべての箇所を半田付けしてしまうと簡単には修正できなくなってしまう ためです。

LEDの配線を完了する

抵抗とICソケットの間を配線します。 抵抗の足を曲げて、届くところはそのまま配線します。 届かないところは、スズめっき線を使って配線します。

抵抗とICソケットの配線

LEDのもう一方の端子であるカソード側の配線を行います。 すべてのLEDのカソードをICソケットのVSSに接続するため、 スズめっき線を配線します。

LEDのカソードの配線

配線状態を検査する

以上で、LEDに関連した配線は終了しました。 ここで、ひとまず配線に誤りが無いかを検査します。 ICソケットのところで、 VSS端子と各ポート出力との間に3Vの乾電池を接続して LEDが点灯するかどうかを確認します。

LEDの配線の検査

この写真では、 電池のマイナス側を4番ピン(VSS)に、 プラス側を11番ピン(PTB1)につないているので、 LED1が点灯しています。

タクトスイッチとパスコンを取り付ける

タクトスイッチとパスコンを取り付けます。 タクトスイッチは、足の間隔が基板の穴の間隔よりも狭いので、 多少強引に入れることになります。 パスコンのほうは、抵抗と同様に足を折り曲げて仮固定します。

タクトスイッチとパスコンを配置する

どちらも半田付けをして後の配線に備えます。

電池ケースを取り付ける

次は、電池ケースを取り付けます。

取り付け金具を作る

今回使おうとしている電池ケースは、 基板に固定するための端子が出ていません。 そのため、このままでは基板に固定することができません。 また、軟質プラスチックで出来ているため、 半田ごてをあてると融けてしまう可能性があります。

そこで、電池ケースを固定するための金具をスズめっき線で作って、 電池ケースの端子を機械的に固定することにしました。 作成した金具は、以下の写真のようなものです。

電池ケース取り付け金具

この金具を電池ケースのラグ端子の穴に通して、 金具の両端を基板に固定します。

電池ケース取り付け状態

電池ケースが融ける怖れがあるため、 ラグ端子には半田付けをしていません。 テスタで実測したところ、0.1Ωの抵抗値を示したため、 このままで良しとしました。

電池ケース取り付け状態詳細

二本の電池ケースにそれぞれ二つラグ端子が付いていますので、 合計4本の金具を作って電池ケースを固定します。

固定された電池ケース

BDMピンヘッダを取り付ける

このボードは、オンボードプログラミングを可能にするため、 Background Debug Mode (BDM)に対応したインターフェースを 備えます。 このインターフェースは、 2×3構成のピンヘッダで提供されます。

BDMピンヘッダ

各端子に現れる信号については、開発ツールの説明で述べます。

致命的な失敗を防ぐために

以上でアプリケーションボードは完成です。 すぐに電源をつなぎたいところですが、 その前に致命的な間違いが無いかを確認しておきます。

電源のショートは無いか?

致命的な間違いの一つ目は、電源のショートです。 アプリケーション基板は、開発ツールと接続されるため、 ボード上での電源のショートは開発ツールを破壊することになります。

確認方法は、簡単です。 ICソケットの3番ピン(VDD)と4番ピン(VSS)の間の抵抗値を テスタで測定します。 この基板の場合には、直流的な電流経路が全く無いため、 テスタを当ててしばらくしているとメガオームクラスの抵抗値を示します。

電源ショートの検査

電源の取り違い無いか?

マイコンは、電源のプラスとマイナスを間違えただけで簡単に 破壊してしまいます。 この致命的間違いを検出するためには、 電池ケースのプラスとマイナスがICソケットに 正しく接続されているかを確認します。

電源接続の検査

この基板の場合には、 BDMピンヘッダからも電源が供給される場合がありますので、 ピンヘッダとICソケットとの間の配線も確認します。

開発ツールを準備する

アプリケーションボードはできました。 後は、マイコンを実装して、 開発ツールを使って好みのプログラムを書き込んだら完成です。 でも、開発ツールなんてどこにあるの?

開発ツールとしても使えるDEMO9S08QG8

Freeescale社は、多くの種類の評価ボードを販売しています。 その多くは、マイコンそのものの評価をするものなのですが、 最近の評価ボードは、評価ボードそのものに開発ツールが搭載されています。 DEMO9S08QG8もその一つです。

DEMO9S08QG8評価ボード

この評価ボードには、USBMULTILINKBDMという開発ツールと同等の機能を持った USB-to-BDMインターフェースが搭載されています。 この写真の右下の部分がUSB-to-BDMインターフェースです。

評価ボードを改造する

実は、評価ボードそのままでは開発ツールとしては使用できません。 この評価ボードに2×3構成のピンヘッダを追加すると 開発ツールとしても使えるようになります。 追加する位置は、上の写真の左下にあるBDM_PORTと印刷された箇所です。

評価ボードの改造箇所
評価ボードの改造

これで、開発ツールの準備は完了です。

BDM接続ケーブルを作る

開発ツールとアプリケーションボードをつなぐケーブルは、 開発ツールには付属しています。 ところが、DEMO9S08QG8評価ボードには付属していません。 このため、自力でケーブルを作成する必要があります。

コネクタの端子構成

BDMコネクタは、2×3コネクタとして規格化されています。 このコネクタには、以下のような信号線が接続されています。

BDM規格コネクタの信号配置
信号名ピン番号ピン番号信号名
BKGD12VSS
N.C.34RESET*
N.C.56VDD

N.C.は、接続せず(Non-Connection)という意味を表しています。 開発ツールもこのコネクタ規格を使用しています。

2×3コネクタを接続する

ここで作成するケーブルは、6芯のフラットケーブルの両端に 2×3;コネクタを接続したものです。

材料は、フラットケーブル、コネクタ、それに2×3に加工した 基板の切れ端を使用します。 ケーブルは、奇数番を偶数番よりも多少短めにして予備半田しておきます。

BDMコネクタ部の材料

まず、基板の切れ端に被服を剥いだ奇数番のケーブルの先端を差し込みます。 写真では、奥から1番ピン、3番ピン、5番ピンになっています。

基板にケーブルをさす

次にケーブルを差し込んだままの基板にさらにコネクタの端子を差し込んで 半田付けします。

奇数番を半田付け

最後に偶数番のケーブルを基板とコネクタ端子の間に差し込んで、 半田付けすると完成です。

偶数番ケーブルを差し込む
偶数番を半田付け

同じ作業をケーブルの両端に行うと接続ケーブルの完成です。

接続ケーブルの完成

開発ツールとの接続

いよいよ、アプリケーションボードと開発ツールを接続します。

評価ボードからMC9S08QG8チップを抜く

DEMO9S08QG8評価ボードを開発ツールとして使うには、 ソケットに搭載されているマイコンを取り外す必要があります。 IC取り外し冶具を使うのが最善なのですが、無い場合には、 ソケットとICの間にピンセットなどを差し込んでゆっくりとやさしく 抜いてやります。

マイコンを抜いた評価ボード

今のところMC9S08QG8チップは、この評価ボードでしか手に入りませんので、 壊さないように慎重に取り外して、導電性のスポンジで休ませます。

アプリケーションボードにマイコンを取り付ける

次に、アプリケーションボードに先ほど抜いたマイコンを挿します。

マイコンを挿入したアプリケーションボード

二つのボードをつなぐ

次に二つのボードをBDM接続ケーブルでつなぎます。

二つのボードをつなぐ

これで、プログラム開発の準備が完了しました。

CodeWarriorでプログラム開発

次は、プログラム開発です。

CodeWarriorを起動する

プロジェクトを作る

プログラムを記述する

#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ケーブルを接続する

USBケーブルをつなぐ

プログラムを書き込む

プログラムを実行する

アプリケーションボード単体で実行する

正しくプログラムが書くことができたので、 こんどは、アプリケーションボード単体で実行させてみます。

まず、評価ボードからUSBケーブルをはずします。 次にアプリケーションボードからBDM接続ケーブルをはずします。 最後に、アプリケーションボードの電池ケースに単4電池を挿入すると このアプリケーションボードは単独で動作を始めます。

単体で実行する

この後の課題

今回用意したサンプルプログラムは、 光が移動するだけの単純な動きしかしません。 また、スイッチを取り付けましたが、このプログラムでは使用していません。 次なる課題は、スイッチに連動して残像を利用した文字表示プログラムの 実現です。 また、スイッチの操作をどのようにして待つかについても 色々な方法が考えられます。 このアプリケーションボードだけでも色々な応用が考えられます。

Copyright (C) 2006 noritan.org ■