AVR Libc Home Page AVRs AVR Libc Development Pages
Main Page User Manual Library Reference FAQ Alphabetical Index Example Projects

定義

<util/setbaud.h>: 通信レート計算補助マクロ

定義

#define BAUD_TOL   2
#define UBRR_VALUE
#define UBRRL_VALUE
#define UBRRH_VALUE
#define USE_2X   0

詳しい説明

   #define F_CPU 11059200
   #define BAUD 38400
   #include <util/setbaud.h>

このヘッダファイルは、F_CPUとBAUDが定義済みで値が入っていることを必要とします。その上、BOAD_TOLマクロは、計算において許容できるボーレートの許容誤差を(パーセントで)定めます。BAUD_TOLの値は、標準で2%です。

このヘッダファイルは、AVRのUARTボーレートのプリスケーラレジスタ用のマクロを定義します。全ての計算は、Cプリプロセッサを使用しています。このヘッダファイルを読み込むことは、他のいかなる副作用も引き起こさないため、(たぶん、BOADパラメータの値が異なっていても)複数回このファイルを読み込むことができ、同じ関数内においても可能です。

要求されたBAUDが与えられたF_CPUで有効と仮定すると、UBRR_VALUEマクロは必要なプリスケーラの値をセットします。さらに2つのマクロは、プリスケーラの下位と上位バイトに対してそれぞれ用意されており、UBRRL_VALUEはUBRR_VALUEの下位バイトに設定され、UBRRH_VALUEは上位バイトに設定されます。さらに、USE_2Xマクロを設定できます。もし、指定された許容誤差内において、希望するBAUDレートが、UART設定においてU2Xビットを設定することで提供できるならば、この値が1に設定されます。U2Xが必要ないならば、その値は0と定義されます。

使用例:

   #include <avr/io.h>

   #define F_CPU 4000000

   static void
   uart_9600(void)
   {
   #define BAUD 9600
   #include <util/setbaud.h>
   UBRRH = UBRRH_VALUE;
   UBRRL = UBRRL_VALUE;
   #if USE_2X
   UCSRA |= (1 << U2X);
   #else
   UCSRA &= ~(1 << U2X);
   #endif
   }

   static void
   uart_38400(void)
   {
   #undef BAUD  // avoid compiler warning
   #define BAUD 38400
   #include <util/setbaud.h>
   UBRRH = UBRRH_VALUE;
   UBRRL = UBRRL_VALUE;
   #if USE_2X
   UCSRA |= (1 << U2X);
   #else
   UCSRA &= ~(1 << U2X);
   #endif
   }

この例では、それぞれ9600ボーと38400ボーで動くUARTを設定した2つの関数を定義しています。4MHzのCPUクロックを使うと、9600ボーは、U2Xの設定を使わずに許容誤差を満足に達成(プリスケーラ25)でき、一方で38400ボーはU2Xを設定することを必要(プリスケーラ12)とします。


定義ドキュメント

#define BAUD_TOL   2

<util/setbaud.h>のための入出力マクロ

ボーレート許容誤差をパーセントで定義。設定されてなければ、標準値の2に設定されます。

#define UBRR_VALUE

<util/setbaud.h>からの出力マクロ

UBRRレジスタ用の計算されたボーレートのプリスケーラー値を含みます。

#define UBRRH_VALUE

<util/setbaud.h>からの出力マクロ

計算されたプリスケーラ値(UBRR_VALUE)の上位バイトを含みます。

#define UBRRL_VALUE

<util/setbaud.h>からの出力マクロ

計算されたプリスケーラ値(UBRR_VALUE)の下位バイトを含みます。

#define USE_2X   0

<util/setbaud.h>からの出力マクロ

UART設定においてU2Xビットを設定することで希望するボーレート許容誤差を実現できるなら、1の値を含みます。そうでなければ0を含みます。


Automatically generated by Doxygen 1.7.2 on Wed Feb 16 2011.

翻訳更新:2012年02月10日 by cega