Commit | Line | Data |
---|---|---|
54de37bf PH |
1 | #ifndef __HACHTIS_PIN_MAGIC_H |
2 | #define __HACHTIS_PIN_MAGIC_H | |
3 | ||
70095677 PH |
4 | #include <avr/io.h> |
5 | ||
54de37bf PH |
6 | struct __ph_pin__ { |
7 | volatile uint8_t *addr; | |
8 | uint8_t bitno; | |
9 | }; | |
10 | ||
11 | #define _PIN(port, bit) ((volatile struct __ph_pin__){&port, bit}) | |
12 | ||
54de37bf PH |
13 | #define OUTPUT_PIN(pin) (*(pin.addr - 1) |= _BV(pin.bitno)) |
14 | #define INPUT_PIN(pin) (*(pin.addr - 1) &= ~_BV(pin.bitno)) | |
15 | ||
16 | #define PINON(pin) (*pin.addr |= _BV(pin.bitno)) | |
17 | #define PINOFF(pin) (*pin.addr &= ~_BV(pin.bitno)) | |
18 | ||
b1a7e65e PH |
19 | #define PINVAL(pin) (*(pin.addr - 2) & _BV(pin.bitno) ? 1 : 0) |
20 | //#define PINVAL(pin) (*(pin.addr - 2) & _BV(pin.bitno)) | |
54de37bf PH |
21 | |
22 | #define setpin(pin, val) ((val) ? PINON(pin) : PINOFF(pin)) | |
23 | ||
24 | #endif |