[AVR] 8MHzの限界

  • 投稿日:
  • 更新日:2009/03/13
  • by
  • カテゴリ: ,

現在、AVRは内蔵の8MHzクロックで動作させています。 もともと手持ちのものが古い(2世代目)ATmega8Lで、2.7V~5.5Vでの駆動が可能な代わりに8MHzまでの動作となっているためです。 姉妹品のATmega8は最高16MHzですが、4.5V~5.5Vでないと動作しません。 3.3V動作のSDカードまでバッファを介したくなかったため、これはこれで悪くないチョイスではありました。

しかし、現行のAVRは3世代目に入っており、mega8系の後継にはATmega88(他に48/168/328)があります。 これは、2.7V~5.5Vで20MHz動作が可能となっています。 さらに低電圧(1.8V~)対応版として、ATmega88Vがあります。 型名の最後にVがつくものはみなこのバージョンで、こちらは10MHzまでの動作です。

電力消費を減らしたP/PVバージョンもあるのですが、そこまでは拘らないので別にいいです。

いずれにしても、ATmega88が後継としてはいいチョイスということです。 幸い、以前日本に行ったときにためしに一つ買っておきました。

ただ、8MHz以上の周波数で動作させる場合は、必ず外部にクリスタルが必要です。

というわけで、今月頭に日本に行ったときに20MHzのクリスタルとコンデンサを少々買っておきました。

現在のSDカードドライバは、データの連続読み込み部分をかなりチューンしてありますが、1バイト読み込むためにはPC本体側で29クロック必要です。 そのため、inir(24クロック)は使えません。

また、セクタをまたぐアクセスにはそこそこ時間がかかります。 とは言っても、

  • 大部分の命令を1クロックで実行する
  • avr-gccが賢く最適化する

という感じでZ80とは根本的に異なるので、体感するようなことはほとんどないのですが。

でも、やはりZ80側をフルパワーで動作させても追従させてあげたいので、88に差し替えてみようかと思っています。 幸いI/Oも結構空いていることですし。

でも、ATmega8L、5個も買っちゃったんだよなぁ...。


こちらもよく読まれています