RTEMS CPU Kit with SuperCore
4.11.3
|
Macros for Accessing AVR Special Function Registers. More...
#include <inttypes.h>
Go to the source code of this file.
Macros | |
#define | _SFR_ASM_COMPAT 0 |
#define | _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr)) |
#define | _MMIO_WORD(mem_addr) (*(volatile uint16_t *)(mem_addr)) |
#define | _MMIO_DWORD(mem_addr) (*(volatile uint32_t *)(mem_addr)) |
#define | __SFR_OFFSET 0x20 |
#define | _SFR_MEM8(mem_addr) _MMIO_BYTE(mem_addr) |
#define | _SFR_MEM16(mem_addr) _MMIO_WORD(mem_addr) |
#define | _SFR_MEM32(mem_addr) _MMIO_DWORD(mem_addr) |
#define | _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + __SFR_OFFSET) |
#define | _SFR_IO16(io_addr) _MMIO_WORD((io_addr) + __SFR_OFFSET) |
#define | _SFR_MEM_ADDR(sfr) ((uint16_t) &(sfr)) |
#define | _SFR_IO_ADDR(sfr) (_SFR_MEM_ADDR(sfr) - __SFR_OFFSET) |
#define | _SFR_IO_REG_P(sfr) (_SFR_MEM_ADDR(sfr) < 0x40 + __SFR_OFFSET) |
#define | _SFR_ADDR(sfr) _SFR_MEM_ADDR(sfr) |
#define | _SFR_BYTE(sfr) _MMIO_BYTE(_SFR_ADDR(sfr)) |
#define | _SFR_WORD(sfr) _MMIO_WORD(_SFR_ADDR(sfr)) |
#define | _SFR_DWORD(sfr) _MMIO_DWORD(_SFR_ADDR(sfr)) |
#define | _VECTOR(N) __vector_ ## N |
Bit Manipulation | |
#define | _BV(bit) (1 << (bit)) |
IO Register Bit Manipulation | |
#define | bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit)) |
#define | bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit))) |
#define | loop_until_bit_is_set(sfr, bit) do { } while (bit_is_clear(sfr, bit)) |
#define | loop_until_bit_is_clear(sfr, bit) do { } while (bit_is_set(sfr, bit)) |
Macros for Accessing AVR Special Function Registers.