src/stdlib.h
author Tero Marttila <terom@paivola.fi>
Thu, 03 Apr 2014 18:54:50 +0300
changeset 50 e4ac5a591dcd
parent 49 stdlib.h@f01fb659e54d
child 52 237d1f5c1c32
permissions -rw-r--r--
src/ layout
49
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#include <util/delay.h>
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
#define false       0
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
#define true        1
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
typedef volatile uint8_t ioport_t;
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
static inline ioport_t tbi(ioport_t *port, int bit)
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
{
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
    return *port & (1 << bit);
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
}
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
static inline void sbi(ioport_t *port, int bit)
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
{
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
    *port |= (1 << bit);
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
}
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
static inline void cbi(ioport_t *port, int bit)
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
{
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    *port &= ~(1 << bit);
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
}
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
static inline void xbi(ioport_t *port, int bit)
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
{
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
    *port ^= (1 << bit);
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
}
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
void delay_1s ()
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
{
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
    // busyloop
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
    _delay_ms(1000);
f01fb659e54d hello: timer-based sleeps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
}