From 0be64cb86f8856dc8342a24c5d99290d7e1cc8d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Thu, 29 Jan 2015 00:01:46 +0100 Subject: Initial commit Only GPIO output implemented. Implementing: Macros gpio_get_mode(SET, PIN) gpio_set_out(SET, PIN) gpio_set_in(SET, PIN) gpio_set_high(SET, PIN) gpio_set_low(SET, PIN) gpio_set_value(SET, PIN, VALUE) --- GPIO.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 GPIO.h (limited to 'GPIO.h') diff --git a/GPIO.h b/GPIO.h new file mode 100644 index 0000000..0c7ba72 --- /dev/null +++ b/GPIO.h @@ -0,0 +1,35 @@ +#include +#include + +#ifndef _IOE_GPIO_H_ +#define _IOE_GPIO_H_ + +#define __GPIO_JOIN2(TXT1, TXT2) TXT1##TXT2 +#define __GPIO_JOIN3(TXT1, TXT2, TXT3) TXT1##TXT2##TXT3 + +#define gpio_get_mode(SET, PIN) \ + __GPIO_JOIN2(DDR, SET) & _BV(__GPIO_JOIN3(DD, SET, PIN)) + +// GPIO output section +#define gpio_set_out(SET, PIN) \ + __GPIO_JOIN2(DDR, SET) |= _BV(__GPIO_JOIN3(DD, SET, PIN)) + +#define gpio_set_high(SET, PIN) \ + __GPIO_JOIN2(PORT, SET) |= _BV(__GPIO_JOIN3(PORT, SET, PIN)) + +#define gpio_set_low(SET, PIN) \ + __GPIO_JOIN2(PORT, SET) &= ~_BV(__GPIO_JOIN3(PORT, SET, PIN)) + +#define gpio_set(SET, PIN, VALUE) \ + if (value) \ + gpio_set_high(SET, PIN); \ + else \ + gpio_set_low(SET, PIN); + +// GPIO input section +#define gpio_set_in(SET, PIN) \ + __GPIO_JOIN2(DDR, SET) &= ~_BV(__GPIO_JOIN3(DD, SET, PIN)) + +// TODO whole output and switching betwen input and output + +#endif /* _IOE_GPIO_H_ */ -- cgit v1.2.3