最終更新時間:2007年09月30日 21時22分31秒
[電子工作/AVR]
[AVR,WinAVR,AVRstudio]
AVRStudio6での設定方法を追記(2012-12-12)
AVR Studio4とWinAVRでLCDに実数表示させる場合に、
fprintf(fp, "%4,2f", ds);
なんて書いてもまともに出力されずにしばらくはまりました。・・で調べてみるとWinAVRのチュートリアルにちゃんと書いてありました。
浮動小数点を扱う場合は、リンカーオプション指示とmathライブラリとprintf用のfloatライブラリを明示的にリンクしなければいけないようです。
具体的には、AVR Studioの"Project"メニューから"Configration Options"を選択して、"Libraries"タブで"libm.a"と"libprintf_flt.a"を"Add Object..."で選択します。
つぎに下のほうの"Custom Options"タブで"[Linker Options]"に"-Wl,-u,vfprintf"を追加してやります。
これでプロジェクトをビルドしてAVRマイコンに書き込めば正常な表示が得られました。
設定方法が、AVRStudio4と多少違うので追記します。
プロジェクトのプロパティを開いて、AVR/GNU LinkerのGeneralにリストアップされている Use vprintf Library(-Wl,-u,-vfprintf)にチェックを追加する。
つぎに、同じくAVR/GNU LinkerのLibrariesにprintf_fltを追加する。おそらくlibmは最初からリストアップされている(単にmと表示)はずなので追加は不要と思うが、リストアップされていない場合はこれも必要。
ついでに、CPUのクロック周波数の宣言は次のとおり。