AVR の基本
とりあえず、買ってきた AT90S2313 の detasheet(doc0839.pdf)の p28 までを読むと基本的な説明があって大体把握することが出来た。
平素な英語で書かれているので読み易いし、有志の方による非公式の日本語訳も有名です。
概要について、 mega系 datasheet では省略されているっぽい。
気付いた特徴
- ISP によるプログラミング
-
動作基板上に載せたまま書き込みが出来る
- ほとんどの命令が 1クロック・サイクルで実行
-
命令によるサイクルの違いを余り意識しなくて良い
(実際には事前に命令が事前にプリフェッチされている)
- 汎用レジスタにアドレスが割り当てられている
-
アクセス方法によっては SRAM と同様なアドレス指定が出来る
- 割り込み優先順位
-
プログラムの先頭に置いたベクタ・テーブルで優先順位を設定
- スリープ・モード
-
レジスタ・ファイル内容を保持したまま段階的にペリフェラル・モジュールを休止、全体のスリープ。
割り込みイネーブル時では割り込み発生で復帰
- プルアップ抵抗内蔵
-
ポート(pin のグループ)によっては外付のプルアップ抵抗がいらない
アセンブラ
こればかりではないけれど、基本的に
- 行いたい命令を選んで
- 注目したレジスタを軸足に
- 別のレジスタ・ファイル, I/O レジスタ, 値などを指定
- 命令の実行によって、注目された値と指定した値が計算され
- 結果が注目したレジスタに入る
ととりあえずは考えて良い。
これのくり返しで pin につながった LED を光らせたりする。
二進数(バイナリ値, binary value)
各桁が "1" か "0" しかない数え方。ソースには 0b???? などで
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 ]