前のページに戻る◆注意◆このページの文及び図表はAVRマイコンの各種資料(最後に示す参考文献等)を参考にして私が独自にまとめたもので、内容に間違い等があるかもしれませんが、ご容赦ください。概要(AVRマイコンの概要)AVRマイコンはAtmel社のワンチップマイコンでPIC同様チップや開発環境が安価に入手できます。表1、図1は現在入手可能なAVRマイコンの一覧及びピン配置です。シリアル書き込み時の供給電圧は2.7V〜6.0Vの単一電源で、1,000回書き換え可能。データメモリは32本の汎用レジスタと内蔵SRAM(最大512バイト)で、バンク切換えなしにアクセス可能。EEPROMデータメモリが独立しています。プログラムメモリは16ビット長で、$000番地からリセットベクタ、割り込みベクタの順に割り当てられています。割り込みベクタはPICマイコンと異なり、割り込み要因毎に用意されています。汎用レジスタ及びI/Oレジスタは図2のように、それぞれR0〜R31、$00〜$3Fで指定するようになっています。データメモリは8ビット長で、32本の汎用レジスタ、64本のI/Oレジスタ、内蔵SRAM、外部増設SRAMがリニアにマップされています。汎用レジスタは全てがアキュムレータとして使用することができます。汎用レジスタには16ビット長のインデックスレジスタが3本(AT90S1200は8ビット長1本)が割り当てられています。タイマ/カウンタ等のペリフェラルを制御する64本のレジスタがあります。内蔵SRAMは数値データの記憶以外に、スタックエリアとしても使用します。大量のデータを高速に読書きすることが可能となっています。データ用EEPROMは100,000回の書き換え可能です。ペリフェラルAVRマイコンには表1のようにワンチップマイコン定番のペリフェラルが組み込まれています。I/OピンI/Oピンの構造は図3のようになっています。各ピンの駆動能力はシンク電流が20mA、ソース電流が10mAとLED程度の負荷であれば問題無く駆動できます。低くなっているので注意が必要です。図3のようにI/Oピンの出力にPORTn、入力にPINn(n=A,B,C,D)と別のレジスタが割り当てられています。命令セットの概要AVRマイコンの命令語長は16ビットです。命令はシングル・ワードが基本ですが、必要であればダブル・ワード命令も採用しています。全ての汎用レジスタがアキュムレータとしてレジスタ間演算処理に使用することができます。定数を汎用レジスタにロードする命令や、汎用レジスタと定数間の演算ではR16〜R31に限られるので注意が必要です。32本のレジスタが全て同等というわけでもありません。SRAMに効率よくアクセスする下記のような命令が多く用意されています。スタック操作SRAMを内蔵する機種では、I/Oレジスタに16ビット長のスタックポインタが用意されています。スタックエリアにはSRAMを使用します。PUSH命令やPOP命令も用意されています。AT90S1200はSRAMを内蔵しないため3レベルのハードウェア・スタックが用意されています。プログラムカウンタPICマイコンのようにプログラムカウンタがレジスタにマップされていません。よって、プログラムカウンタを操作してジャンプすることができなくなりました。Zレジスタを用いた間接ジャンプが可能ですから問題はないと思います。RET命令で変更したアドレスに移ることができます。キャリービットをセットするSEC命令は同一のオブジェクトコードとなります。このように同一コードをとなる命令が多くあります。PICマイコンのように必要最低限の命令数としてほしかったです。