8.調整用プログラムの書き込み


最初にWindows パソコン上にプログラム開発環境を構築します.この開発環境はロボットが完成した後のプログラム開発にも使用します.

以下の説明では秋月電子通商で販売しているAKI-H8/3664F Tiny マイコン専用 Cコンパイラを利用することを前提にしています. ルネサステクノロジ製の無償コンパイラHEW2 を使用する場合は, こちらのページ を参考にして下さい(事前にStep 4でファイル取得しておき,プログラムをロボットのマイコンに書き込むところまで終えたところで Step 7, 8 を実行して下さい).

Step 1 - 必要なものの確認

まず,以下のものを用意します.

  1. AKI-H8/3664キットに付属のアセンブラ・モニタ・デバッガCD
    (これはWIN98/95/ME/XPに対応しているようです.)
  2. AKI-H8/3664F Tiny マイコン専用 CコンパイラCD
  3. RS232C-Dsub9Pオス−9Pメス ストレートケーブル
    (片側オス,片側メスの延長ケーブルです.電気屋さんにはメス−メスのRS232Cケーブルも売っていますので注意して下さい.)
    (注:「テクニカル工房製TEC-ATR3664P キット」を使用する場合は手順2の最後で説明したようなストレートケーブルが必要になります.)
  4. RS232Cポート(シリアルポート,|○|○|ポート)を備えたWindowsパソコン.
    パソコンにRS232Cポートが無い場合は,USB-シリアル変換ケーブルで代用できます.
  5. AKI-H8/3664タイニーを載せた,出来たての標準ロボット.
    (ロボットには電池もセットしておいて下さい.)

Step 2 - プログラム開発環境の用意

最初に,プログラムをコンパイルしたり,ライブラリやオブジェクト同士をリンクしたりする作業用のフォルダを用意しましょう.(すでに自分専用のプログラム開発環境を構築して使いこなしている方は,そのままお使い頂いて結構です.Step 4 のプログラムだけをダウンロードして適切に配置して下さい.)

Cドライブに"H8"という名のフォルダを作り,その中に"3664"という名前のフォルダを作って下さい.そして,"3664"フォルダの中にアセンブラ・デバッガ・モニタCDの中のASM フォルダの中からASM38.EXE とLNK.EXE をコピーします.

つぎに,AKI-H8/3664F Tiny マイコン専用 CコンパイラのCDの中から H の拡張子のついているファイルすべてと,LIB 拡張子のついているファイル,および EXE の拡張子の付いているファイルすべてをこのフォルダにコピーします.

H の拡張子のついているファイル(ヘッダーファイル)が16個,LIB という拡張子のついているファイル(ライブラリーファイル)が2個,そしてEXE の拡張子の付いているファイルが8個あればOKです.

ファイルの個数の確認が済んだなら,H8 という親フォルダに戻り,こちらの中には,アセンブラ・デバッガ・モニタCDの中のWRITER フォルダの中から3664.MOT とHTERM.EXE をコピーします.そしてつぎに,作成したソースプログラムをしまっておくフォルダ,"src"フォルダとコンパイルされたオブジェクトファイルをまとめておくフォルダ,"obj"フォルダを作成します.

以上で,プログラムの書き込みに必要な最小限度の準備が整いましたが,各種のドキュメントファイルが手元にあった方が良いと思われるなら,"docs" フォルダも用意してそこに必要なドキュメントをコピーしておくと良いでしょう.

  1. 「クロスアセンブラシステムユーザーズマニュアルH8SMAN.PDF」
    (アセンブラ・デバッガ・モニタCDのASMフォルダの中に収録)
  2. 「CコンパイラユーザーズマニュアルCOMPILER.PDF」
    (CコンパイラCDのMANUALフォルダの中に収録)
  3. 「HTERMの使い方READMER.TXT」
    (アセンブラ・デバッガ・モニタCDのWRITERフォルダの中に収録)
  4. 「H8/3664シリーズ,H8/3664,H8/3664Nハードウェアマニュアル」
    RENESAS H8/300H Tiny シリーズの関連マニュアルからダウンロード)
  5. 「H8/300Hシリーズ プログラミングマニュアル」
    RENESAS H8/300H Tiny シリーズの関連マニュアルからダウンロード)
などが後で役に立つと思います.

Step 3 - バッチファイルの用意

秋月電子のプログラム開発ツールは価格が安くて有難いのですが,DOS窓ベースで使わなければいけません.そこで,できるだけキーを打たなくて済むように,そしてなおかつ効率良くプログラム開発ができるように,バッチファイルを活用することにします.

プログラム開発に必要と思われるバッチファイルを作成しておきましたので,以下のURLからダウンロードして解凍して下さい.最新のバッチはVersion 0.3.0 です.(2003年のバッチも2004年度キットで使えます)

ダウンロード先:batch_0.3.0.lzh

batchフォルダの中には以下の3つのバッチファイルが入っています.それら総てを C:\H8 フォルダに置いて下さい.

  1. asm.bat: アセンブラー言語で書かれたプログラムをアセンブルしてオブジェクトファイルを作るのに必要なバッチファイルです.対象となるアセンブラソースプログラム(拡張子は.mar)は C:\H8\src フォルダに置かれていなければなりません.オブジェクトファイルはC:\H8\obj フォルダにできます.
    使用法:
    asm ファイル名    (ただし,ファイル名の拡張子はつけてはいけません.)
    アセンブルがうまくいったかどうかは,DOS 窓にも表示されますが,C:\H8フォルダにできるERRファイルにも記録されています.
  2. cc.bat: C言語で書かれたプログラムをコンパイルしてオブジェクトファイルを作るバッチファイルで,幾つかのソースプログラムから一つのプログラムを作ろうとするときに必要になります.対象となるCソースプログラム(拡張子は.c)はC:\H8\src フォルダに置かれていなければなりません.オブジェクトファイルはC:\H8\obj フォルダにできます.
    使用法:
    cc ファイル名    (ただし,ファイル名の拡張子はつけてはいけません.)
    コンパイルの結果情報は C:\H8フォルダ内の ERR ファイルとlst ファイルに出力されます.
  3. make.bat: C言語で書かれたプログラムをコンパイルし,必要なオブジェクトとリンクして書き込み形式のabsファイルを作るのに必要なバッチファイルです.Cのプログラムを作る上ではこのバッチを使う機会が一番多いので,対象となるファイルはC:\H8 フォルダに置きます.
    使用法:
    make ファイル名    (ただし,ファイル名の拡張子はつけてはいけません.)
    出力のABS ファイルはC:\H8 フォルダにできます.その他,lst ファイル,ERR ファイル,MAP ファイルもできます.

Step 4 - プログラムのダウンロード

標準ロボットを動かすのに必要なプログラムを以下のURLからダウンロードします.現在のプログラムバージョンはVersion 0.3です.(バッチファイルとプログラムのバージョンが上2桁まで同じであることを確認して下さい.バージョンが異なると正常に動かないことがあります.)

ダウンロード:program_0.3.6.lzh (2005/4/22現在の最新バージョン)

もし他にプログラムの最新版があれば,次のURLからダウンロードします.上のプログラムの中身と差し替えて使って下さい.

http://kamuy.elec.muroran-it.ac.jp/robocon2/making/2004/techknow/program.html

解凍後は以下のファイルが現れますので,これらを下の指示通りフォルダに移して下さい.

  1. core.mar: アセンブラ言語で書かれたロボットの中枢プログラムです.ソースプログラムなので,C:\H8\srcフォルダに入れます.
  2. robot.h: C言語ヘッダーファイルで,ロボットを動かすための様々な関数が定義されています.このファイルはC:\H8\3664フォルダに入れて下さい.
  3. robot.c: ロボットを動かすためのC言語プログラムテンプレートです.今のところはC:\H8\srcフォルダに入れます.
  4. check.c: 標準ロボットの動作チェック用のプログラムです.C:\H8フォルダに入れます.(2003年度版のcheck.c に相当)
  5. check1.c: 標準ロボットの動作チェック用のプログラムです.C:\H8フォルダに入れます.(2002年度版のcheck.c に相当)
  6. check2.c: 標準ロボットの動作チェック用のプログラムです.C:\H8フォルダに入れます.(2002年度版のcheck2.c に相当)

Step 5 - プログラムのアセンブル/コンパイル

マイコンボードに書き込むためのファイルを作るには以下のような手順が必要になります.

  1. asm.bat を使って core.mar をアセンブルし,core.objを作ります.core.mar を書き換えない限り,この作業は一度だけでよいです
  2. make.bat を使って作成したC言語プログラムをコンパイルし,上で作成したcore.obj とリンクします.例えば,user.cというファイル名のC言語プログラムを作成したとすると,この作業で user.ABS というマイコンに書き込み可能なファイルができます.書き込み方に関しては後から説明することにします.

では,試してみましょう.まず,Windows の「スタート」→「プログラム」→「MS-DOS プロンプト」(Windows Me では MS-DOS プロンプトは「アクセサリ」の中の「MS-DOS プロンプト」.Windows XPなら「スタート」→「すべてのプログラム」→「アクセサリ」の中の「コマンドプロンプト」)を選択して,いわゆる「DOS 窓」を開きます.そして,下の赤文字のように入力していきます.

C:\WINDOWS>cd \h8 (Enter)
C:\H8>asm core (Enter)

すると,DOS 窓に色々な表示が現れた後,以下のような表示をしてコマンド待ちの状態になるはずです.

C:\H8フォルダ内にできたcore.ERR ファイルにも同じ内容が出力されているはずです.エラーがなければもう参照することはありませんからcore.ERR は削除して下さい.(もし,上記以外の表示が出たとしたら,core.mar がC:\H8\srcに置かれていないか,アセンブラASM38.EXE がC:\H8\3664フォルダにない可能性があります.)

以上で,Cプログラムの開発環境は整いました.標準ロボットの動きをチェックするプログラム check.c を使って,マイコンに書き込む形式のプログラムファイルcheck.ABS を作成してみましょう.と言ってもいたって簡単で,DOS 窓上で以下のように打ち込むだけです.

C:\H8>make check (Enter)

すると,色々表示されたあと,以下のような表示をしてコマンド待ちになります.

C:\H8フォルダの中には,check.ABS の他にcheck.lst, check.ERR, check.MAP という3つのファイルが新しくできているはずです.今の場合はエラーも出ずに無事終了したと思いますが,プログラムにバグがある場合には,ERR ファイルに問題のある行番号とエラーメッセージが出力されます.

Step 6 - ABS フィアルの書き込み

最初にパソコンのシリアルポートをチェックしておきましょう.Windows の「スタート」→「設定」で「コントロールパネル」を選択し,開かれたウインドウの中からシステムアイコンをダブルクリックします.すると,システムプロパティのウインドウが開かれますので,そこで「デバイスマネージャ」のパネルを選んで下さい.表示された項目一覧の中に「ポート(COMとLTP)」があるはずですから,「+」のところをクリックして使用できるCOMポートが何番に割り当てられているか調べます.下の例ではCOM1とCOM2が使用可能であることがわかります.

Windows XPを使っている方は,「コントロールパネル」→「システム」とアイコンを選び,システムのプロパティのウインドウが開かれてら,「ハードウェア」のタグを選択します.すると真ん中の段にデバイスマネージャのプロパティが現れますからそこでデバイスマネージャのボタンを選択します.あとは,Windows 98などと同じです.

COM1ポートが使えるものとしましょう.RS232C延長ケーブルをマイコンのシリアルポート(COM1ポート)に接続し,一方をH8/3664F Tiny のコネクタに接続します.パソコンのハードウェアの都合でCOM1 以外のポートしか使えない場合には,そのポートの番号を覚えておいて下さい.標準ロボットの方は,電源スイッチがOFF,ブートスイッチがブートモードになっていることを確認して下さい.

つぎに,MS-DOS プロンプトを開いて C:\H8 フォルダに移り,書き込みプログラム HTERM.EXE を立ち上げます.

C:\WINDOWS>cd \h8 (Enter)
C:\H8>hterm (Enter)

COM1以外のポートを使わざるを得なかった方は,hterm の後ろに ポートを明記して下さい.例えばCOM2 を使うのであれば,hterm com2 というように入力します.さて,HTERM が立ち上がると,上のように表示してコマンド待ちの状態になりますので,ここで

Ctrl キーを押しながら F キーを押して,フラッシュメモリに書き込む操作であることを知らせてあげます.

すると,上のようなメッセージを出してきますので,ここで,ロボットキットのブートスイッチがブートモードにセットされていることを確認した上で,ロボット本体の電源スイッチをON にし,Enter キーを押して下さい.

Input Control Program Name : という表示が出て,コマンド待ちになったなら

Input Control Program Name : 3664.mot (Enter)

と入力して,フラッシュメモリを初期化するコントロールプログラムを指定します.少し時間がかかるかも知れませんが,最終的に以下のような表示が出て,書き込むべきABS プログラムが要求されます.(もし,Timeout Error ! という表示が出てしまった場合は,ケーブルがしっかりとコネクタにささっていないか,ブートスイッチがブートモードになっていないか,H8/3664F Tiny の電源が入っていないか,あるいは電池が消耗しているかです.確認して下さい.それでも同じエラーが出るようでしたら,外部に取り付けたトグルスイッチからプリント基板のコネクタまでの配線に問題があります.)

今の場合は check.ABS を書き込みたいので

Input Program File Name : check (Enter)

と入力します.拡張子は付けても付けなくても構いません.プログラムが長いので結構時間がかかりますが,最後にProgram Completed. と表示が出ると書き込みは完了です.Escキーを押してHTERM から抜け出て下さい.なお,HTERM を途中で抜けるときにもEscキーは有効ですが,プログラム名が要求されているときに強制終了するには「Ctrl+C」を押す必要があります.

書き込みが済んだなら,ロボット本体の電源を切り,コネクタからRS232C ケーブルを外します.

ここで紹介した一連の手続きは,プログラムを作ってロボットに書き込むときにいつも必要となる作業です.必要に応じて読み直して下さい.

Step 7 - 車輪の回転方向の調整

ベースボードについているディップスイッチのレバーを2個ともONと書かれている側(基板の外側)にセットして下さい.つぎに,ブートスイッチをノーマルモード(RUNの状態)にし,電源スイッチをON にします.するとベース基板上の2個のLEDが交互に点滅し,両方の車輪が回転を始めるはずです.この回転は電源スイッチをOFFにするまで止まりません.もし,車輪がこの標準ロボットを地面に置いたときにキャスタの方向に進む向きに回転しているのなら,あなたは運が強い人です(笑).反対方向に回転している場合は,一度電源スイッチを切り,モータ端子に繋がっているコードの半田を溶かし,キャスタのある方へ進むように付け替えて下さい.ここで,もしコードが長いようでしたら,余分なたるみが出ないように長さの調節もして下さい.

Step 8 - エンコーダ基板の取り付け位置の調整

電源スイッチをOFFにした状態で,1と書かれている方のディップスイッチを1の側にセットし電源スイッチをONにします.両方の車輪ともゆっくりと安定した前進回転をするようなら,あなたはさらに運の強い人です.全速力で勢い良く回ってしまうようなら電源スイッチをOFFにし,ロボットを裏返してエンコーダ基板が見えるようにして下さい.両方の基板ともブロックに直角に取り付けられているでしょうか.まず,側面の基板を直角にしっかりと固定して下さい.つぎに上面の長い切り込みのある基板も直角に固定して再度スイッチを入れてみて下さい.前と同じようなら,またスイッチを切り,今度は上面の基板を穴の向きに少しだけ並行にずらして取り付けます.そして回転の様子を観察します.これを繰り返すと,どこかで必ずゆっくりと前進回転するような取り付け位置を発見できますから,その位置でしっかりと直角に固定して下さい.これで,走行系の調整は終わりです.

以上で,走行系の調整は完了です.


前のページに戻る