はじめに

2005年最初の四半期にNECエレクトロニクスから、完全フラッシュメモリの 78kワンチップマイクロコンピュータが、発売されました。 巷には、PIC、AVR、H8、R8C、PSoCと選ぶのに迷うほどマイコンが溢れています。 それなのに、78kを推奨するには、それなりの理由があります。 ワンチップマイクロコンピュータを利用したプログラムを作成するときに、最も 頭を痛めるのは、内蔵ハードウエアを自分が望むようにプログラムすることです。 内蔵ハードウエアを希望通りに動かすようにプログラムする作業は、それほど 簡単なことではありません。この作業を、コンフィグレーションと言いますが PIC、AVR、H8、R8C、PSoCの中で、コンフィグレーションをサポートするソフト ウエアを用意しているのは、筆者の知る限りでは、PSoCだけです。 他のワンチップマイクロコンピュータには、コンフィグレーションサポート用 のソフトウエアを、製造元は用意していません。アセンブリ言語、C言語等の 環境は用意されますが、内蔵ハードウエア動作に必要なコンフィグレーション ソフトウエアはありません。 コンフィグレーション処理は、使う側がマニュアルを丹念に読み、自作しろと 製造元は強いてきたのです。 そんな不満を抱えていた筆者のもとへ、「78kを完全フラッシュメモリ化し、 内蔵ハードウエアのコンフィグレーションサポートソフトがダウンロード可能 になった!」というニュースが飛び込んできました。 CQ出版のトランジスタ技術誌の広告、NECエレクトロニクスのホームページの 内容を読み終えたとき、体が震えました。「これは、使える。」と。 オートマ車は、クラッチ操作をなくし、多くの人に自動車を簡単に操作できる道 を開いただけでなく、体の不自由な人でも運転できる状況をもたらしました。 それと同じことが、ワンチップマイコンの世界にも起きようとしています。 コンフィグレーションをサポートしてくれるソフトウエア(Appliletと呼びます) が使える78kは、ハードウエア設計・ファームウエア開発を生業とする筆者に とって、時間短縮と開発効率向上が見込める魅力のあるオブジェクトなのです。 この魅力的な環境を、同じようなことで時間に追われている同業者や未来を担う 技術者のタマゴ達に紹介したいと思い、ジャステックラボ加野島さんが賛同され このページが実現しました。 同業者や未来の技術者のタマゴ達に何かの役に立てれば、幸いです。 本ページに関連する内容を、NECエレクトロニクスへ問い合わせる ことはおやめください。


舞台設定

中学生の父親であり中年プログラマである哲(テツ)さんが、子供にせがまれて ワンチップマイコンの勉強を始めます。ハードウエアとソフトウエアを作りつつ 実用的な時計とマニュピュレータロボットを制御します。 哲さんは大型計算機やオフィスコンピュータのプログラマ、SEでWindowsマシン でのCやJavaの経験はありますが、ロボットを動かすようなワンチップマイコン を触ったことがありません。 困った哲さんは、知人でハードウエアに詳しい啓二(ケイジ)さんの処に相談に 出かけました。啓二さんは、大企業でLSIを設計・開発したのですが、過労で 体を壊して、Uターンして大学で講師をしたり、頼まれたハードウエアや機械を 動かすプログラム(ファームウエア)を開発し生計を立てている人物です。 ちょっと、2人の会話に聞き耳を立ててみましょう。 哲 :子供が、ロボットを作りたいと言い始めたんだ。 啓二:ほう、それはそれは。今時、珍しいもんだ。学校で何かあったか。 哲 :TVで放映していたロボコンを先生が見せたらしいんだ。 啓二:その先生、わかってらっしゃる。 哲 :でも、ないんだ。 こんな難しいことができるようになるには、勉強だと発破をかけたらしい。 啓二:ロボコンのロボットは、そんなに難しくないよ。 逆に、アイデアを出す方が難しくて、学校の勉強でカバーできるところ は少ないよ。 自分で手を動かして、経験した内容を具体化できる方が大切だけどなあ。 哲 :ロボットのプログラムって難しいのか。 啓二:基本となる部分は簡単だよ。 哲 :あんな複雑な動きをするロボットのプログラムが難しくないってか。 啓二:お前、プログラマとSEやっているんだろうが。 複雑な動きでも、分解してみると、案外簡単なんだよ。 Windowsのプログラムだって、複雑な全体から、噛み砕いて 単純な50行程度のプログラムにまでするだろう。 それと同じ。 哲 :自分にも、できるかな。 啓二:できる、できる。 親父が自信をもってやってみせると、株があがるかも。 哲 :そうなんだよなあ。仕事が忙しくて、かまってないから、母親に べったりで、親父の威厳なんて、まるでなし。 啓二:ならば、ますます、マイコンのプログラムをマスターして、いいところ を見せなくちゃ。そのうち、子供と奥さんから粗大ゴミ扱いされるぞ。 哲 :どのくらいでマスターできるかな。 啓二:努力次第だよ。まあ、プログラマやSEならば、基礎的なところは 押さえているから、ハードウエアと機械を動かす部分を、重点的に マスターするとよいかな。 哲 :教えてくれるかな。 啓二:いいよ。でも、タダじゃ嫌だ。ハードウエアを作るための資金と 一週間に一度は、夕食をおごってくれよ。 哲 :お前、料理得意じゃないか。 ハードウエアを作るための資金ってどの程度必要なんだ。 啓二:測定器や電源なんかは、ここにあるのを使えばよいから不要だが 基板、LED、スイッチ、マイコンボードその他をひっくるめて 2万円程度。最近は、開発ツールその他は、メーカー側がWebで 公開してダウンロードできるようにしている。それを利用する。 哲 :食べ盛りの子供と女房を持つ身には、つらいなあ。 啓二:お前、全部自分で出そうと思っているのか。子供を味方につけるんだよ。 奥さんには、子供がやりたいと言っているし、教育の一環だと説得する。 哲 :財布は、女房が握っているからなあ。 啓二:子供のためとなると、母親族は弱いの。それに、教育費の一部で2万円と いうのは、12カ月で割ると1カ月¥2000まで行かないぞ。居酒屋に 行く回数を減らして、奥さんからは1カ月¥500程度を援助してもらう。 哲 :許してくれるかなあ。 啓二:お前の家の財務省との交渉は、内政干渉になるので、任せるよ。 で、やるのか、やらないのか。 哲 :やるやる。 啓二:じゃ、毎週土曜日の午後にしよう。そのとき、子供を連れて来いよ。 哲 :何故、子供を連れて行くんだ。 啓二:土曜日の午後に、一人で外出したら、奥さん怪しむだろう。 哲 :なるほど、でも子供は塾なんだ。 啓二:じゃ、犬の散歩にでもしておけよ。 哲 :お前に教えてもらっている間、犬はどうするんだ。 啓二:うちの子供に相手をさせるよ。 哲 :バツイチ独身のお前に、子供なんていないだろうが。 啓二:フフフ、うちの子供はAiboだぞ。 哲 :なるほど。 啓二:お前のところの犬は、子供と奥さんに振り回されているから、 ウチでは眠っているかもな。

目次

  1. ワンチップマイコンって何ものだ コンピュータの5機能 CPU、I/O、メモリ 80系、68系のマイコン マイコンのコンセプトは、日本が引き出した 2進数、8進数、10進数、16進数の話
  2. ハードウエアを用意しよう マイコンを入手しよう 開発環境を入手しよう 電池で簡単な電源回路をつくる 簡単なツールをつくる ダウンロード回路をつくる
  3. プログラムはどう作る マイコンを知る最適なプログラム言語 マイコンはどう動いている アドレッシングって何 構造化プログラム ステートマシンで簡単にプログラム Appliletを使ってみる シミュレータを使ってみる
  4. マイコンに手足をつける 制御基板をつくる スイッチ、LED、ブザーの知識 LEDを点灯させてみる ブザーを鳴らしてみる スイッチを使ってみよう どうやってテストするか
  5. 時計をつくろう 役に立つプログラムとハードウエア 表示はLEDかLCDか 時計の仕様を決めよう 機能分割した仕様を決めよう 仕様はトップダウン、制作はボトムアップ 出力から入力へでつくろう
  6. タイマー/カウンタ機能を利用しよう 何はなくとも、タイマー/カウンタ機能をマスター 制御の基本は、タイマー割込みだ フラグを利用して、複数のタイマーを利用しよう 時計にタイマー機能をつける 時計の処理をまとめる
  7. シリアルでやりとりしよう シリアル処理は、お手軽処理で 動作を外部から制御する コマンドインタプリタをつくる
  8. マニュピュレータロボットを動かそう 市販品か自作か DCモータの知識 本格的な電源回路 PWMを利用しよう 駆動回路はどうつくる
  9. Windowsマシンから動かしてみよう