src/switch.c
author Tero Marttila <terom@paivola.fi>
Thu, 25 Sep 2014 00:55:47 +0300
changeset 8 61eba9d55764
permissions -rw-r--r--
switch
#include "stdlib.h"
//#include "switch.h"

#include <avr/io.h>
#include <avr/interrupt.h>

byte switch_mask;
byte switch_status;
byte switch_state;

ISR(PCINT0_vect)
{
    switch_status = 1;
    switch_state = PINB;
}

ISR(PCINT1_vect)
{
    switch_status = 1;
    switch_state = PINC;
}

ISR(PCINT2_vect)
{
    switch_status = 1;
    switch_state = PIND;
}

byte switch_read (byte *sp)
{
    if (!switch_status)
        return 0;

    switch_status = 0;

    *sp = ~switch_state & switch_mask;

    return 1;
}