電音の工場ブログ

当ブログは…

自作エフェクターシンセサイザ製作のネタや開発覚え書きなど、筆者の電音活動を記録しています。お探しの記事が見つからない方は、検索カテゴリ一覧をご利用ください。

スパマーが来訪すると、ときどきコメントをはてなユーザのみに絞ったり開放したりすることがあります。

2007-10-18

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

| ワンチップマイコンの勉強法 - 電音の工場ブログ を含むブックマーク はてなブックマーク - ワンチップマイコンの勉強法 - 電音の工場ブログ ワンチップマイコンの勉強法 - 電音の工場ブログ のブックマークコメント

目次

  • [資料]ワンチップマイコンの勉強法
    • 徒然
      • プログラミングをしたことがあること
      • マイコンを使えるということ
      • アセンブリ言語とC言語
      • 勉強方法
    • いろいろなワンチップマイコン
      • PIC
      • AVR
      • その他のマイコン
    • えーのさんのご質問から

えーのさんからご質問をいただきました。

http://emusic.g.hatena.ne.jp/Chuck/20071017#c1192584342

ここで云うマイコンというのはマイクロ・コントローラのこと。コンピュータシステムをLSIに組み込んだもので、電子機器の制御用に適しています。昔は複数のICを組み合わせて構成したものですが、最近はマイクロコントローラは、演算論理ユニット(ALU)、メモリ、タイマ/カウンタ、入出力ポート(I/O)、シリアル・インターフェース、およびクロック発振器などをひとつのLSIにまとめてあって、ワンチップマイコンなどと呼んだりしています。

自分自身は、子供の頃にショップのPC-8001に無限ループを打ち込んで去ってくるようなことをしていつの間にかプログラミングを覚えたクチなので、勉強法をどのように表現したものか、かれこれ12時間ほど考えていたのですが、これは文字にならないと断念しました。

やはりご自分のやりたいことを形にする中で、獲得していくしかないのではないかと思います。


以上で結論は出ているのですが、蛇足ながら気になっているポイントを挙げたいと思います。

徒然

プログラミングをしたことがあること

パソコン/ワークステーション環境下でなんらかのプログラミングをしたことがあるというのが必要です。エクセルVBAでもいいです。マイコンといえどもコンピュータシステムですから、プログラミングって何?という認識だと勉強することが果てしなく多いです。

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

マイコンを使えるということ

例えばPICなどに習熟していること=マイコンを使える ということになりません。

自分のやりたいことをプログラムレベルに落とし込むことができる という思考が必要になります。これについて適当な書籍を知りません(いいとこアルゴリズム辞典ぐらいかなぁ)。マイコン入門本には実は書いてありません。ディジタル回路でも必要な思考ではあります。

アセンブリ言語とC言語

アセンブリ言語は、CPU固有の命令でプログラムを記述する言語であり、使用するマイコンにべったり依存しています。ほかのマイコンにプログラムを載せかえるときに苦労します。あとで見たときに自分で何やってるのかわからなくなることがあります(私のPICアセンブリ言語プログラム)。

C言語はもう少し抽象的に記述することができますので、移植しやすさUP・わかりやすさUP。汚く書くとその限りではありません。

勉強方法

特定のマイコンに習熟する上では動かしてみるのが一番でしょう。

自分のやりたいことをプログラムレベルに落とし込む にも動かして確認しながらだと進みが速いかも。

マイコンに周辺回路をいくつかつけた評価ボードというものを入手するとハードウェア部分を作らなくていいので楽です。しかし評価ボードによらなくても自分で作ってしまうのがいいでしょう。マイコンにスイッチ(4~8個)とLED(4~8個)、必要に応じて液晶とかロータリエンコーダとかをつけた基板を自作してしまうのがお勧めです。ブレッドボードでもいいですが、遊び倒すつもりで1枚組んでしまうのが吉。

たとえばこんなの。

sample board sample board sample board

ちなみに秋月のキットでは、マイコンボードというのが何種類かあります。これはマイコンに申し訳程度の周辺素子をつけただけで、ほとんど素のマイコンと変わらないです。マイコンが表面実装部品のときにはちょっとありがたいかな。

いろいろなワンチップマイコン

ワンチップマイコンPIC というわけではありません。さまざまなマイコンがあります。

こちらにいくつか最近のマイコンの導入に関する情報があります。http://www.eleki-jack.com/mycom2/

ひとつのシリーズで通したほうが理解と習熟は深まると言えましょう。しかし私は雑誌の付録などもコツコツ収集して、ときどき浮気してます。

私自身で何か作るときは以下のマイコンが主。最近はたいていはAVRです。昔はPICも使いましたがアセンブリ言語はすっかり忘れてしまいました。今後PICで新規プロジェクトを起こすことがあるかどうか不明です。

PIC
  • 今なら書込み器兼デバッガ+機能限定Cコンパイラが$10(+送料$25)。アセンブリ言語での開発環境は無料(チップメーカ提供)。
  • WEB上に情報多い。
  • 書籍多い。アマゾンでのPIC本
  • 石の動作は供給クロックの1/4(最近のものには1/2というのもあるとか)。
AVR
  • 書き込み環境は自作可能(980円でキットも出ている)。アセンブリ言語での開発環境無料(チップメーカ提供)。Cコンパイラも無料で、前述開発環境と連動して動く。安い純正デバッガが$49。
  • WEB上の情報はPICに較べ多いとはいいがたい。
  • 書籍少ない。アマゾンでのAVR本
  • 石の動作は供給クロックと同じ周波数。
その他のマイコン

云々できるほど使い込んでいないのでパス。

えーのさんのご質問から

どうやって勉強するか、多少の出費は仕方ない(当たり前)と思います。

マイコンへの書き込み環境は最近はそうとう安価になっています。

マイコンの習熟に関してはPIC/AVR/H8の有名どころはWEBサイトにかなり情報があったりします。

アイディアのプログラムへの落とし込み という部分では良いリソースがなかなかありません。自分の頭で考えるのが一番いいでしょう。

自分としては、難しい参考書より、直接PICに触れて学びたいので、秋月のキットとか良いかな~と思ってます。

若干誤解があります。

本屋さんに積まれているマイコンの参考書には難しいものはありません。どれも入門のものばかりです。

秋月のキットは、そのまま作る/よくわかっている人が改造する というものなので勉強には使えないと考えます。秋月マイコンボードは前述のように素のマイコンでじゅうぶんだと思います。

自分でプログラムしてそれをPICに書き込んで、実際に動かす。

簡単な動作で良いので、これを体感したいと思ってます。

一番の勉強法ではないでしょうか。

マイコンにスイッチとLED(とマイコンによっては発振子)をつけたボードを自作して、ボタンを押してLEDが点く・消える、ボタンを押したらLEDが1秒だけ点灯する、ボタンを押したらLEDが点滅する、ボタンを押したら複数LEDの光が流れる、最後のLEDの点灯状態を記憶する などができれば、エフェクトループプログラマは自作できるだけのスキルがあることになります。


いや~、長くなってしまいました。何かしらでもご参考になることがあれば幸いです。

えーのえーの2007/10/18 09:58おはようございます。
大変参考になります。
LEDの点灯をスイッチでON/OFF、自分の考える一番最初(初歩的)のマイコンだと思ってます。
トランジスタ技術の8月号、9月号のPIC特集、8月号だけですが買いました。
それにはちょうどそのLEDの点灯実験が掛かれてます。マイコンも付属してます。
そういうことから始めて、LEDを増やしたり・・・という風に発展して覚えていくのが良いですよね。
秋月のキット、勘違いしてました・・・危なかったです。・゚゚・(>_<;)・゚゚・

ゆいゆい2007/10/18 10:09たしかに、入門書と学術書は入手できるのですけど、入門のその先の技術が書かれている本は少ないですね。ソースを読めるようになったら、ほかの人がどのようにアイデアをプログラムに落とし込んでるか、解析するのもよいと思います。Chuckさんがよく言っている、「回路図やソースコードのない製作記事はだめだ」というところにつながるのかな。

ChuckChuck2007/10/18 13:06ゆいさんが私の文章の足りないところを補間してくれています。力が付いてきたら他人のを読むことが重要ですね。

ChuckChuck2007/10/22 04:25トラ技8,9月号のPICは少々特殊ですのでお気をつけください>えーのさん。