連載
» 2005年04月11日 17時27分 UPDATE

春だからはじめる工作教室入門その1「PICで遊ぶために必要なもの」 (1/2)

昨年連載されてハンダこてフリークの心を熱くした「自作PCユーザーのための夏休み工作教室」。その講師だった小林氏による「春の講座」が開講する。今回のテーマは「マイコン」。まずは入門編ということで「マイコンでLEDをそれらしく光らせる」予定だ。

[小林哲雄,ITmedia]

小さくたってコンピュータ「PIC」ってナニ?

 PICとはMicroChipが発売している「Peripheral Interface Controller」のことだ。その名のとおり、周辺機器コントローラであり、小型パッケージにマイコンとしての機能をすべて備えていて安価、ということから組み込み用途として産業界で人気をよんだ。

 ちなみに、夏の工作教室の最後の回で使ったICは「NS555」だった。 NS555は汎用タイマICで、外部回路によって色々なことができる。夏の教室では「無安定マルチバイブレータ」という名の「発信機」として使っている。周波数は外部の抵抗とコンデンサで変化させる。

 では、PICを使うとどうなるのか? これが、同じこと、もしくはそれ以上のことがよりシンプルな回路で実現できる………かもしれない。「かもしれない」というのは、PICが使い物になるならないは読み込ませるプログラム次第で決まるため。

 大雑把な言いかたをすれば、PCとPICは同じコンピュータの仲間だ。それどころかPICはチップ1つで完結する。大昔のマイコン入門の本を開けば「マイコンはCPU、ROM、RAM、I/Oで構成される」と書いてある(はず)が、PICにはそれらがすべて含まれているのだ。

 筆者がPICに興味を持った5年ほど前は18ピンの「16F84」というチップ(冒頭の写真右上)が人気で、巷に出ている参考書もこれを使ったものが多い。が、今回はあえて別のものを使うことにした。

 というのも、16F84は内部クロック設定がないため外部クロックが必須となり、その分電子工作としては「ひと手間」かかるようになってしまうからだ。そしてなんといっても古い。さらに、よほど大掛かりなことをしないかぎり、16F84のスペックを使い切れない、という理由もある。

 「16F84」が当時人気だったのに、プログラムをフラッシュメモリに書き込めるので何度も試すことができるという仕様もあった。当時は小さな8ピンのPICでフラッシュROMを組み込んだものがなかったが、今なら「12F675」があるじゃないか。ということで、これを使ってこの春は遊んでみることにしよう。

kn_pci01zen.jpg 低ピン数のPIC。全部種類が違うものの見ためはあんまり変わらない。真ん中下にあるのが春の工作教室で扱う「PIC12F675」

PICファミリーのミドルレンジ「12F675」

 今回の主役である12F675の場合

  • RISC CPU(命令数35)
  • 1024ワードの命令格納フラッシュROM
  • 64バイトのRAM(これはレジスタとして使われる)
  • 128バイトのEEPROM
  • 電源以外の6ピンは入力可能、5ピンは出力可能、4ピンはアナログ入力可能
  • 内部クロック4MHz、外部クロックは最高20MHzまで

 と、その構成を見れば「たった8ピンでも立派なコンピュータ」だ。その立派なコンピュータが、例えば秋月電子なら1個150円程度で販売している。

 PICに入っているCPUはRISCの仲間だ。RISCとはその正式名称「Reduced Instruction Set Computer」のとおり単純な命令しか用意していない。ちなみに、この対極にあるのがCISCでこれは「Complex Instruction Set Computer」の略。

 RISCは少ない命令でシンプルに作れるためトランジスタ数が少なく(それゆえ安い)分かりやすい。しかしRISCの命令はシンプルすぎてちょっと複雑なことをさせようとすると手間がかかる、という欠点もある。

 一言で「PIC」というが、そのサポートする命令によって数種類のグループに分類されるが、そのなかで12F675は中位のグレードに属する。それでも命令はシンプルで、すべての命令が1つのワード(12F675は14ビット)で書ける。12F675には1024ワード分のフラッシュROMがあるので、1024の命令を読み込ませることが可能だ。

 実行もジャンプ系命令を除くすべてが単位時間の4クロックで実行できる。例外はジャンプ系命令の実行時で、これは2倍の時間がかかる。昔懐かしのマイコン時代に組み込みや時間にシビアなプログラムを書くときは「このルーチン(1単位)にどのぐらいの時間がかかるのか?」と計算するのがずいぶんと面倒だったが、これは命令によって実行時間の異なるCISC系だったため。

 12F675は外部クロックでは20MHzまで動作し、内部クロックとして4MHzが使える。内部クロックならば1命令1μsで実行(ジャンプ系命令は別)するので計算はいたって楽だ。

「とりあえず、タダ!」で遊ぶ環境をそろえてみる

       1|2 次のページへ

Copyright© 2016 ITmedia, Inc. All Rights Reserved.