AVRは、Atmel社(http://www.atmel.com/)が、 作成している8bit RISC Flash Microcontrolerです。 プログラム用には1000回の書き込み保証のあるフラッシュメモリが搭載され、 データ用に10万回の書き込み保証のあるEEPROMが内蔵されています。 32本の8ビット汎用レジスタを持ち、 入出力に利用可能なパラレルポートがチップによって 3本から48本の範囲で用意されています。 このポートは5VでLEDを直接点灯できる能力があるものです。 チップによってはA-Dコンバータも用意されていますので、 かなり高度な処理が可能ということが分かって頂けると思います。 また、基本的にプログラムはシリーズ全てで互換性があります [1] ので、 コストやプログラムの規模に見合ったチップを利用することができます。 各チップの機能概要については http://www.atmel.com/atmel/products/prod199.htmを 参照してください。
AVRのためのプログラムライタにはいろいろなものがあります。 代表的なものは以下の通りです。
秋葉原の秋月電子通商 (http://www.akizuki.ne.jp/) の、Windows用の開発キット (Figure 1-1)。 定価8950円。 12V駆動。 シリアルポート経由の書き込みを行う。 書き込みを行うためにAVRを使っており、 このプログラム自身はAtmelのサイトなどから入手可能 [2]。 また、FreeBSDやLinuxで利用できるライタとしては akiavr (http://members.jcom.home.ne.jp/pnms/akiavr.html) があります。
Atmelの純正キット。 若干高価。
パラレルからの出力を直接書き込むもの。 DOSコマンドが提供されており、Windowsでも利用可能。 回路は一番簡単。 給電もパラレルを利用するが、ノートパソコンなどで不具合が 起きる可能性があり。
avrprog(後述)が仮定している回路。 Brian Dean氏によるものは一つ前の項目と同じもの。 パラレルを利用しており比較的簡単な回路。 1000円程度で製作可能。 給電はパラレルを利用するが、ノートパソコンなどで不具合が 起きる可能性があり。 この場合、5Vの外部電源を供給する必要がある。
最近になってFreeBSD portsに、devel/avr*という 開発環境が入りました。 devel/avrprogはライター用のプログラムで、 簡単な回路を作成することで、 パラレルポートからプログラムの書き込みや消去が可能になります。 また、devel/avr-binutilsをつかうことで、 アセンブラのプログラムやIntel HEXフォーマットへの変換が可能です。 devel/avr-gccとdevel/avr-libcを 利用することで、 C言語での開発も可能になっています。
今回は、AVRを題材にして、 アセンブラでプログラムを作成することを目標にします。 この時、できるだけお手軽に遊んでみることを目標にしますので、 portsなどあるものは使ってしまいます。
クロス開発環境の製作に興味のある方は、 内川さんの記事の方も是非参照してください。
| [1] | もちろん、存在しない入出力に対する操作は意味を持ちませんし、 それに対応している命令は用意されていませんので、 完全に互換性があるわけではありません。 |
| [2] | ただし、このプログラムを書き込むためには、 先にライタが必要になります。 |
| Next | ||
| AVRの情報源 |