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コンバータが内蔵されている機種も増えてきました。



戻る