1 #ifndef __HACHTIS_PIN_MAGIC_H
2 #define __HACHTIS_PIN_MAGIC_H
7 volatile uint8_t *addr
;
11 #define _PIN(port, bit) ((volatile struct __ph_pin__){&port, bit})
13 #define OUTPUT_PIN(pin) (*(pin.addr - 1) |= _BV(pin.bitno))
14 #define INPUT_PIN(pin) (*(pin.addr - 1) &= ~_BV(pin.bitno))
16 #define PINON(pin) (*pin.addr |= _BV(pin.bitno))
17 #define PINOFF(pin) (*pin.addr &= ~_BV(pin.bitno))
19 #define PINVAL(pin) (*(pin.addr - 2) & _BV(pin.bitno) ? 1 : 0)
20 //#define PINVAL(pin) (*(pin.addr - 2) & _BV(pin.bitno))
22 #define setpin(pin, val) ((val) ? PINON(pin) : PINOFF(pin))