さて、次のお題はこちら。もともとはUSBの話がこんなに伸びるつもりはなくて(なんか昔も似た様な事を書いているのはきっと気のせいです)、次は何にしましょうという事を2月位(某兄貴の送別会の折)に担当編集としていて、

筆者「PIC24なんてどう?」
担当「やさしく書いてくれるならオッケーっす」

と3秒で決まったのでありました。

ところがその後もずるずるとUSBの話を引っ張っている間に、後閑さんの連載(これとか、これ)が始まってしまった。幾らなんでももう一方PIC24の連載というのも、アレすぎる訳で、ちょっと考え直しである。

元々MCUという世界は恐ろしく幅が広い。古くはIntelの8048とか8051(今も8051に関しては、互換のCPUが健在である)、Z8/Z80/etc...といったCPUが使われ、その後はもっと高効率・高集積の8bitが登場。ついで16bitに移り、最近は32bit製品も大分出てきた。ここ数年のトレンドで言えば、8bit MCUベンダーが相次いで32bitに進出する傾向にあり、しかもここに独自アーキテクチャではなくARMのCortex-Mシリーズを採用する例が増えてきた。

もっとも、ここも当然独自色は様々である。例えばルネサスエレクトロニクスは旧NECエレクトロニクスのV850と旧ルネサステクノロジのSuper Hを引き続き維持する方針だが、富士通は独自のFRシリーズに加えてCortex-M3を搭載したFM3シリーズを今月発表するなど、必ずしもいきなり全量移行するわけではない。これは国外も同じで、例えばFreescaleは同社がこれまで開発してきたColdFireコアとPower PCコアに加えてCortex-M4コアをKinetisという名前で製品化したし、Atmelは同社の大ヒット作である8bitコアのAVRの後継としてAVR32をリリースしつつ、その一方で従来ARM9を搭載してきた用途向けの後継にCortex-M3搭載製品をリリースした。一方有力な32bitコアを持ち合わせなかったSTMicroelectronicsやNXP Semiconductorは、早くからCortex-Mシリーズの採用を決めており、現在では生産量、品種ともにかなりものとなっている。

まぁ逆の方向のベンダーもあり、8bit MCUベンダー最大手であるMicrochipは独自のPICシリーズを16bit拡張したPIC24をリリースしたが、32bitに関してはMIPS32 M4Kを採用したPIC32をリリースしており、先日次世代PIC32向けにMIPS32 M14Kのライセンスを受けたことを明らかにするなど、同社はこの路線を突っ走るようだ。

まぁこうしたメーカーのロードマップの話とかアーキテクチャの話も面白いのだが(希望があれば書きますが、どうします? >担当者様)、今回はもう少し下のレベルの話で、MCUを使ってモノを作りましょうという、後藤さんと良く似た話の方向性である。なんで? という話をすると、要するにWindowsやLinuxといった、ちゃんとしたOSが動くマシンであれこれ工作するには、色々面倒な事があって、それをMCUを使うと楽に出来るから、というのが最大の理由である。例えばPCでちょっと温度測定をやりたいとする。普通に考え付くのはUSBなりシリアルポート経由でデータを取り込める温度計を繋ぐ、という事だが問題はこの温度計が馬鹿にならないほど高いことだ。

大体において温度センサーそのものは、精度が要らないなら例えばMicrochipのMCP9701Aが秋葉原で1個20円(正確には秋月電子通商で10個で200円)で購入できる。こいつにパスコン1個取り付けて、A/Dコンバータに繋げばそれで温度測定が可能だ。ところが普通のPCでは、まずA/Dコンバータが無い。中には頑張ってAudio入力を使う人もいる(音声信号をデジタル化するのにA/Dコンバータが入っているので、これを流用する形)が、電圧レベルの変換が最低でも必要だし、温度センサーの電源を別途用意する必要がある。もっと面倒なのはソフトの側で、普通のAudio入出力は当然Audio用のDevice Driverががっちり握っているから、あくまでも音声信号として温度データを扱わせるか、もしくはデバイスドライバを書き直すという面倒な話になる。まぁ後者は普通やらないので前者で何とかすることになるが、結構面倒な作業であるのは間違いない。

同様に、汎用のI/O端子が「あるけど使えない」のも問題である。例えばIntelの場合だと、ICHにはかならずGPIO(General Purpose I/O)という端子が用意されており、これでデジタル信号の入出力が自由に可能である。が、チップセットに端子があるから、そのパターンがマザーボード上の基板に出ているとは限らないわけで、普通は出ていない。QFPパッケージなら直接端子にリード線をハンダ付けして……なんて技もあるが、BGAパッケージでこれは不可能(いや一旦BGAを引っぺがし、ワイヤを取り付けて元に戻すことも技術的に全く不可能ではないが、コストと手間を考えると馬鹿馬鹿しすぎる)である。

こうした場合にMCUを使うと楽、という話は以下次回にて。

ところで最後にお知らせです。2010年11月20~21日に東京工業大学 大岡山キャンパスで開催されるMake:Tokyo Meeting 06に筆者も「大原雄介」名義で個人出展させていただくことになっております。展示物はまだ確定していないのですが、筆者が某雑誌で連載していたArduino工作と、実はこのSecond Opinionでこれから御紹介しようと思っている工作のプロトタイプ、その他を展示する予定です。ご興味がある方はおいでくださいませ(原則、ブースに常駐いたします)。

(続く)