[AVR] 8MHzの限界

| | コメント(3) | トラックバック(0)

現在、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個も買っちゃったんだよなぁ...。


トラックバック(0)

このブログ記事を参照しているブログ一覧: [AVR] 8MHzの限界

このブログ記事に対するトラックバックURL: http://www.markn.org/cgi-bin/mt/mt-tb.cgi/116

コメント(3)

僕も ATmega88 と 20MHz のクリスタル持ってます^^

ATmega88は3.3Vの場合20MHz 動作保証されません。
和文データシート 192ページ 26.3. 速度勾配 を見てください。
およそ13MHzです。(実力的には動きますけど・・)

データシートの26.3 Speed Gradesを確認しました。確かに、20MHz/3.3VはSafe Operating Areaからは外れてますね。いままで動かなかった試しがないので気づいてませんでした。10MHz/2.7Vと20MHz/4.5Vを結ぶ直線上が境界になっているのですね。

コメントする