AVR の基本

とりあえず、買ってきた AT90S2313 の detasheet(doc0839.pdf)の p28 までを読むと基本的な説明があって大体把握することが出来た。
平素な英語で書かれているので読み易いし、有志の方による非公式の日本語訳も有名です。
概要について、 mega系 datasheet では省略されているっぽい。

気付いた特徴

ISP によるプログラミング

動作基板上に載せたまま書き込みが出来る

ほとんどの命令が 1クロック・サイクルで実行

命令によるサイクルの違いを余り意識しなくて良い
(実際には事前に命令が事前にプリフェッチされている)

汎用レジスタにアドレスが割り当てられている

アクセス方法によっては SRAM と同様なアドレス指定が出来る

割り込み優先順位

プログラムの先頭に置いたベクタ・テーブルで優先順位を設定

スリープ・モード

レジスタ・ファイル内容を保持したまま段階的にペリフェラル・モジュールを休止、全体のスリープ。
割り込みイネーブル時では割り込み発生で復帰

プルアップ抵抗内蔵

ポート(pin のグループ)によっては外付のプルアップ抵抗がいらない

アセンブラ

こればかりではないけれど、基本的に
  1. 行いたい命令を選んで
  2. 注目したレジスタを軸足に
  3. 別のレジスタ・ファイル, I/O レジスタ, 値などを指定
  4. 命令の実行によって、注目された値と指定した値が計算され
  5. 結果が注目したレジスタに入る
とりあえずは考えて良い。
これのくり返しで pin につながった LED を光らせたりする。

二進数(バイナリ値, binary value)

各桁が "1" か "0" しかない数え方。ソースには 0b???? などで
0123
2進011011

4桁のバイナリ値は、bitが "1" になっているものを左の桁から8,4,2,1 を足していけばよい。
1101 = 8+4+1 = 13
となる。一番左の桁が "0" のときは省略される。

また、データシートに出てくる用語で
一番大きい値側のbit桁(一般には左)を "MSB"、その逆の最小側のbit桁を "LSB" と表す。


.equ と .def の違い

AVR Studio 付属の Assembler2 の help を見ると とある。

「式」は数値や計算式。レジスタは r16 とかのレジスタ・ファイル。


[ Back ]