Commit | Line | Data |
---|---|---|
54de37bf PH |
1 | #ifndef __HACHTIS_PIN_MAGIC_H |
2 | #define __HACHTIS_PIN_MAGIC_H | |
3 | ||
4 | struct __ph_pin__ { | |
5 | volatile uint8_t *addr; | |
6 | uint8_t bitno; | |
7 | }; | |
8 | ||
9 | #define _PIN(port, bit) ((volatile struct __ph_pin__){&port, bit}) | |
10 | ||
11 | #define LED _PIN(PORTB, PORTB2) | |
12 | ||
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 | ||
19 | #define PINVAL(pin) (*(pin.addr - 2) & _BV(pin.bitno) ? 1 : 0) | |
20 | ||
21 | #define setpin(pin, val) ((val) ? PINON(pin) : PINOFF(pin)) | |
22 | ||
23 | #endif |