548e6c97fa98ac0d71393c2f79914dd9bae1ecef
[dmxpainter.git] / src / pins.h
1 #pragma once\r
2 \r
3 #include <avr/io.h>\r
4 \r
5 #include "bits.h"\r
6 \r
7 //////////////////////////////////////////\r
8 \r
9 #define pin_is_set(pin)  (bit_is_set(pin_SFR_PIN(pin), pin_PIN_NUM(pin)))\r
10 #define pin_get(pin)     (pin_is_set(pin) >> pin_PIN_NUM(pin))\r
11 \r
12 #define pin_on(pin)      _BS(pin_SFR_PRT(pin), pin_PIN_VAL(pin))\r
13 #define pin_off(pin)     _BC(pin_SFR_PRT(pin), pin_PIN_VAL(pin))\r
14 \r
15 #define pin_in(pin)      _BC(pin_SFR_DDR(pin), pin_PIN_VAL(pin))\r
16 #define pin_out(pin)     _BS(pin_SFR_DDR(pin), pin_PIN_VAL(pin))\r
17 \r
18 #define pin_out_on(pin)  _BS(pin_SFR_DDR(pin), pin_PIN_VAL(pin)); \\r
19                          _BS(pin_PIN_PRT(pin), pin_PIN_VAL(pin))\r
20 #define pin_out_off(pin) _BS(pin_SFR_DDR(pin), pin_PIN_VAL(pin)); \\r
21                          _BC(pin_SFR_PRT(pin), pin_PIN_VAL(pin))\r
22 \r
23 //////////////////////////////////////////\r
24 \r
25 #define pin_pin(pin)  pin_PIN_NUM(pin)\r
26 #define pin_inr(pin)  pin_SFR_PIN(pin)\r
27 #define pin_outr(pin) pin_SFR_PRT(pin)\r
28 #define pin_ddr(pin)  pin_SFR_DDR(pin)\r
29 \r
30 //////////////////////////////////////////\r
31 \r
32 #define pin_PIN_NUM(port, pin) pin\r
33 #define pin_PIN_VAL(port, pin) _BV(pin)\r
34 #define pin_SFR_PIN(port, pin) PIN  ## port\r
35 #define pin_SFR_PRT(port, pin) PORT ## port\r
36 #define pin_SFR_DDR(port, pin) DDR  ## port\r
37 \r
38 //////////////////////////////////////////\r
39 \r
40 #ifdef __AVR_ATmega8__\r
41 #include "pins_atmega8.h"\r
42 #else\r
43 #error Unknown MCU\r
44 #endif\r