- USARTでSTDOUTを使えるようにする
- USARTからの入力で割り込みを受け付ける
printf()が使えて、同時に入力時の割り込みも可能になる。
- CrossPack for AVR
- ATmega88(ATmega88V)
- AVRISPmk2
- FT-232R(UART-USB変換器)
28PinDIPのATmegaなら
- RX,PD0(ピン2) を UART-USB変換器のTXへ
- TX,PD1(ピン3) を UART-USB変換器のRXへ
- UART-USB変換器のGNDをGNDへ
- AVRISPmk2を接続
make fuse でフューズビットの書き込み、ATmega88, 内蔵クロック8MHz, 8分周なし make でビルド、make flash で AVRISPmk2を使って書き込みという設定になっている。
フューズビットを書き込まず買ってきたままだと8分周有効になっているのでうまく動かない。
serial_init(usart_recieve);
sei();
で初期化する。usart_recieveには受信時のコールバック用の関数を指定。
受信を使わない場合はNULLにする。
受信を使う場合は初期化後に sei() で割り込みを許可する必要がある。
- CPUクロックスピード(8MHz)とボーレート(38400)はMakefile(avr-gccの-Dオプション)もしくはヘッダファイルに設定。
- 「Hello World! 番号」を表示し続けて、受信があったら「recieved: 文字」を表示する。
Simple Serial Communications With AVR Libc
Interrupt Driven UART Serial Communication for Atmel AVR
WormFood's AVR Baud Rate Calculator
OSX向けAVR開発環境。avr-gcc, avrdudeなどがセットで入っている。
インストール後、/usr/local/CrossPack-AVR/bin にパスを通す。
#!/bin/sh -x
export PATH=/usr/local/CrossPack-AVR/bin:$PATH
cd ~/Documents/AVR
pwd
というような avr.sh をHOMEディレクトリにおいて、ターミナルを開く毎に
$ . ~/avr.sh
とすると必要なときにパスを追加できて便利。 3行目のcd のところにはドキュメントなどを置いている任意のフォルダを指定しておく。