diff options
| author | Karel Kočí <cynerd@email.cz> | 2015-01-29 00:01:46 +0100 | 
|---|---|---|
| committer | Karel Kočí <cynerd@email.cz> | 2015-01-29 00:01:46 +0100 | 
| commit | 0be64cb86f8856dc8342a24c5d99290d7e1cc8d2 (patch) | |
| tree | bd8d0411975823d99ae7ae359265bfbf2fae9645 | |
| download | avr-ioe-0be64cb86f8856dc8342a24c5d99290d7e1cc8d2.tar.gz avr-ioe-0be64cb86f8856dc8342a24c5d99290d7e1cc8d2.tar.bz2 avr-ioe-0be64cb86f8856dc8342a24c5d99290d7e1cc8d2.zip | |
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)
| -rw-r--r-- | GPIO.h | 35 | ||||
| -rw-r--r-- | README.md | 6 | 
2 files changed, 41 insertions, 0 deletions
| @@ -0,0 +1,35 @@ +#include <avr/io.h> +#include <stdint.h> + +#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_ */ diff --git a/README.md b/README.md new file mode 100644 index 0000000..015c9d4 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +#AVR-IOE +##AVR input/output expansion + + + +This is package of code for various inputs and outputs  from AVR micro-controllers. Code is targeted for three different chips, ATmega328p, ATmega32u4 and ATtiny85. But should support all AVR5 and AVR25 micro-controllers.  | 
