AVRのすすめ
やっとAVRについて書いていくことにしました。
AVRとは、ATMEL社のワンチップマイコンのことです。
AVビデオとは何の関係もありません。
【AVRとの出会い】
トラ技の1995年12月号でPIC特集がありました。18pin DIP で
一人前のコンピュータということに感心。さっそく秋月電子で16F84
を入手。トラ技に載っていた書き込み器を自作、LEDをピカピカ光ら
せてみました。当時はAKI-H8はまだなく、趣味で何かを制御をしよう
とする場合、AKI-80やSuper AKI-80を使っていました。仕事でも
Z80系は使う機会はたくさんありました。Z80用のCコンパイラも持って
いましたので、どうしてもPICでないと困るわけでもなく、また、PICの
アーキテクチャがどうにも好きになれず、PICはLEDピカピカで終わって
しまいました。
'96は転職したことなどもあってバタバタしていました。そのうちAKI-H8
ボードが発売され、それで遊んでいました。
1999年に、スペクトラムアナライザを手に入れました。これにはGPIBの
端子があり、プリンタを繋いで画面のコピーや、PCと繋いでスペアナを
制御できるようになっていました。GPIBをPCに装備するためにはけっこう
な費用がかかるため、GPIBをRS-232Cにコンバートするアダプタを自作
しようと思いました。こういう用途にはワンチップマイコンが適当かな、と
思い、トラ技の秋月の広告を見ていると、AVRマイコンが売られていました。
ATMELのサイトで英文マニュアルを落として読んでみると、なかなか良さそう。
そこで書き込みキットと共に買ってみました。
AT90S1200でGPIBアダプタを無事作ることができました。これは、トラ技
2001年2月号、『超シンプルなGP-IB/シリアル変換アダプタの製作,スペアナ
の観測画面をパソコンで取り込もう!』という記事になりました。
思ったよりもうまくいったのと、AVRのシンプルなアーキテクチャにすっかり
ハマってしまいました。
と、6年前に書いた、今でもCQ出版社のサイトからダウンロードできる
「初めての実用プログラム」を見直してみると、
mlop1:
in r16,PIND ;Lowになるまで待つ
andi r16,$40
brne mlop1
あらー、これはちょっといただけないです〜。
間違いではないけれどエレガントじゃないです。
こうでしょ。
mlop1
sbic PIND,6 ;Lowになるまで待つ
rjmp mlop1
もうひとつ同じような部分があります。(LowとHighが
逆ですが)
【その後】
AT90S1200は、AVRの中で最も最初に開発されたもので、RAMが無い
(32個のレジスタだけ)など、シンプル過ぎるきらいがありました。
さすがにこれではプログラムを作るのは厳しいものがあり、AT90S1200以外
のAVRではRAMが内蔵されるようになりました。A/Dコンバータが内蔵された
ものもあり、最近では何かコントローラを作る際、まずはAVRが使えないか、
と考えるようになりました。
【AVRの概要】
・プログラムは内蔵フラッシュROMに書きます。シリアル書き込みと
パラレル書き込みの2種類の書き込み方があります。
たいていはシリアル書き込みで充分です。書き込みの際に別電源は
不要です。4本の制御線をAVRに接続して書きます。
・RAMは最も初期タイプのAT90S1200やAtiny10/11/12/15/28以外は
内蔵されています。64バイト〜4kバイト、たいていは128〜1kバイトと
あまり多くはありません。(Megaシリーズでは4kバイトのものもあります))
・他にプログラムで書き換えができるEEPROMが64〜2kバイト内蔵されて
います。
・高速に命令を実行します。大半の命令を1クロックで実行します。
PICのように1命令実行するのに4クロックもかかりません。
クロックは最近のものでは16〜20MHzです。
・レジスタは8ビットのものが32本あります。前半の16本はやや使い方に
制限があります。(イミディエイト値のロードや比較、演算ができない)
一番後ろの方のレジスタは2本1組で16ビットのレジスタとして使え、
インデックスレジスタにもなります。
前半16本と後半16本の違いはありますが、直交性は非常に高いです。
・RISCマシンです。とってもシンプルなアーキテクチャです。アセンブラ
でプログラムを書くことに躊躇しないでいいです。
・よく使われているAVRは
20ピンのAT90S2313 ・ATiny26、
28ピンのAT90S4433・ATmega8・48・88・168、
40ピンのAT90S8515・8535
でしょうか。Megaシリーズが増えてきました。
他に8ピンや64ピンのものがあります。
AT90S〜は徐々に廃品種となり、後継のATiny〜やATmega〜に変わ
りつつあります。ATmega〜は乗算命令や、メモリにアクセスする便利な
命令が増えていてプログラムが楽です。水晶発振子やセラミック発振子
を外付けしなくても、内蔵RC発振器が使える機種が増えてきました。
A/Dコンバータが内蔵されている機種も増えてきました。
戻る