酔漢電子工作手帳

2007-10-21

ワンチップマイコンの勉強法

09:50 | ワンチップマイコンの勉強法 - 酔漢電子工作手帳 を含むブックマーク はてなブックマーク - ワンチップマイコンの勉強法 - 酔漢電子工作手帳

Chuckさんのところで「PICマイコンを勉強したい」という声があり、Chuckさんが回答されています。その中の一節。

プログラミング経験なしでPICに取り組まれる第2の人生の方が見受けられ、手取り足取り指導+ときどき逆ギレ発動でつらいものがあります。

E-Musicグループ - 電音の工場ブログ - ワンチップマイコンの勉強法

確かに。これは難しいです。一方で、これを含めて勉強したいという希望があるだろうな、とも思います。振り返って、私はというと中学生のときに読んだこの本が大きな推進力になりました。

f:id:suikan:20071021091720j:image

これ以前にはNHK教養番組「みんなの科学」や初心者向けディジタル回路の説明*1、白土義男さんの書籍によってTTL ICによる回路の基礎くらいは分かっていました。上の本は、その基礎のおさらいから始まって、プロセッサって何?レジスタって何?メモリって何?アキュームレーターって何?といった非常に基礎的な展開がなされます。

そして、やっぱり大きな跳躍だったのが、「プログラムって何?」でした。単一のレジスタやメモリは、それを理解するのにさほど困りませんでしたが、命令の流れとなると、これまでまったくない概念でしたのでかなりてこずったのを覚えています。幸い中学生でしたし、分からないことは有り余る時間*2に物を言わせて繰り返し読めば済みました。なんにしてもこの本の丁寧な説明がないと難しかったかもしれません。

プログラムの実験に必要なアセンブラについては、著者は手作業によるアセンブルを紹介しています。ツールを動かすコンピュータがないのですから、仕方がありません。私もノートでいくつかアセンブルしたのを覚えています。

その後、本書では割り込み、バス、ペリフェラルの説明がなされたあと、コンピュータを一台組むところまで行きます。コンソールにトグルスイッチがずらりと並ぶ、懐かしいタイプのコンピュータです。

さて、昔話ばかりになってしまいました。今、最初の質問「マイコンの勉強をしたい」という要求に対して、この本のAVR/PIC/ARM7向けの書き換えで応えることができるでしょうか。私はNoだと思っています。

というのは、組み込みといえども開発の主体は高級言語だと思っているからです*3。そう考えるとロジック回路から初めてアセンブリ言語で終わり、では、いかにも竜頭蛇尾です。むしろ、アセンブリ言語に関しては省いていいのかもしれません*4

マイコンを勉強したい」というのは、どういう動機なのでしょうか。マイコン黎明期には単に知識欲に突き動かされた人たちが主流だったように感じます。逆に何かを制御したいと思ってもマイコンのやれることとやりたいことのギャップが大きすぎて苦しかったのではないかと思います*5ワークステーション化の過程で、PCが机に並べられない機械から遠ざかる一方で、いまや世の中にはマイコンに簡単につなげられるものであふれています。そういったものを扱ってみたい人にとって、論理回路からはじめるボトムアップのアプローチは辛そうです。

Chuckさんがおっしゃるような、「PCでのプログラミングの経験」は、その点とても大きな足がかりになりそうです。今、「私だけのマイコン 設計&製作」のような初心者向けの本を書くとしたら、トップダウンに降りていくアプローチのほうが適切かもしれません。

*1:当時の電子工作雑誌には、TTL ICによる工作が多く、情報は多かった

*2:塾もテレビゲームもなかった!

*3PICがどうなのかは知りません

*4:もちろん、プロは省いちゃだめ。最低限の知識は持っておくべき。でないと、割り込みハンドラやブートストラップロード、タスクスイッチ時に何が起きているのか分からなくなる。

*5:その点、マイクロマウスをあの時期に走らせた人たちはすばらしい

ChuckChuck2007/10/22 11:18自分自身、年代的にいい時期のムーブメントに乗った感はあります。モチベーションは周囲の雰囲気から、門前の小僧の蓄積は小学生から(なんか聞いたことある程度でも)。
仕事で後輩に教えるときはそれなりのベースラインを設定してそこから始められますが、一般の方にゼロから説明しようとするとまったく自信がありません(勉強の仕方という1段階メタなものでもあの程度のことしか書けない始末で)。あるアプリケーションを設定してそこからトップダウンに説明して、詳細の刈り取りはコラムか(あれば)続編かといったアプローチでしょうか。かくして入門本がたくさん並ぶというカラクリに繋がるのかなぁ…

fenrirfenrir2007/10/23 01:41僕の場合は、PCの黎明期にFEXT-PLLクロックアップキットを弄ったのが初めて半田ごてを握った瞬間でした。しかしながらその後はマイコンには音沙汰なく、数年間Javaプログラミングにハマッた後、偶然Basic-STAMPを触る機会があり、それから組込みにのめりこむようになりました。C言語をちゃんと学んだのもマイコンを弄りだしてからだったので、よく躓くといわれるポインタの理解もスムーズにできました。まだまだ満足はしていないですが、ここまでこれたのも全てが奇跡で満ち溢れていたような気がします。趣味で1からとなると、兎にも角にもマイコンとのよい出会いがあるかどうかではないでしょうか

suikansuikan2007/10/23 22:48私もそうですが、運とかタイミングはありますね。私の場合、PCに触れるまで丸々6年くらい座学だったので、頭を鍛える時間だけはありましたし、マイコンの進化もゆっくりしたものでした。今はやりたいことをやるための道具はそろっているのですが、道具について知らなければならないことが多すぎるとみんな感じるのかもしれません。
ブルバキ派に関する本を読んでいるので、少々夢見がち状態(^^;

monamour555monamour5552007/10/24 15:58趣味のPICでGPIO叩いて遊ぶという程度なら,敢えてアセンブラで貫徹するというのも,一つの楽しみ方かもしれないなとも思ったりします.言語Cでデバイスコントロールとなると,型(キャスト)/ポインタ/volatileなど,初学者が躓きがちな概念が山盛りだったりしますし.

suikansuikan2007/10/24 17:48結局何をしたいかなんですよね。コンピュータのことを知りたいなら、アセンブリ言語から入るほうがエキサイティングかなと思います。私がそうでしたし、30年くらい前に始めた人はみなそうでした。他に入り口もありませんでしたが。
モーター動かしたいとか、LEDをピカピカさせたいとか言う人には道は長いなぁ。

monamour555monamour5552007/10/24 18:0325年くらい前だと入り口はBASICなのですが,いずれにしても至る所未開拓な状態で,ちょっと頑張れば達成感に浸れることができたように思います.あの頃に比べると,既製品のレベルが上がりすぎて,仰る通り「何をしたいか」という意識付けを強く持たせないと息が続かないかもしれないですね.

何をしたいかさえ判らない人に対する回答として,LEGO Mindstormsは,上手いところを突いているように思います.5分で動き出す軟弱なオモチャに見えて,裏のゴール設定は,ファームを上書きhackしてくれ,ですよね.

ChuckChuck2007/10/25 07:58ああ、マインドストーム。手を出さないようにしています。深くのめりこんでしまいそうで…

suikansuikan2007/10/25 08:56TOPPERSのマインドストームへの傾斜には注目しています。でも、手は出しません(w

トラックバック - http://ecrafts.g.hatena.ne.jp/suikan/20071021