AVR

AVR関連の情報.

PICより高性能,1クロックで1命令を実行できる.PICに比べ分かりやすいアーキテクチャを持つ.
GCCを使ってCによる開発もできる.
megaシリーズだと外部メモリを接続して16ビット分の空間を使えるものがあるのが強みか.

低電圧(1.8V)から動作できるものもあり、すべては5Vで動作可能。 プログラミング環境であるAVRstudioにはデバック機能が備えつけられており、書いたソフトを1ステップごとに動作を確認できるため、基本的なデバッグが容易。

AVRライター

パラレルポートが使えるならデジットのドングル基板が便利.(STK200互換にするためにジャンパが1つ必要)
シリアルポート/USBなら,ELMの回路図が便利であろう.

デジット製のUSBライターも専用のライティングソフト付きで2100円で売られている。電源なしで書き込み可能。 信頼性は割と高いが、teratermなどで通信するためには別にUSBシリアル変換が必要。 ついでに、安くなってからとその前とではピンの向きが逆になっている。逆ざしして壊れることはないと思うけれど。

ft232rlというUSB-TTL変換チップのモジュールを使うと、Bit BangによってUSBライターとして動作させることができる。Aliexpressから買うと2ドルほどであり秋月でも1000円しない程度で済む。

ISPコネクタ

1 MISO2 Vcc
3 SCK4 MOSI
5 RST(負論理)6 GND

ライティングソフト

ELMからDLできるもので十分かと思われる.

ft232rlをライターとして使う場合はAVRdudeを使う。現状windows用のまともな公式ビルドはないので、windowsユーザーはここのを使うとよい。 http://suz-avr.sblo.jp/category/780472-1.html

チップリスト参照用データ

チップリスト

tinyシリーズ

megaシリーズ

一覧

チップpin数flush memoryI/O数8bitタイマ(PWM)16bitタイマ(PWM)AD変換(ビット数)その他コメント
ATtiny158pin1K bytes62(1)-4(10bit)--
ATtiny25,45,858pin2,4,8K bytes62(4)-4(10bit)デッドタイムジェネレータサーボ制御向き?
ATtiny2620pin2K bytes161(2)-10(10bit)アナログ比較器-
ATtiny231320pin2K bytes181(2)1(2)-USART有りでパソコンとの通信が容易秋月だと120円
ATmega48,88,16828pin4,8,16K bytes232(4)1(2)6(10bit)(DIPの場合)アナログ比較器, USART168はマルツで525円
ATmega128TQFP 64pin128K bytes532(2)28(10bit)6つの1〜16bitPWM, USART2つ秋月で850円
ATmega328PDIP 28pin32K bytes232(4)1(2)6(10bit)USART,SPI,I2CArduino UNOのコア

共立(デジット)AVRライター対応AVR

ウォッチドッグタイマについて。

ウォッチドッグタイマ機能はデフォルトでオンにされており、特に設定をしない場合一定時間でリセットがかかる。これではまってしまうこともあるらしいので心の隅に留めておくとよいかと。

変数をROM上に配置する

変数が定数の場合にはROM上に配置することでマイコンの限られたRAMを節約することができ、H8等では、

const char buff[256];

と書けば変数は自動的にROM上に配置されるが、AVRではRAM上に配置されてしまう。

#include <avr/pgmspace.h>
prog_char buff[256];

と書くことで変数がROM上に配置される。
変数の扱いに関していろいろ制約はあるかも。(imai)

浮動小数点演算のパフォーマンス測定

測ってみた。(imai)
実行ステート数は100回実行したときのステート数
1演算当たりのステート数は、空関数を実行したときの値を引いて100で割った結果(小数点以下切り捨て)

テスト関数実行ステート数内容1演算当たりのステート数
test_func01903空関数0
test_func12011int型足し算1
test_func212175float型足し算102
test_func336239float型乗算343
test_func460375float型除算584
test_func52511long型足し算6
test_func68611long型乗算67
test_func764835long型除算629

乗算・除算はソフトウェアで反復処理を行っていて、引数によってステート数が代わり得るが、long型の除算が異様に遅い。
1 / 1 という演算がfloat型の測定に有利だったかも。
測定用コード

fileavr_test.c
filetest_func.c

リンク

日本語データシートのサイトは404が発生しています。2010年に翻訳者がサイトを閉鎖させています。 AVRwikiも2011/4/6現在404のようです。生きてる情報系サイトなんてあるんかしら。もりけん
AVRWikiの方は復活したようです。ついでにリンク修正。このページ自体も古くなってきたので修正したいなぁ。(d.sakai 2011/6/18)
翻訳している人はっけーん。(もりけん 11/08/30)
データシートの日本語訳はAVR.jpというサイトに移したようです(y.yamaguchi 2011/10/9)

AVR Wikihttp://avrwiki.jpn.ph/wiki.cgi
日本語データシートhttp://reef.path.ne.jp/~hero/hero.htm (リンク切れ), http://www.avr.jp/
awawa's report(AVRデータシートを翻訳中の人)http://awawa.mamagoto.com/