Go to the documentation of this file.
10 #define _BV(bit) (1 << (unsigned)(bit))
13 #define setBits(x, y) ((x) |= (y))
14 #define clearBits(x, y) ((x) &= (~(y)))
15 #define bitsSet(x, y) (((x) & (y)) == (y))
16 #define bitsClear(x, y) (((x) & (y)) == 0)
18 #define bitRead(value, bit) (((value) >> (unsigned)(bit)) & 0x01)
19 #define bitSet(value, bit) ((value) |= (1UL << (unsigned)(bit)))
20 #define bitClear(value, bit) ((value) &= ~(1UL << (unsigned)(bit)))
21 #define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
23 #define _SFR_MEM_ADDR(sfr) ((uint32_t) & (sfr))
24 #define _SFR_ADDR(sfr) _SFR_MEM_ADDR(sfr)
26 #define _MMIO_BYTE(mem_addr) (*(volatile uint8_t*)(mem_addr))
27 #define _MMIO_WORD(mem_addr) (*(volatile uint16_t*)(mem_addr))
28 #define _MMIO_DWORD(mem_addr) (*(volatile uint32_t*)(mem_addr))
31 #define _SFR_BYTE(sfr) _MMIO_BYTE(_SFR_ADDR(sfr))
33 #define _SFR_WORD(sfr) _MMIO_WORD(_SFR_ADDR(sfr))
34 #define _SFR_DWORD(sfr) _MMIO_DWORD(_SFR_ADDR(sfr))
36 #define _SFR_MEM8(mem_addr) _MMIO_BYTE(mem_addr)
37 #define _SFR_MEM16(mem_addr) _MMIO_WORD(mem_addr)
38 #define _SFR_MEM32(mem_addr) _MMIO_DWORD(mem_addr)
40 #define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit))
41 #define bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit)))
42 #define loop_until_bit_is_set(sfr, bit) \
44 } while(bit_is_clear(sfr, bit))
45 #define loop_until_bit_is_clear(sfr, bit) \
47 } while(bit_is_set(sfr, bit))