include/relay.h
author Tero Marttila <terom@paivola.fi>
Wed, 24 Sep 2014 23:49:28 +0300
changeset 7 5c37ed521807
permissions -rw-r--r--
relay
7
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#ifndef QMSK_RELAY_H
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
#define QMSK_RELAY_H
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
#include "stdlib.h"
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
/*
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
 * Setup pins 0..N of relay_port for driving relays.
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
 */
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
static inline void relay_init (byte count)
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
{
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
    for (byte i = 0; i < count; i++) {
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
        // output
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
        sbi(&RELAY_DDR, i);
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
    }
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
}
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
static inline void relay_open (byte i)
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
{
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
    cbi(&RELAY_PORT, i);
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
}
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
static inline void relay_close (byte i)
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
{
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    sbi(&RELAY_PORT, i);
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
}
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
static inline void relay_toggle (byte i)
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
{
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
    sbi(&RELAY_PIN, i);
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
}
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
#endif