2002年4月20日
AVRStudio から使えるようなことが書いてあるので
Cygwin (mingw?) 入りのインストーラつきパッケージをダウンロードして使ってみた.
しかし AVR Stduio 4 では
まだ使えないようだ. しょうがないので AVR Studio 3 も落としてみた.
avr-objcopy: not found :
上のインストーラに含まれる bin\sh.exe がおかしくて
ワイルドカードの展開ができないっぽい.
このページの指示どおり bin\sh.exe を消したら
*1うまくコンパイルできた.
ただし,Cygwin インストール済みで,Cygwin の bin にパスが切ってある
*2ので,そっちの sh.exe が呼ばれてるはず.
AVRFreaks の掲示板 に Makefile (avr_make) の修正で回避できるようなことが書いてあったけど,無駄だった.
ソフトウェイトは最適化で消される :
出力ポートを順番にHighにするようなテストプログラムをコンパイルしたが,
LED の点滅が早すぎるのでウェイトを増やしたがぜんぜん変わらず,
なんとなくそんな予感はしたんだが,見事に gcc が最適化してくれちゃってた.で,
インラインアセンブラでウェイト をかける方法を見つけた.情報源が消えちゃったときのためにコピペ.
void CPU_wait(unsigned int time){ register unsigned char lpcnt; __asm__ __volatile__("\n" "CPU_wait_entry:\n\t" "ldi %0,200\n" "CPU_wait_lp:\n\t" "nop\n\t" "dec %0\n\t" "brne CPU_wait_lp\n\t" "sbiw %1,1\n\t" "brne CPU_wait_entry\n\t" :"=&a"(lpcnt) :"w"(time) ); return; }
*1:ほんとは,念のためファイル名を変えただけ
*2: Cygwin の inetd を立ち上げたときの名残り.