RTEMS CPU Kit with SuperCore  4.11.3
Macros
sfr_defs.h File Reference

Macros for Accessing AVR Special Function Registers. More...

#include <inttypes.h>
Include dependency graph for sfr_defs.h:
This graph shows which files directly or indirectly include this file:

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))
 

Detailed Description

Macros for Accessing AVR Special Function Registers.