AVRの特徴 |
●AVRの特徴
私には洗練されてるなーと感じられました。16bit固定長命令セットにいかに必要な命令をインプリメントしているかが命令セットを見てみると感じられました。命令セットは数が多い気がしますが使いこなせたらエレガントなコーディングができそうです。Cだとその辺を自動でやってくれそうな気がします。余談ですがGCCは市販コンパイラよりコードサイズがだいぶ(a
lot)小さくコンパイルできるそうです。GCCの作者本人いわく、「まだまだいけるよ」だそうです(笑)。
・RISCコア
1クロック1命令実行可能な8bitRISCコアを持ったマイクロコントローラです。1クロックで演算からレジスタの更新までを行うことができます。命令読み込み-実行のパイプラインでこれを実現しています。
・32本のレジスタと命令セット
もともとCで開発することを想定している32本ものレジスタを持っています。ダイレクトアドレッシングにより、charデータなどはポインタを使用するよりも効率よく取り扱うことができます。ポインタ使用時はディスプレースメント、ポストインクリメント、プリデクリメントなどいろいろできます。
分岐命令に便利なようにキャリーつき引き算時にはZフラグが伝播するようになっています(次々にANDされていきます)。また引き算を実行せずに比較してフラグのみ立てる命令があったり、さらにそのとき命令スキップしたり(PICのように)と便利な命令があります。
・ペリフェラル
種類により、その周辺に
RAM
プルアップI/O
内部オシレータ
タイマー
シリアル通信
PWM
ADC
コンパレータ
ウォッチドッグタイマ
EEPROM
などをもっています。それらは同じ空間(最大64K)にリニアに配置されています。またレジスタも同じ空間に配置されていてレジスタにポインタアクセスもできます。
・ISP書き込み
ISPプログラミング可能なコードflashメモリを備えています。簡単なI/Oがあればすぐにプログラミングできそうです。
AVRの種類 |
●AVRの種類
よく使いそうなもの、使いたいものを挙げてみました。黄色はWest&Fieldや秋月などで売ってるもの。
|
|
|
|
|
|
SPI | UART |
|
|
|
|
10bitADC |
|
etc. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OSC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOD |
AT90S2343 |
|
|
|
|
|
|
|
|
|
|
|
|
|
OSC |
AT90S4414 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOD |
AT90S4434 |
|
|
|
|
|
|
|
|
|
|
|
|
|
RTC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RTC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RTC,OSC,BOD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RTC,BOD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RTC,OSC,BOD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RTC |