|
|
Макроопределения |
|
__PGMSPACE_H_ 1 |
|
__need_size_t |
|
__ATTR_PROGMEM__ __attribute__((__progmem__)) |
|
__ATTR_PURE__ __attribute__((__pure__)) |
|
#define |
PROGMEM __ATTR_PROGMEM__ |
#define |
PSTR(s) ((const
PROGMEM char *)(s)) |
#define |
__LPM_classic__(addr) |
#define |
__LPM_enhanced__(addr) |
#define |
__LPM_word_classic__(addr) |
#define |
__LPM_word_enhanced__(addr) |
#define |
__LPM_dword_classic__(addr) |
#define |
__LPM_dword_enhanced__(addr) |
__LPM(addr) __LPM_classic__(addr) |
|
__LPM_word(addr) __LPM_word_classic__(addr) |
|
__LPM_dword(addr) __LPM_dword_classic__(addr) |
|
#define |
pgm_read_byte_near(address_short) __LPM((uint16_t)(address_short)) |
#define |
pgm_read_word_near(address_short) __LPM_word((uint16_t)(address_short)) |
#define |
pgm_read_dword_near(address_short) __LPM_dword((uint16_t)(address_short)) |
#define |
__ELPM_classic__(addr) |
#define |
__ELPM_enhanced__(addr) |
#define |
__ELPM_word_classic__(addr) |
#define |
__ELPM_word_enhanced__(addr) |
__ELPM_dword_classic__(addr) |
|
#define |
__ELPM_dword_enhanced__(addr) |
__ELPM(addr) __ELPM_classic__(addr) |
|
__ELPM_word(addr) __ELPM_word_classic__(addr) |
|
__ELPM_dword(addr) __ELPM_dword_classic__(addr) |
|
#define |
pgm_read_byte_far(address_long) __ELPM((uint32_t)(address_long)) |
#define |
pgm_read_word_far(address_long) __ELPM_word((uint32_t)(address_long)) |
#define |
pgm_read_dword_far(address_long) __ELPM_dword((uint32_t)(address_long)) |
#define |
pgm_read_byte(address_short) pgm_read_byte_near(address_short) |
#define |
pgm_read_word(address_short) pgm_read_word_near(address_short) |
#define |
pgm_read_dword(address_short) pgm_read_dword_near(address_short) |
#define |
|
#define |
PGM_VOID_P const prog_void
* |
Типоопределения |
|
typedef void PROGMEM |
|
typedef char PROGMEM |
|
typedef unsigned char PROGMEM |
|
typedef int8_t PROGMEM |
|
typedef uint8_t PROGMEM |
|
typedef int16_t PROGMEM |
|
typedef uint16_t PROGMEM |
|
typedef int32_t PROGMEM |
|
typedef uint32_t PROGMEM |
|
typedef int64_t PROGMEM |
|
typedef uint64_t PROGMEM |
|
Функции |
|
PGM_VOID_P |
memchr_P
(PGM_VOID_P s, int val, size_t len) |
int |
memcmp_P
(const void *, PGM_VOID_P, size_t) __ATTR_PURE__ |
void * |
memcpy_P (void *, PGM_VOID_P, size_t) |
void * |
memmem_P
(const void *, size_t, PGM_VOID_P, size_t) __ATTR_PURE__ |
PGM_VOID_P |
memrchr_P
(PGM_VOID_P s, int val, size_t len) |
char * |
strcat_P
(char *, PGM_P) |
PGM_P |
strchr_P
(PGM_P s, int val) |
PGM_P |
strchrnul_P (PGM_P s, int val) |
int |
strcmp_P
(const char *, PGM_P) __ATTR_PURE__ |
char * |
strcpy_P
(char *, PGM_P) |
int |
strcasecmp_P (const char *, PGM_P) __ATTR_PURE__ |
char * |
strcasestr_P (const char *, PGM_P) __ATTR_PURE__ |
size_t |
strcspn_P
(const char *s, PGM_P reject) __ATTR_PURE__ |
size_t |
strlcat_P
(char *, PGM_P, size_t) |
size_t |
strlcpy_P
(char *, PGM_P, size_t) |
size_t |
strlen_P (PGM_P) |
size_t |
strnlen_P
(PGM_P, size_t) |
int |
strncmp_P
(const char *, PGM_P, size_t) __ATTR_PURE__ |
int |
strncasecmp_P (const char *, PGM_P, size_t) __ATTR_PURE__ |
char * |
strncat_P
(char *, PGM_P, size_t) |
char * |
strncpy_P
(char *, PGM_P, size_t) |
char * |
strpbrk_P
(const char *s, PGM_P accept) __ATTR_PURE__ |
PGM_P |
strrchr_P
(PGM_P s, int val) |
char * |
strsep_P
(char **sp, PGM_P delim) |
size_t |
strspn_P
(const char *s, PGM_P accept) __ATTR_PURE__ |
char * |
strstr_P
(const char *, PGM_P) __ATTR_PURE__ |
Value:
(__extension__({ \
uint32_t __addr32 = (uint32_t)(addr); \
uint8_t __result; \
__asm__ \
( \
"out %2, %C1" "\n\t" \
"mov r31, %B1" "\n\t" \
"mov r30, %A1" "\n\t" \
"elpm" "\n\t" \
"mov %0, r0" "\n\t" \
: "=r" (__result) \
: "r" (__addr32), \
"I" (_SFR_IO_ADDR(RAMPZ)) \
: "r0", "r30", "r31" \
); \
__result; \
}))
Value:
(__extension__({ \
uint32_t __addr32 = (uint32_t)(addr); \
uint32_t __result; \
__asm__ \
( \
"out %2, %C1" "\n\t" \
"movw r30, %1" "\n\t" \
"elpm %A0, Z+" "\n\t" \
"elpm %B0, Z+" "\n\t" \
"elpm %C0, Z+" "\n\t" \
"elpm %D0, Z" "\n\t" \
: "=r" (__result) \
: "r" (__addr32), \
"I" (_SFR_IO_ADDR(RAMPZ)) \
: "r30", "r31" \
); \
__result; \
}))
Value:
(__extension__({ \
uint32_t __addr32 = (uint32_t)(addr); \
uint16_t __result; \
__asm__ \
( \
"out %2, %C1" "\n\t" \
"mov r31, %B1" "\n\t" \
"mov r30, %A1" "\n\t" \
"elpm" "\n\t" \
"mov %A0, r0" "\n\t" \
"in r0, %2" "\n\t" \
"adiw r30, 1" "\n\t" \
"adc r0, __zero_reg__" "\n\t" \
"out %2, r0" "\n\t" \
"elpm" "\n\t" \
"mov %B0, r0" "\n\t" \
: "=r" (__result) \
: "r" (__addr32), \
"I" (_SFR_IO_ADDR(RAMPZ)) \
: "r0", "r30", "r31" \
); \
__result; \
}))
Value:
(__extension__({ \
uint16_t __addr16 = (uint16_t)(addr); \
uint32_t __result; \
__asm__ \
( \
"lpm" "\n\t" \
"mov %A0, r0" "\n\t" \
"adiw r30, 1" "\n\t" \
"lpm" "\n\t" \
"mov %B0, r0" "\n\t" \
"adiw r30, 1" "\n\t" \
"lpm" "\n\t" \
"mov %C0, r0" "\n\t" \
"adiw r30, 1" "\n\t" \
"lpm" "\n\t" \
"mov %D0, r0" "\n\t" \
: "=r" (__result), "=z" (__addr16) \
: "1" (__addr16) \
: "r0" \
); \
__result; \
}))
Automatically generated by Doxygen 1.5.2 on 21
Dec 2007.