BitManipulations.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define _BV(bit)   (1 << (unsigned)(bit))
 
#define bit(x)   _BV(x)
 
#define setBits(x, y)   ((x) |= (y))
 
#define clearBits(x, y)   ((x) &= (~(y)))
 
#define bitsSet(x, y)   (((x) & (y)) == (y))
 
#define bitsClear(x, y)   (((x) & (y)) == 0)
 
#define bitRead(value, bit)   (((value) >> (unsigned)(bit)) & 0x01)
 
#define bitSet(value, bit)   ((value) |= (1UL << (unsigned)(bit)))
 
#define bitClear(value, bit)   ((value) &= ~(1UL << (unsigned)(bit)))
 
#define bitWrite(value, bit, bitvalue)   (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
 
#define _SFR_MEM_ADDR(sfr)   ((uint32_t) & (sfr))
 
#define _SFR_ADDR(sfr)   _SFR_MEM_ADDR(sfr)
 
#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_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 _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 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)
 
#define loop_until_bit_is_clear(sfr, bit)
 

Macro Definition Documentation

◆ _BV

#define _BV (   bit)    (1 << (unsigned)(bit))

◆ _MMIO_BYTE

#define _MMIO_BYTE (   mem_addr)    (*(volatile uint8_t*)(mem_addr))

◆ _MMIO_DWORD

#define _MMIO_DWORD (   mem_addr)    (*(volatile uint32_t*)(mem_addr))

◆ _MMIO_WORD

#define _MMIO_WORD (   mem_addr)    (*(volatile uint16_t*)(mem_addr))

◆ _SFR_ADDR

#define _SFR_ADDR (   sfr)    _SFR_MEM_ADDR(sfr)

◆ _SFR_BYTE

#define _SFR_BYTE (   sfr)    _MMIO_BYTE(_SFR_ADDR(sfr))

◆ _SFR_DWORD

#define _SFR_DWORD (   sfr)    _MMIO_DWORD(_SFR_ADDR(sfr))

◆ _SFR_MEM16

#define _SFR_MEM16 (   mem_addr)    _MMIO_WORD(mem_addr)

◆ _SFR_MEM32

#define _SFR_MEM32 (   mem_addr)    _MMIO_DWORD(mem_addr)

◆ _SFR_MEM8

#define _SFR_MEM8 (   mem_addr)    _MMIO_BYTE(mem_addr)

◆ _SFR_MEM_ADDR

#define _SFR_MEM_ADDR (   sfr)    ((uint32_t) & (sfr))

◆ _SFR_WORD

#define _SFR_WORD (   sfr)    _MMIO_WORD(_SFR_ADDR(sfr))

◆ bit

#define bit (   x)    _BV(x)

◆ bit_is_clear

#define bit_is_clear (   sfr,
  bit 
)    (!(_SFR_BYTE(sfr) & _BV(bit)))

◆ bit_is_set

#define bit_is_set (   sfr,
  bit 
)    (_SFR_BYTE(sfr) & _BV(bit))

◆ bitClear

#define bitClear (   value,
  bit 
)    ((value) &= ~(1UL << (unsigned)(bit)))

◆ bitRead

#define bitRead (   value,
  bit 
)    (((value) >> (unsigned)(bit)) & 0x01)

◆ bitsClear

#define bitsClear (   x,
 
)    (((x) & (y)) == 0)

◆ bitSet

#define bitSet (   value,
  bit 
)    ((value) |= (1UL << (unsigned)(bit)))

◆ bitsSet

#define bitsSet (   x,
 
)    (((x) & (y)) == (y))

◆ bitWrite

#define bitWrite (   value,
  bit,
  bitvalue 
)    (bitvalue ? bitSet(value, bit) : bitClear(value, bit))

◆ clearBits

#define clearBits (   x,
 
)    ((x) &= (~(y)))

◆ loop_until_bit_is_clear

#define loop_until_bit_is_clear (   sfr,
  bit 
)
Value:
do { \
} while(bit_is_set(sfr, bit))
#define bit(x)
Definition: BitManipulations.h:12
#define bit_is_set(sfr, bit)
Definition: BitManipulations.h:40

◆ loop_until_bit_is_set

#define loop_until_bit_is_set (   sfr,
  bit 
)
Value:
do { \
} while(bit_is_clear(sfr, bit))
#define bit_is_clear(sfr, bit)
Definition: BitManipulations.h:41

◆ setBits

#define setBits (   x,
 
)    ((x) |= (y))