Doh!
[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(pp)  (bit_is_set(pin_SFR_PIN(pp), pin_PIN_NUM(pp)))\r
10 #define pin_get(pp)     (pin_is_set(pp) >> pin_PIN_NUM(pp))\r
11 \r
12 #define pin_on(pp)      _BS(pin_SFR_PRT(pp), pin_PIN_VAL(pp))\r
13 #define pin_off(pp)     _BC(pin_SFR_PRT(pp), pin_PIN_VAL(pp))\r
14 \r
15 #define pin_in(pp)      _BC(pin_SFR_DDR(pp), pin_PIN_VAL(pp))\r
16 #define pin_out(pp)     _BS(pin_SFR_DDR(pp), pin_PIN_VAL(pp))\r
17 \r
18 #define pin_out_on(pp)  _BS(pin_SFR_DDR(pp), pin_PIN_VAL(pp)); \\r
19                         _BS(pin_PIN_PRT(pp), pin_PIN_VAL(pp))\r
20 #define pin_out_off(pp) _BS(pin_SFR_DDR(pp), pin_PIN_VAL(pp)); \\r
21                         _BC(pin_SFR_PRT(pp), pin_PIN_VAL(pp))\r
22 \r
23 //////////////////////////////////////////\r
24 \r
25 #define pin_pin(pp)  pin_PIN_NUM(pp)\r
26 #define pin_inr(pp)  pin_SFR_PIN(pp)\r
27 #define pin_outr(pp) pin_SFR_PRT(pp)\r
28 #define pin_ddr(pp)  pin_SFR_DDR(pp)\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