今年は、マイコンカーを自分ではやらないと決めたので、後輩指導に回っている techno です。
という話はおいておいて、今日はミニマイコンカーのことを。
ミニマイコンカーといえば、うちの部活では1年教育用の、リセット連発イライラメーカー(ry
って感じなのですが、まあ教育用にはスピードも遅くてちょうどいい。
そもそも、普通の一般高校生にマイコンカーと資料渡して、ハイ、これ動かして。といってもできるわけないのは目に見えてるし。
まあ、ここらへんは XYZ とか現 2 年生が実証済みだろうw
実際のところ、ITU とか PWM 周り、初期設定など、speed 関数はなにをやっているのだか、わからないまま組んでる人も多いんじゃ?
少なくとも、個人的には後輩には動けばいい、走ればいいだけのマシンを作るだけじゃなくて、マイコンに関する基礎知識というか、とにかくマイコンカーのプログラムを1から組みなおせるぐらいの知識は付けてほしいから。
ミニマイコンカーは、開発環境として標準では "ブロっくん1号" という、ブロックで組んでいく開発環境が付属しています。
しかし、ロボットの面白みを味わうにはいいのだけど、正直高校生にもなってこれはない。
やっぱり、C で開発しないと、話にならないというかね・・・。
プログラムの自由度も低いし、これじゃ中でなにやっているかわからないからね・・・。
いつもどおり、前置きが長くなったが。
ミニマイコンカーを C 言語で動かしてみる方法を紹介する。
High-performance Embedded Workshop (HEW) で開発することを前提に、ワークスペースを作成してみる。
CPU は、もちろん H8/3687 を使います。
それと、今までブロっくんで動いてたプログラムをそのまま移行するので、プログラムを組みなおす必要がありません
1. 必要なもの
- ブロっくん (ミニマイコンカー CD に付属)
- ルネサス統合開発環境 H8/3687関連プログラム (マイコンカーラリー公式サイトで入手)
- ルネサス統合開発環境用その他ソフト (同上)
- High-performance Embedded Workshop (Renesas ホームページで入手)
これぐらい。
特別なこともやらないで、比較的簡単にできる。
2. やることの解説
ミニマイコンカーを C 言語で手っ取り早く開発する方法。
一番よいのは、既存のリソースを利用する方法である。
実は、ブロっくんは、C 言語に変換してから、コンパイルして書き込んでいる。
すなわち、ブロっくんで作成した、ブロックのプログラムは、どこかで C 言語に変換されているのである。
それを、HEW に移してくれば一件落着となるわけだ。
マイコンカーラリーのサイトで、3687 用のプログラムも配布されているので、そのまんま移行できる。
3. 下準備
まず、3687 用のプログラムをインストールする。
"ルネサス統合開発環境 H8/3687関連プログラム" をダウンロードして、所定の場所に解凍するだけ。
つぎに、3687 用のプロジェクトワークスペースを作成できるようにする。
"ルネサス統合開発環境用その他ソフト" を所定の場所に解凍する。
"C:\mcr\3687" を開いて、"Setup.exe" を実行し、HEW の位置を指定して、インストール。
これで終了。
4. プロジェクトワークスペースを作成してみる
まず、HEW を開いて、"新規プロジェクトワークスペースの作成" を選択。
[OK] を押し、先へ進む。
プロジェクトタイプから "3687" をを選択し、"ワークスペース名" には任意の名前を設定する。
今回は、mini というワークスペースを作成した。
いろいろ出てくるけど、全部 [OK] でよい。
もしかしたら、古い HEW を使ってると出てこないかも。
3687 用の空のワークスペースが作成された。
最初は、ファイルが空なので、これだけでは何も動かない。
C:\Workspace\mini\mini を開く。
ここが、ワークスペースプロジェクトのフォルダだ。
あとは、このフォルダにファイルを追加していく。
フォルダをそのまま開いておこう。
5. ブロっくんからのファイルの移行
まず、ブロっくんを開く。
記憶があやふやだが、たぶん一度ソースを出力するために、コンパイルする必要があったと思うので念のためやっておく。
そして、[ひらく] から、"ふるそうこう" を選び、ブロックを開く。
もし、今までにブロっくんで開発したプログラムがあるのなら、それを開いてもよい。
今まで作ったプログラムがあるなら、そのままのプログラムを移行できる。
そして、[てんそう] をクリックする。
ミニマイコンカーに書き込む必要はない。
書き込みソフトが出てきたら、あとはそのまま終了して OK だ。
その後、ブロっくんをインストールしたフォルダを開く。
デフォルトでは、"C:\BLOCKUN" になっているはずだ。
まず、ここのディレクトリから
- mcrstart.src
- mmcr.c
- soft.h
をコピーして、HEW のプロジェクトのフォルダに追加する。
そのとき、".hws" のファイルがある場所ではなく、"debug" フォルダのある、その下のディレクトリにコピーすること。
たとえば、ここに書かれているまま進めた場合は、先ほど開いておいた "C:\Workspace\mini\mini" にコピーする。
コピーするファイルの内容を解説しておくと、mmr.c がベースプログラムで、soft.h にスピード設定の内容が書かれている。
コピーするとこんなかんじ。
次に、ブロっくんのフォルダの中の、"Source" フォルダを開く。
ここに、ヘッダやコンパイラなどが入っている。
ここのフォルダから
- 3687s.h
- MACHINE.H
を抜き取り、HEW のプロジェクトのフォルダにコピーする。
6. プロジェクトへのファイルの追加
HEW の画面に切り替えて、プロジェクト名の部分を右クリックし [ファイルの追加...] を開く。
このようなダイアログが出てくるので、先ほどコピーしてきたファイル
- mcrstart.src
- mmcr.c
- soft.h
- 3687s.h
- MACHINE.H
を、選択して [追加] する。
複数選択は、"Ctrl" を押しながら書くファイルをクリックすることで可能だ。
追加してみた様子。
あとは、コンパイルして、書き込みをするだけだ。
書き込みには、3687 用の書き込みソフトを使う必要がある。
3048 につかっている、CPUWrite は使えないので注意。
C:\mcr のなかに説明があるので、そちらを参照してほしい。
FDT でも書き込み可能だと思う。
7. C 言語での開発
右側のツリーから "mmcr.c" をダブルクリックしてみよう。
左側に、ソースプログラムが表示されると思う。
このファイルがベースとなるプログラムである。
基本的には、これを改造するだけでよい。
まあ、マイコンカーのプログラムが理解できる人であれば、どんなことをやっているかすぐに理解できると思う。
とても簡単にプログラムを説明しておくと、当たり前ではあるが void main( void ) の関数内がメインプログラムになっている。
標準では下のほうにあるので、これを上のほうにもってきたほうが、開発しやすいと思う。(init の前)
仕組み的には、マイコンカーのプログラムと一緒で while(1) で無限ループさせて、センサーを読んでいる。
get_sensor() で、センサーの状態を取得する。
speed(FORWARD_L_5, FORWARD_R_5); な漢字で書かれているのでが、スピードの設定。
FORWARD_L_5 というのは、soft.h に #define されている値を呼び出してきている。
C で開発する場合は、直接数字に置き換えてしまっていいだろう。
直進させる場合は speed(100, 100); とすればよい。
ブロっくんで作ったプログラムをそのまま移植できると書いたが、C で開発するときは1から組みなおしたほうがいい。
なぜなら、かなり効率が悪いし、見づらくてしょうがない。
せめて、if の大群は、switch...case に置き換えるぐらいしたほうがよい。
あと、インデントもちゃんとして、見やすいプログラムに改変したほうが。
正直言って、複雑なプログラムをブロっくんでやってると、C に直した時、ものすごいスパゲッティになるようなきがする。
一応、パソコン慣れしてない人でもわかるように説明してみた。
ミニマイコンカーを、ぜひ C 言語でぐいぐいいじって遊んでみてほしい。
ブロックでは味わえない面白さがあると思う。
手抜きが大好きな人へ...
Download
プロジェクトを zip しました。
C:\Workspace\ に解凍して下さい。
最後に...
ちなみに、これ は課題研究でマイコンカーやる部員が見つけて、書き込んでみた。
というか、これがあったから、こんな記事書いてみたんだが。
まあ、某所ってまさにこのブログなわけでw
ってか、これ書いたときは記憶があやふやで、かなり適当なこと書いてるw
Program Files でもないし、アドレスの設定も要らなかった。

コメントする