include/port.h
author Tero Marttila <terom@paivola.fi>
Wed, 08 Oct 2014 23:19:03 +0300
changeset 9 49643ef9d3d2
permissions -rw-r--r--
port: move over ioport stuff from stdlib
9
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#ifndef QMSK_PORT_H
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
#define QMSK_PORT_H
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
#include <avr/io.h>
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
typedef volatile uint8_t ioport_t;
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
static inline ioport_t tbi(ioport_t *port, uint8_t bit)
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
{
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
    return *port & (1 << bit);
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
}
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
static inline void sbi(ioport_t *port, uint8_t bit)
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
{
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
    *port |= (1 << bit);
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
}
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
static inline void cbi(ioport_t *port, uint8_t bit)
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
{
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    *port &= ~(1 << bit);
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
}
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
static inline void xbi(ioport_t *port, uint8_t bit)
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
{
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
    *port ^= (1 << bit);
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
}
49643ef9d3d2 port: move over ioport stuff from stdlib
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
#endif