|
|
|
Макроопределения |
|
|
__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.