AVRについて

このところ、AVRというマイコンの勉強をしています。
PICと比べて日本では少々不遇な扱い受けている気がしますが、電子工作には中々良さそうなマイコンです。
今回は概要について書いてみます。

AVRって何

AVRとは、アトメル社が開発と製造を行なっているワンチップマイコンの事です。

同じようなマイコンとしてマイクロチップ社のPICシリーズがあります。スペック的にも近いものがあるし、DIPパッケージもライナップされている点でもライバルなはずなのですが、日本であまり人気が無いようです。

メインは8ビット

PICでは8ビット、16ビット、32ビットのシリーズがありますが、AVRでは8ビットと32ビットのみです。しかし、32ビットはDIPパッケージ品が無いので電子工作では専ら8ビットのシリーズが使われているようです。ただ、32ビットが必要な場合はPICやAVRではなくてARMの方が色々良さそう。

AVRのシリーズ展開

AVRの8ビットのシリーズは大きく分けて次のような展開があります。

  • tinyAVR
  • megaAVR
  • AVR XMEGA

tinyAVRは最もコンパクトなシリーズです。低電源電圧で動作し、電源電圧の制約があるものの最大20MHzのCPUクロックで動作して意外にパワフルそうです。ただし、周辺機能やメモリ容量がかなり少ないです。

megaAVRはtinyAVRに比べて搭載される周辺回路やメモリ容量が多めになります。
このシリーズはあのArduino(アルドゥイーノ)に採用されているため、知名度は高めではないでしょうか。
こちらも低電圧で動作し、電源電圧の制約があるものの最大20MHzのCPUクロックで動作します。ただし、設計が古いものは最高動作クロックが低かったりするので注意が必要です。
DIPパッケージは28ピンと40ピンの二種類のみです。28ピンはスリムパッケージですが、40ピンは普通のサイズです。

最後にAVR XMEGAですが、これは面実装パッケージしかありません。なのでここでは取り扱いませんが、DMAが搭載されていたり動作クロックが最高32MHzと面白そうなのに残念です。

tinyAVR

前述のようにDIPパッケージが存在するAVRマイコンはtinyAVRシリーズとmegaAVRですが、特にtinyAVRはコンパクトなので気に入りました。特徴をまとめると次のようになります。なお、DIP品に限定しています。

  • 8ピン、14ピン、20ピン、28ピンのDIPパッケージあり。20ピンと28ピンはスリムパッケージなのでピン数の割に実装面積が少なくて済みます。
  • 1.8Vから5.5Vの電源電圧で動作しますが、低電圧ではクロック周波数が制限されたり、品番が変わったりするためちょっとややこしいです。
  • 外部クロックでも使えますが、内蔵CR発振器があるのでお手軽です。
  • プログラムはフラシュメモリに格納します。メモリ容量は1kバイトから8kバイトです。
  • RAM容量は0.03kバイトから0.5kバイトです。ちょっと寂しい。
  • ほとんどのデバイスに64バイトから512バイトのEEPROMが搭載されいます。さすがアトメル。
  • I/Oピンは2から28ピン。I/Oポートとして使うほか、他の機能と兼用ピンになっています。
  • 大抵ADコンバータが搭載されています。分解能は10ビットと低めです。
  • ADコンバータ内蔵品ではチップ内に温度センサが内蔵されている場合があります。
  • 大抵アナログコンパレータが付いています。これは割り込み要因にできる他、タイマ/カウンタと連動させる事もできます。
  • DAコンバータは搭載されていません。
  • タイマ/カウンタが一つまたは二つ搭載されています。コンパレータ付きでPWM波形の出力もできます。
  • 同期シリアルインターフェースを持つものがあります。SPIやI2Cに対応するので拡張が容易です。
  • 非同期シリアル通信が搭載されているのが物凄く少ないので外部通信が必要な場合はデバイス選択に注意が必要です。

また、RAMは少ないものの、ちゃんとしたスタック機能があるのでC言語による開発が普通に行えます。メーカー提供の開発環境の他、GCCが対応しているようなので趣味でやるには心強いです。

とりあえず、tinyAVRの中でもコンパクトさと機能のバランスが良い14ピンまたは20ピンのデバイスをターゲットに勉強しようと思います。成果は時折ここに書く思いますが、まとめるにも結構時間がかかるためどの程度投下できるかは分かりませんが・・・。