Tips

概要

AVRStudio+WinAVRでAVRのプログラムを書くときのヒント集.

ほかにも何かあればどんどん追加してください.

I/Oレジスタ中のビットの設定

WinAVRでは,各レジスタのビットに対応するマクロが定義されている.これを活用すると,レジスタの値を設定するときのコードが分かりやすくなる・・・かもしれない.

bv_usage.c

// IOレジスタのビットの設定方法.
// 例として,mega88でTIMER0を使ってOC0A/OC0Bから
// PWMを出す設定をする.

TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM01) | _BV(WGM00);
TCCR0B = _BV(CS00);

// PD5を出力に,PD2を入力にする.
DDRD |= _BV(PD5);
DDRD &= ~_BV(PD2);

_BV(n)は関数形式マクロで,(1<<n)に置き換えられます.つまり,n番目のビットだけが1となる整数を得られます.

(例1) _BV(0) → (1<<0) → 00000001(2)
(例2) _BV(3) → (1<<3) → 00001000(2)

Comments