avr-libcの関数リスト

AVR Libc 1.6.7 で提供されているヘッダファイルと関数・マクロリスト

AVR Libc 日本語訳を作り始めました。のんびり更新していくつもりです。(協力者募集中)

標準的な関数

stdio.h 標準入出力

#include <stdio.h>

ファイル操作

関数プロトタイプ 説明
FILE * fdevopen (int(*put)(char, FILE *), int(*get)(FILE *)) ファイル入出力オープン
int fclose (FILE *__stream) ファイル入出力クローズ
int fflush (FILE *stream) ファイル入出力フラッシュ
size_t fread (void *__ptr, size_t __size, size_t __nmemb, FILE *__stream) ファイル読み出し
size_t fwrite (const void *__ptr, size_t __size, size_t __nmemb, FILE *__stream) ファイル書き込み
void clearerr (FILE *__stream) エラー状態の解除
int feof (FILE *__stream) ファイルの終了したか検出
int ferror (FILE *__stream) ファイルの読み書きでエラーしたか検出

文字列フォーマット出力

関数プロトタイプ 説明
int printf (const char *__fmt,…) フォーマット書式付き文字列出力 (stdoutへ)
int vprintf (const char *__fmt, va_list __ap) フォーマット書式付き文字列出力の可変引数版 (stdoutへ)
int sprintf (char *__s, const char *__fmt,…) フォーマット書式付き文字列出力( * __s へ文字列出力)
int vsprintf (char *__s, const char *__fmt, va_list ap) フォーマット書式付き文字列出力の可変引数版( * __s へ文字列出力)
int snprintf (char *__s, size_t __n, const char *__fmt,…) フォーマット書式付き文字列出力で出力文字数指定( * __s へ文字列出力)
int vsnprintf (char *__s, size_t __n, const char *__fmt, va_list ap) フォーマット書式付き文字列出力で出力文字数指定の可変引数版( * __s へ文字列出力)
int fprintf (FILE *__stream, const char *__fmt,…) フォーマット書式付き文字列出力(FILEへ出力)
int vfprintf (FILE *__stream, const char *__fmt, va_list __ap) フォーマット書式付き文字列出力の可変引数版(FILEへ出力)

文字列フォーマット出力(プログラムメモリ版)

関数プロトタイプ 説明
int printf_P (const char *__fmt,…) フォーマット書式付き文字列出力 (stdoutへ)
int sprintf_P (char *__s, const char *__fmt,…) フォーマット書式付き文字列出力( * __s へ文字列出力)
int vsprintf_P (char *__s, const char *__fmt, va_list ap) フォーマット書式付き文字列出力の可変引数版( * __s へ文字列出力)
int snprintf_P (char *__s, size_t __n, const char *__fmt,…) フォーマット書式付き文字列出力で出力文字数指定( * __s へ文字列出力)
int vsnprintf_P (char *__s, size_t __n, const char *__fmt, va_list ap) フォーマット書式付き文字列出力で出力文字数指定の可変引数版( * __s へ文字列出力)
int fprintf_P (FILE *__stream, const char *__fmt,…) フォーマット書式付き文字列出力(FILEへ出力)
int vfprintf_P (FILE *__stream, const char *__fmt, va_list __ap) フォーマット書式付き文字列出力の可変引数版(FILEへ出力)

文字列フォーマット入力

関数プロトタイプ 説明
int scanf (const char *__fmt,…) 書式付き入力変換 (stdinから)
int vscanf (const char *__fmt, va_list __ap) 書式付き入力変換の可変引数版 (stdinから)
int sscanf (const char *__buf, const char *__fmt,…) 書式付き入力変換 ( * __buf 文字列から)
int fscanf (FILE *__stream, const char *__fmt,…) 書式付き入力変換 (FILEから)
int vfscanf (FILE *__stream, const char *__fmt, va_list __ap) 書式付き入力変換の可変引数版 (FILEから)

文字列フォーマット入力(プログラムメモリ版)

関数プロトタイプ 説明
int scanf_P (const char *__fmt,…) 書式付き入力変換 (stdinから)
int sscanf_P (const char *__buf, const char *__fmt,…) 書式付き入力変換 ( * __buf 文字列から)
int fscanf_P (FILE *__stream, const char *__fmt,…) 書式付き入力変換 (FILEから)
int vfscanf_P (FILE *__stream, const char *__fmt, va_list __ap) 書式付き入力変換の可変引数版 (FILEから)

文字出力

関数プロトタイプ 説明
int fputc (int __c, FILE *__stream) 文字出力 (FILEへ)
int puts (const char *__str) 文字列出力 (stdoutへ)
int fputs (const char *__str, FILE *__stream) 文字列出力 (FILEへ)

文字出力(プログラムメモリ版)

関数プロトタイプ 説明
int puts_P (const char *__str) 文字列出力 (stdoutへ)
int fputs_P (const char *__str, FILE *__stream) 文字列出力 (FILEへ)

文字入力

関数プロトタイプ 説明
int fgetc (FILE *__stream) 文字入力 (FILEから)
char * gets (char *__str) 文字列入力 (stdinから)
char * fgets (char *__str, int __size, FILE *__stream) 文字列入力 (FILEから)
int ungetc (int __c, FILE *__stream) 入力ストリームへ文字を戻す (FILEへ)

stdlib.h 標準ライブラリ

#include <stdlib.h>

変換

関数プロトタイプ 説明
int atoi (const char *__s) __ATTR_PURE__ 文字列から整数int型へ変換
long atol (const char *__s) __ATTR_PURE__ 文字列から整数long int型へ変換
double atof (const char *__nptr) 文字列から浮動小数点float型へ変換
long strtol (const char *__nptr, char **__endptr, int __base) 文字列から整数long int型へ変換
unsigned long strtoul (const char *__nptr, char **__endptr, int __base) 文字列から整数unsigned long int型へ変換
double strtod (const char *__nptr, char **__endptr) 文字列から浮動小数点double型へ変換

Non-standard (i.e. non-ISO C) functions.

関数プロトタイプ 説明
char * itoa (int __val, char *__s, int __radix) 整数int型から文字列へ変換
char * utoa (unsigned int __val, char *__s, int __radix) 整数unsigned int型から文字列へ変換
char * ltoa (long int __val, char *__s, int __radix) 整数long int型から文字列へ変換
char * ultoa (unsigned long int __val, char *__s, int __radix) 整数unsigned long int型から文字列へ変換

乱数

関数プロトタイプ 説明
int rand (void) 擬似乱数生成
void srand (unsigned int __seed) 擬似乱数seed指定
int rand_r (unsigned long *__ctx) seed指定の擬似乱数生成

Non-standard (i.e. non-ISO C) functions.

関数プロトタイプ 説明
long random (void) 擬似乱数生成
void srandom (unsigned long __seed) 擬似乱数seed指定
long random_r (unsigned long *__ctx) seed指定の擬似乱数生成

変換

double型引数の変換関数

この関数は、標準ライブラリ(libc.a)に含まれておらず、数学ライブラリ(libm.a)に含まれています。 そのため、アプリケーションのリンク時に -lm オプションを指定する必要があります。

関数プロトタイプ 説明
char * dtostre (double __val, char *__s, unsigned char __prec, unsigned char __flags) doubleから指数表示の文字列へ変換
char * dtostrf (double __val, signed char __width, unsigned char __prec, char *__s) doubleから浮動小数表示の文字列へ変換

メモリ操作

関数プロトタイプ 説明
void * malloc (size_t __size) __ATTR_MALLOC__ メモリ割当
void * calloc (size_t __nele, size_t __size) __ATTR_MALLOC__ 初期化済みメモリ割当
void * realloc (void *__ptr, size_t __size) __ATTR_MALLOC__ メモリ割当変更
void free (void *__ptr) メモリ解放

数値変換系

関数プロトタイプ 説明
int abs (int __i) int型絶対値
long labs (long __i) long型絶対値
div_t div (int __num, int __denom) __asm__(“__divmodhi4”) int型割り算で商と剰余を取得
ldiv_t ldiv (long __num, long __denom) __asm__(“__divmodsi4”) long型割り算で商と剰余を取得

データ構造処理

void * bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, int(*__compar)(const void *, const void *)) 探索
void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) クイックソート

終了

void exit (int __status) __ATTR_NORETURN__ 終了
void abort (void) __ATTR_NORETURN__ 異常終了

alloca.h 自動開放メモリ割当

#include <alloca.h>

自動開放メモリ割当て

関数プロトタイプ 説明
void* alloca ( size_t __size ) スタックにメモリ確保する

setjmp.h ジャンプ処理

#include <setjmp.h>

ジャンプ処理

関数プロトタイプ 説明
int setjmp (jmp_buf __jmpb) ジャンプ処理
void longjmp (jmp_buf __jmpb, int __ret) __ATTR_NORETURN__ ジャンプ処理

ctype.h 文字処理

#include <ctype.h>

文字判定関数

関数プロトタイプ 説明
int isascii (int __c) ASCII文字判定
int isalnum (int __c) 英数字(A_Za_z0_9)判定
int isalpha (int __c) 英字(A_Za_z)判定
int isupper (int __c) 大文字(A_Z)判定
int islower (int __c) 小文字(a_z)判定
int isdigit (int __c) 数字(0_9)判定
int isxdigit (int __c) 16進数文字(a_fA_F0_9)判定
int isblank (int __c) 空白文字(Space or Tab)判定
int iscntrl (int __c) 制御文字判定
int isgraph (int __c) 表示可能文字判定(spaceのぞく)
int isprint (int __c) 表示可能文字判定(space含む)
int ispunct (int __c) 表示可能文字判定(英数字spaceのぞく)
int isspace (int __c) 空白文字判定(space/tab/vtab/改行/行頭復帰/改ページ)

変換関数

関数プロトタイプ 説明
int toupper (int __c) 大文字へ変換(a → A)
int tolower (int __c) 小文字へ変換(A → a)
int toascii (int __c) 7bit ASCII文字へ変換

string.h 文字列処理

#include <string.h>

ビット検出

関数プロトタイプ 説明
int ffs (int __val) 最初(最下位)にセットされているビット位置の検出
int ffsl (long __val) 最初(最下位)にセットされているビット位置の検出
int ffsll (long long __val) 最初(最下位)にセットされているビット位置の検出

メモリ

プログラムメモリ版は、avr/pgmspace.hを参照

関数プロトタイプ 説明
void * memcpy (void *, const void *, size_t) メモリ領域をコピー
void * memccpy (void *, const void *, int, size_t) メモリ領域をコピー (指定文字まで)
void * memchr (const void *, int, size_t) __ATTR_PURE__ メモリ内の文字検索
void * memrchr (const void *, int, size_t) __ATTR_PURE__ メモリ内の文字検索 (指定アドレスから)
int memcmp (const void *, const void *, size_t) __ATTR_PURE__ メモリ領域の比較
void * memmem (const void *, size_t, const void *, size_t) __ATTR_PURE__ 部分文字列の検索
void * memmove (void *, const void *, size_t) メモリ領域の移動
void * memset (void *, int, size_t) 指定メモリ領域全体に指定値をセット

文字列処理

プログラムメモリ版は、avr/pgmspace.hを参照

関数プロトタイプ 説明
size_t strlen (const char *) __ATTR_PURE__ 文字列の長さを求める
size_t strnlen (const char *, size_t) __ATTR_PURE__ 文字列の長さを求める (最大n文字)
char * strcat (char *, const char *) 文字列の連結
char * strncat (char *, const char *, size_t) n文字の文字列の連結
size_t strlcat (char *, const char *, size_t) n文字の文字列の連結
char * strcpy (char *, const char *) 文字列の複写
char * strncpy (char *, const char *, size_t) n文字の文字列の複写
size_t strlcpy (char *, const char *, size_t) n文字の文字列の複写
int strcmp (const char *, const char *) __ATTR_PURE__ 二つの文字列を比較
int strncmp (const char *, const char *, size_t) __ATTR_PURE__ 先頭からn文字の二つの文字列を比較
int strcasecmp (const char *, const char *) __ATTR_PURE__ 二つの文字列を大文字小文字を区別せず比較
int strncasecmp (const char *, const char *, size_t) __ATTR_PURE__ 先頭からn文字の二つの文字列を大文字小文字を区別せず比較
char * strstr (const char *, const char *) __ATTR_PURE__ 部分文字列の位置を検索
char * strcasestr (const char *, const char *) __ATTR_PURE__ 部分文字列の位置を大文字小文字を区別せず検索
char * strchr (const char *, int) __ATTR_PURE__ 文字を先頭から検索
char * strrchr (const char *, int) __ATTR_PURE__ 文字を後方から検索
char * strchrnul (const char *, int) __ATTR_PURE__ 文字を先頭から検索 (不一致時には最後のアドレスを返す)
char * strpbrk (const char *__s, const char *__accept) __ATTR_PURE__ 文字列から文字群を検索
size_t strspn (const char *__s, const char *__accept) __ATTR_PURE__ 文字列から文字群が含まれる長さを求める
size_t strcspn (const char *__s, const char *__reject) __ATTR_PURE__ 文字列から文字群が含まれない長さを求める
char * strdup (const char *s1) 文字列の複製
char * strlwr (char *) 文字列を小文字へ変換
char * strupr (char *) 文字列を大文字へ変換
char * strrev (char *) 文字列を逆順に変換
char * strsep (char **, const char *) 文字列から区切り文字を取り出す
char * strtok (char *, const char *) 文字列を区切り文字で分解
char * strtok_r (char *, const char *, char **) 文字列を区切り文字で分解 (リエントラント版)

math.h 数値演算

libm.a をリンクすること。

#include <math.h>

三角関数

関数プロトタイプ 説明
double cos (double __x) コサイン関数
double sin (double __x) サイン関数
double tan (double __x) タンジェント関数
double sinh (double __x) ハイパボリック・サイン関数
double cosh (double __x) ハイパボリック・コサイン関数
double tanh (double __x) ハイパボリック・タンジェント関数
double asin (double __x) アーク・サイン関数
double acos (double __x) アーク・コサイン関数
double atan (double __x) アーク・タンジェント関数
double atan2 (double __y, double __x) アーク・タンジェント関数

数値処理

関数プロトタイプ 説明
double fabs (double __x) double型絶対値
double fmod (double __x, double __y) double型剰余演算
double modf (double __x, double *__iptr) double型(x)を、整数部(iptr)・小数部(返値)へ分離
float modff (float __x, float *__iptr) float型(x)を、整数部(iptr)・小数部(返値)へ分離
double floor (double __x) 小数切り捨て (5.5 → 5.0)
double ceil (double __x) 小数切り上げ (5.5 → 6.0)
double frexp (double __x, int *__pexp) 仮数部と指数部の分離
double round (double __x) 四捨五入 (int用)
long lround (double __x) 四捨五入 (long用)
double trunc (double __x) 最も近い整数値へ丸める
long lrint (double __x) 丸め方向へ丸める

計算関数

関数プロトタイプ 説明
double sqrt (double __x) 平方根を計算
double cbrt (double __x) 立方根を計算
double hypot (double __x, double __y ユークリッド距離
double square (double __x) 二乗 (x * x)
double pow (double __x, double __y) べき乗を計算
double ldexp (double __x, int __exp) 2のn乗を計算
double exp (double __x) 指数関数を計算
double log (double __x) 自然対数を計算
double log10 (double __x) 常用対数を計算

値判定

関数プロトタイプ 説明
int isnan (double __x) NaN判定 (NaNならば非ゼロ)
static int isfinite (double __x) 無限大判定 (無限大なら非ゼロ)
int isinf (double __x) 負の無限大判定 (無限大なら非ゼロ)
int signbit (double __x) 符号判定 (負なら非ゼロ)

浮動小数点計算

関数プロトタイプ 説明
static double copysign (double __x, double __y) XにYの符号を複写
double fma (double __x, double __y, double __z) (x * y) + z を計算
double fdim (double __x, double __y) 正の差を計算
double fmax (double __x, double __y) 大きい方の値を返す
double fmin (double __x, double __y) 小さい方の値を返す

AVR特有の関数

avr/sfr_defs.h

#include <avr/sfr_defs.h>

Bit manipulation

関数プロトタイプ 説明
#define _BV(bit) (1 << (bit)) 指定ビットを1に

IO register bit manipulation

関数プロトタイプ 説明
#define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit)) SFRレジスタへの指定ビットをセット(1にする)
#define bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit))) SFRレジスタへの指定ビットをクリア(0にする)
#define loop_until_bit_is_set(sfr, bit) do { } while (bit_is_clear(sfr, bit)) SFRレジスタの指定ビットがセットされるまでループ
#define loop_until_bit_is_clear(sfr, bit) do { } while (bit_is_set(sfr, bit)) FSFRレジスタの指定ビットがクリアされるまでループ

avr/interrupt.h 割込関数

#include <avr/interrupt.h>

割込フラグのグローバル操作

グローバルな割込みフラグは、ステータス・レジスタ(SREG)で保持される。

関数プロトタイプ 説明
#define sei() 割込許可
#define cli() 割込無効

Macros for writing interrupt handler functions

関数プロトタイプ 説明
#define ISR(vector, attributes) ISR(割込)関数
#define SIGNAL(vector) SIGNAL関数
#define EMPTY_INTERRUPT(vector) 空割込
#define ISR_ALIAS(vector, target_vector) ISR(割込)エイリアス
#define reti() 割込終了(reti)関数
#define BADISR_vect BADISRベクタ

avr/eeprom.h 内蔵EEPROM制御

#include <avr/eeprom.h>

avr/eeprom.h 内蔵EEPROM制御の説明

EEPROM 1Byte(8bit) 操作

関数プロトタイプ 説明
uint8_t eeprom_read_byte (const uint8_t *__p) __ATTR_PURE__ EEPROM 1Byte(8bit)読出し
void eeprom_write_byte (uint8_t *__p, uint8_t __value) EEPROM 1Byte(8bit)書き込み
void eeprom_update_byte (uint8_t *__p, uint8_t __value) EEPROM 1Byte(8bit)更新

EEPROM 2Byte(16bit) 操作

関数プロトタイプ 説明
uint16_t eeprom_read_word (const uint16_t *__p) __ATTR_PURE__ EEPROM 2Byte(16bit)読出し
void eeprom_write_word (uint16_t *__p, uint16_t __value) EEPROM 2Byte(16bit)書き込み
void eeprom_update_word (uint16_t *__p, uint16_t __value) EEPROM 2Byte(16bit)更新

EEPROM 4Byte(32bit) 操作

関数プロトタイプ 説明
uint32_t eeprom_read_dword (const uint32_t *__p) __ATTR_PURE__ EEPROM 4Byte(32bit)読出し
void eeprom_write_dword (uint32_t *__p, uint32_t __value) EEPROM 4Byte(32bit)書き込み
void eeprom_update_dword (uint32_t *__p, uint32_t __value) EEPROM 4Byte(32bit)更新

EEPROM float 操作

関数プロトタイプ 説明
float eeprom_read_float (const float *__p) __ATTR_PURE__ EEPROM float読出し
void eeprom_write_float (float *__p, float __value) EEPROM float書き込み
void eeprom_update_float (float *__p, float __value) EEPROM float更新

EEPROM block 操作

関数プロトタイプ 説明
void eeprom_read_block (void *__dst, const void *__src, size_t __n) EEPROM ブロック読出し
void eeprom_write_block (const void *__src, void *__dst, size_t __n) EEPROM ブロック書き込み
void eeprom_update_block (const void *__src, void *__dst, size_t __n) EEPROM ブロック更新

avr/pgmspace.h プログラムメモリスペース操作

#include <avr/pgmspace.h>

関数プロトタイプ 説明
#define PSTR(s) ((const PROGMEM char *)(s))
#define pgm_read_byte_near(address_short) __LPM((uint16_t)(address_short)) プログラムメモリBYTE読出し(near shortアドレス)
#define pgm_read_word_near(address_short) __LPM_word((uint16_t)(address_short)) プログラムメモリWORD読出し(near shortアドレス)
#define pgm_read_dword_near(address_short) __LPM_dword((uint16_t)(address_short)) プログラムメモリDWORD読出し(near shortアドレス)
#define pgm_read_float_near(address_short) __LPM_float((uint16_t)(address_short)) プログラムメモリFLOAT読出し(near shortアドレス)
#define pgm_read_byte_far(address_long) __ELPM((uint32_t)(address_long)) プログラムメモリBYTE読出し(far longアドレス)
#define pgm_read_word_far(address_long) __ELPM_word((uint32_t)(address_long)) プログラムメモリWORD読出し(far longアドレス)
#define pgm_read_dword_far(address_long) __ELPM_dword((uint32_t)(address_long)) プログラムメモリDWORD読出し(far longアドレス)
#define pgm_read_float_far(address_long) __ELPM_float((uint32_t)(address_long)) プログラムメモリFLOAT読出し(far longアドレス)
#define pgm_read_byte(address_short) pgm_read_byte_near(address_short) pgm_read_byte_near()と同じ
#define pgm_read_word(address_short) pgm_read_word_near(address_short) pgm_read_word_near()と同じ
#define pgm_read_dword(address_short) pgm_read_dword_near(address_short) pgm_read_dword_near()と同じ
#define pgm_read_float(address_short) pgm_read_float_near(address_short) pgm_read_float_near()と同じ
#define PGM_P const prog_char * プログラムメモリポインタ
#define PGM_VOID_P const prog_void * ~プログラムメモリvoidポインタ
関数プロトタイプ 説明
void * memcpy_P (void *, PGM_VOID_P, size_t) メモリ領域をコピー
void * memccpy_P (void *, PGM_VOID_P, int __val, size_t) メモリ領域をコピー (指定文字まで)
PGM_VOID_P memchr_P (PGM_VOID_P, int __val, size_t __len) メモリ内の文字検索
PGM_VOID_P memrchr_P (PGM_VOID_P, int __val, size_t __len) メモリ内の文字検索 (指定アドレスから)
int memcmp_P (const void *, PGM_VOID_P, size_t) __ATTR_PURE__ メモリ領域の比較
void * memmem_P (const void *, size_t, PGM_VOID_P, size_t) __ATTR_PURE__ 部分文字列の検索
関数プロトタイプ 説明
size_t strlen_P (PGM_P) 文字列の長さを求める
size_t strnlen_P (PGM_P, size_t) 文字列の長さを求める (最大n文字)
char * strcat_P (char *, PGM_P) 文字列の連結
char * strncat_P (char *, PGM_P, size_t) n文字の文字列の連結
size_t strlcat_P (char *, PGM_P, size_t) n文字の文字列の連結
char * strcpy_P (char *, PGM_P) 文字列の複写
char * strncpy_P (char *, PGM_P, size_t) n文字の文字列の複写
size_t strlcpy_P (char *, PGM_P, size_t) n文字の文字列の複写
int strcmp_P (const char *, PGM_P) __ATTR_PURE__ 二つの文字列を比較
int strncmp_P (const char *, PGM_P, size_t) __ATTR_PURE__ 先頭からn文字の二つの文字列を比較
int strcasecmp_P (const char *, PGM_P) __ATTR_PURE__ 二つの文字列を大文字小文字を区別せず比較
int strncasecmp_P (const char *, PGM_P, size_t) __ATTR_PURE__ 先頭からn文字の二つの文字列を大文字小文字を区別せず比較
char * strstr_P (const char *, PGM_P) __ATTR_PURE__ 部分文字列の位置を検索
char * strcasestr_P (const char *, PGM_P) __ATTR_PURE__ 部分文字列の位置を大文字小文字を区別せず検索
PGM_P strchr_P (PGM_P, int __val) 文字を先頭から検索
PGM_P strrchr_P (PGM_P, int __val) 文字を後方から検索
PGM_P strchrnul_P (PGM_P, int __val) 文字を先頭から検索 (不一致時には最後のアドレスを返す)
char * strpbrk_P (const char *__s, PGM_P __accept) __ATTR_PURE__ 文字列から文字群を検索
size_t strspn_P (const char *__s, PGM_P __accept) __ATTR_PURE__ 文字列から文字群が含まれる長さを求める
size_t strcspn_P (const char *__s, PGM_P __reject) __ATTR_PURE__ 文字列から文字群が含まれない長さを求める
char * strsep_P (char **__sp, PGM_P __delim) 文字列から区切り文字を取り出す
char * strtok_P (char *s, PGM_P delim) 文字列を区切り文字で分解
char * strtok_rP (char *__s, PGM_P __delim, char **__last) 文字列を区切り文字で分解 (リエントラント版)

avr/power.h モジュール電源制御

#include <avr/power.h>

関数プロトタイプ 説明
power_xxx_enable() xxx用電源ON
power_xxx_disable() xxx用電源OFF

avr/sleep.h SLEEP制御

#include <avr/sleep.h>

関数プロトタイプ 説明
void sleep_enable (void) スリープ有効
void sleep_disable (void) スリープ無効
void sleep_cpu (void) スリープCPU
関数プロトタイプ 説明
set_sleep_mode() スリープモード設定
sleep_bod_disable() スリープBOD無効

avr/wdt.h ウォッチドックタイマー

#include <avr/wdt.h>

関数プロトタイプ 説明
#define wdt_reset() __asm__ __volatile__ (“wdr”) ウォッチドックタイマリセット
#define wdt_enable(value) ウォッチドックタイマ有効
#define wdt_disable() ウォッチドックタイマ無効

ユーティリティ関数

util/crc16.h CRC16生成用

#include <util/crc16.h>

関数プロトタイプ 説明
static __inline__ uint16_t _crc16_update (uint16_t __crc, uint8_t __data) CRC-16
static __inline__ uint16_t _crc_xmodem_update (uint16_t __crc, uint8_t __data) CRC-XMODEM
static __inline__ uint16_t _crc_ccitt_update (uint16_t __crc, uint8_t __data) CRC-CCITT
static __inline__ uint8_t _crc_ibutton_update (uint8_t __crc, uint8_t __data) Dallas (Maxim) iButton 8-bit CRC

util/delay.h 遅延関数

#include <util/delay.h>

関数プロトタイプ 説明
void _delay_ms (double __ms) ms遅延 (最長 262.14 ms / F_CPU MHz)
void _delay_us (double __us) us遅延 (最長 768 us / F_CPU MHz)

util/delay_basic.h 遅延関数基礎関数

#include <util/delay_basic.h>

関数プロトタイプ 説明
void _delay_loop_1 (uint8_t __count) 8bit 遅延ループ
void _delay_loop_2 (uint16_t __count) 16bit 遅延ループ

util/parity.h パリティビット用

#include <util/parity.h>

関数プロトタイプ 説明
#define parity_even_bit(val) 偶数パリティ生成

util/setbaud.h USART通信速度設定

#include <util/setbaud.h>

関数プロトタイプ 説明
#define BAUD_TOL 2 許容誤差[%]設定
#define UBRR_VALUE
#define UBRRL_VALUE UBRRLの設定(UBRR・BAUDと排他)
#define UBRRH_VALUE UBRRHの設定(UBRR・BAUDと排他)
#define USE_2X 0 2x通信を使用するか(0:使用しない/1:使用する)
#define BAUD 38400 通信レートの設定

参考

C99用のリファレンスシートも参考にしてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です