profile-photo

1-chipCPUを使う

AtTiny


Arduinoは便利だけど、簡単な装置を作る時には要らない機能や回路が付いてくる事もある。また、もっと小さく作りたい時もある。
そんな時に僕はAtTinyを良く使う。AtMegaシリーズはピンの数が多くて、プリント基板を作るのが大変だからでもある。
AtTinyにも多くのバリエーションがあるが、ピンが8本しかないAtTiny12とかAtTiny85が使いやすい。
特に後者はUSBに繋いで使える汎用のボードも市販されているのが手軽だ。開発・実験はブレッドボードと、このボードでやっておいて、プリント基板を作ったら、チップを直接載せれば良いのだ。
ただしこの場合、Arduinoのように後からプログラムを変更しようとすると一工夫がいる。
CPUチップを基板から外すことができれば良いけど、SOPタイプなどはチップをハンダ付けしてしまうので、チップを外すことができないからだ。

 

001

AtTinyの種類などはネット上に情報が沢山あるし、Atmelから詳細なデータシートも公開されているので、そちらをご覧ください。
ここでは僕が個人的に気に入って良く使っているものを紹介します。
ちょっと値段は高いのだけど、AtTiny85がお気に入りです。IOの数は5点と少ないけど、ROMは8KB(SRAMは512B)もあり、内部クロックでは8MHzと、Arduino UNOに引けを取らない性能を持っているからだ。
パッケージはDIPとSOPで共に8Pでレイアウトも同じだ。DIPは便利だけど、ソケット実装にすると大きくなりすぎるので、PCBを起こすならやはりSOPが良い。SOPをDIPに変換してROMライタで書くためには変換ソケットが必要。写真右のごついのがそれだ。

002

因みに、Arduino UNOで使われている、AtMega328はDIL28Pなので、比べるとこんなに大きい。

003

基板(PCB)にCPUをハンダ付けしてしまった時にはプログラムの変更のために取り外すのは不可能に近い。
こんな時には"ICSP(InCirkitSerialProgramming"を使ってプログラムを書き込む。
そのためには予めPCBにICSPのピンを立てておく。そしてこのケーブルでArduinoと接続するのだ。

004

Arduino UNOはR3からICSP端子が付いているので、接続は簡単だ。
ただし、リセット(Reset)端子はUNOのリセットに繋がないで、D10に接続する。
こうして、UNOをUSBでパソコンに接続し、IDEを使ってプログラムをターゲットのAtTinyに書き込むことができる。

005

予めArduinoUnoにはArduinoISPのスケッチを書き込んでおき、「書込装置」は"Aduino as IDP"を選択しておく。
そしてArduino IDEのツールメニューで、「ボード」として"AtTiny85"を選んでおく。クロックは外部発振器を使わない時は「内部クロック」とする。

006

書き込む時は、書込ボタンでも良いが、「書込装置を使って書き込む」を使った方が確実。

007

ICSPを使わない(CPUを取り外すことができる)時には、P-ROMライタを使う。
接続は簡単なので、ブレッドボードに配線しても良いが、僕はユニバーサルボードを使って、作ってある。ソケットにZIFSを使うとチップの足を曲げてしまう心配も無くて便利だ。
接続についてはネット上に沢山情報がある。このライタの回路も下の「回路図」に掲載しておいた。

ROMへの書込とICSP

マイコンや組み込み型のコンピューターは、一般的にパソコンと違ってハードディスクやSSD等の外部記憶装置を持っていません。そのため動作に必要なプログラムはチップ若しくはシステムに内蔵されたROMに予め書き込んでおく必要があります。
この時に使われるのが「ROMライタ」です。
ROMライタは複雑なため非常に高価で、なかなか簡単には手が出る物ではありませんでした。勿論システム開発を専門に手がける会社などはこう言った物を開発ツールとして揃えており、どれだけの開発ツールを持っているかが、その会社の価値の尺度であったりはしたのですが…
ArduinoやArduinoIDEが登場して、この辺りの敷居がぐっと下がり、個人の趣味としてROMの書込が可能になりました。
Arduinoを書込装置としてICSP端子からシリアルでプログラムを転送できるようになったからです。

ブートローダー

パソコンは電源を入れると、まずROMに書かれたプログラムが走り、これがOSを読み込んで立ち上がってきます。
この最初に走る小さなプログラムを「ブートローダー」と言います。
「ブート」は英語のbootstrapから来た略語で、コンピュータを電源ONから起動するプログラムまたはコンピュータの起動そのものを意味します。「ローダー」は"loader"なので、起動後のプログラムを読み込むことを意味します。
Arduinoの場合は、予めROMにこのブートローダーが書かれていて、パソコンとUSBで接続してIDEからプログラムを読み込むことができるようになっています。


参考までにハードウェア・ソフトウェアの情報を。ただしこれらは僕の覚えであり、正確に改版を反映していない可能性があります。この通り作って動かないからと、怒らないで欲しい。