SLS AVR Lib 0.1a
 
Loading...
Searching...
No Matches
defs.h File Reference

AVR common types and functions. More...

#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  nibble_t
 Structure for working with upper and lower nibbles. More...
 
struct  flags_t
 Structure for working with bits. More...
 
union  byte_flags_t
 Universal type for byte. More...
 

Macros

#define pin_2_ddr(_ref)
 Calculates the direct register from the pin register.
 
#define pin_2_port(_ref)
 Calculates the port register from the pin register.
 
#define ddr_2_pin(_ref)
 Calculates the pin register from the direct register.
 
#define ddr_2_port(_ref)
 Calculates the port register from the direct register.
 
#define port_2_ddr(_ref)
 Calculates the direct register from the port register.
 
#define port_2_pin(_ref)
 Calculates the pin register from the port register.
 
#define NIBBLE_SWAP(_b)
 Swaps the high and low nibbles (half bytes) of a byte.
 
#define flag_is_set(_val, _b)
 Test whether bit _b in flags _val is set.
 
#define flag_is_clear(_val, _b)
 Test whether bit _b in flags _val is set.
 
#define make_port_mask1(_p0)
 Makes port mask.
 
#define make_port_mask2(_p0, _p1)
 Makes port mask.
 
#define make_port_mask3(_p0, _p1, _p2)
 Makes port mask.
 
#define make_port_mask4(_p0, _p1, _p2, _p3)
 Makes port mask.
 
#define make_port_mask5(_p0, _p1, _p2, _p3, _p4)
 Makes port mask.
 
#define make_port_mask6(_p0, _p1, _p2, _p3, _p4, _p5)
 Makes port mask.
 
#define make_port_mask7(_p0, _p1, _p2, _p3, _p4, _p5, _p6)
 Makes port mask.
 
#define make_port_mask8(_p0, _p1, _p2, _p3, _p4, _p5, _p6, _p7)
 Makes port mask.
 

Typedefs

typedef uint8_t byte_t
 8-bit type
 
typedef byte_t pin_bit_t
 The type for specifying the pin bit.
 
typedef byte_t port_mask_t
 The type for specifying the port mask.
 
typedef volatile byte_t *const ddr_t
 Type for passing a reference to a direct register.
 
typedef volatile byte_t *const port_t
 Type for passing a reference to a port register.
 
typedef volatile byte_t *const pin_t
 Type for passing a reference to a pin register.
 

Functions

static byte_t nibble_swap (byte_t byte)
 Swaps the high and low nibbles (half bytes) of a byte.
 

Detailed Description

AVR common types and functions.

Author
Simon Litt simon.nosp@m.@1it.nosp@m.t.net https://coding.1itt.net, https://github.com/SimonLitt
//Ref example:
void init_ddr(ddr_t ddr, ddr_state state) {
*ddr = state;
}
int main(void) {
...
init_ddr(&DDRA, 0xFF);
...
}
volatile byte_t *const ddr_t
Type for passing a reference to a direct register.
Definition defs.h:93
//Convert example:
void init_ddr(port_t port) {
port_2_ddr(port) = 0xF0;
*port = 0x0F;
byte_t ri = port_2_pin(port);
}
int main(void) {
...
init_ddr(&DDRA, 0xFF);
...
}
uint8_t byte_t
8-bit type
Definition defs.h:64
#define port_2_pin(_ref)
Calculates the pin register from the port register.
Definition defs.h:108
volatile byte_t *const port_t
Type for passing a reference to a port register.
Definition defs.h:94
#define port_2_ddr(_ref)
Calculates the direct register from the port register.
Definition defs.h:107

Macro Definition Documentation

◆ ddr_2_pin

#define ddr_2_pin ( _ref)
Value:
*((_ref) - 1)

Calculates the pin register from the direct register.

◆ ddr_2_port

#define ddr_2_port ( _ref)
Value:
*((_ref) + 1)

Calculates the port register from the direct register.

◆ flag_is_clear

#define flag_is_clear ( _val,
_b )
Value:
(!((_val) & _BV((_b))))

Test whether bit _b in flags _val is set.

Parameters
_valThe flags value.
_bThe flag bit.
Remarks
For working with registers, use bit_is_set() from <avr/sfr_defs.h>.

◆ flag_is_set

#define flag_is_set ( _val,
_b )
Value:
((_val) & _BV((_b)))

Test whether bit _b in flags _val is set.

Parameters
_valThe flags value.
_bThe flag bit.
Remarks
For working with registers, use bit_is_set() from <avr/sfr_defs.h>.

◆ make_port_mask1

#define make_port_mask1 ( _p0)
Value:
(_BV((_p0)))

Makes port mask.

Returns
Port mask

◆ make_port_mask2

#define make_port_mask2 ( _p0,
_p1 )
Value:
(_BV((_p0)) & _BV((_p1)))

Makes port mask.

Returns
Port mask

◆ make_port_mask3

#define make_port_mask3 ( _p0,
_p1,
_p2 )
Value:
(_BV((_p0)) & _BV((_p1)) & _BV((_p2)))

Makes port mask.

Returns
Port mask

◆ make_port_mask4

#define make_port_mask4 ( _p0,
_p1,
_p2,
_p3 )
Value:
(_BV((_p0)) & _BV((_p1)) & _BV((_p2)) & _BV((_p3)))

Makes port mask.

Returns
Port mask

◆ make_port_mask5

#define make_port_mask5 ( _p0,
_p1,
_p2,
_p3,
_p4 )
Value:
(_BV((_p0)) & _BV((_p1)) & _BV((_p2)) & _BV((_p3)) & _BV((_p4)))

Makes port mask.

Returns
Port mask

◆ make_port_mask6

#define make_port_mask6 ( _p0,
_p1,
_p2,
_p3,
_p4,
_p5 )
Value:
(_BV((_p0)) & _BV((_p1)) & _BV((_p2)) & _BV((_p3)) & _BV((_p4)) & _BV((_p5)))

Makes port mask.

Returns
Port mask

◆ make_port_mask7

#define make_port_mask7 ( _p0,
_p1,
_p2,
_p3,
_p4,
_p5,
_p6 )
Value:
(_BV((_p0)) & _BV((_p1)) & _BV((_p2)) & _BV((_p3)) & _BV((_p4)) & _BV((_p5)) & _BV((_p6)))

Makes port mask.

Returns
Port mask

◆ make_port_mask8

#define make_port_mask8 ( _p0,
_p1,
_p2,
_p3,
_p4,
_p5,
_p6,
_p7 )
Value:
(_BV((_p0)) & _BV((_p1)) & _BV((_p2)) & _BV((_p3)) & _BV((_p4)) & _BV((_p5)) & _BV((_p6)) & _BV((_p7)))

Makes port mask.

Returns
Port mask

◆ NIBBLE_SWAP

#define NIBBLE_SWAP ( _b)
Value:
(((_b) << 4) | ((_b) >> 4))

Swaps the high and low nibbles (half bytes) of a byte.

Parameters
_bThe byte.
Returns
Modified byte

◆ pin_2_ddr

#define pin_2_ddr ( _ref)
Value:
*((_ref) + 1)

Calculates the direct register from the pin register.

◆ pin_2_port

#define pin_2_port ( _ref)
Value:
*((_ref) + 2)

Calculates the port register from the pin register.

◆ port_2_ddr

#define port_2_ddr ( _ref)
Value:
*((_ref) - 1)

Calculates the direct register from the port register.

◆ port_2_pin

#define port_2_pin ( _ref)
Value:
*((_ref) - 2)

Calculates the pin register from the port register.

Typedef Documentation

◆ byte_t

typedef uint8_t byte_t

8-bit type

◆ ddr_t

typedef volatile byte_t* const ddr_t

Type for passing a reference to a direct register.

◆ pin_bit_t

typedef byte_t pin_bit_t

The type for specifying the pin bit.

This is defined to transmit the port bit.

◆ pin_t

typedef volatile byte_t* const pin_t

Type for passing a reference to a pin register.

◆ port_mask_t

The type for specifying the port mask.

It is defined to transmit the port mask.

◆ port_t

typedef volatile byte_t* const port_t

Type for passing a reference to a port register.

Function Documentation

◆ nibble_swap()

static byte_t nibble_swap ( byte_t byte)
inlinestatic

Swaps the high and low nibbles (half bytes) of a byte.

If available, uses the SWAP instruction.

Parameters
byteThe byte.
Returns
Modified byte