gpio.h

Go to the documentation of this file.
00001 #ifndef _DEV_GPIO_H_
00002 #define _DEV_GPIO_H_
00003 
00045 #include <cfg/arch/gpio.h>
00046 #include <dev/irqreg.h>
00047 
00048 #define NUTGPIO_PORT    0
00049 #define NUTGPIO_PORTA   1
00050 #define NUTGPIO_PORTB   2
00051 #define NUTGPIO_PORTC   3
00052 #define NUTGPIO_PORTD   4
00053 #define NUTGPIO_PORTE   5
00054 #define NUTGPIO_PORTF   6
00055 #define NUTGPIO_PORTG   7
00056 #define NUTGPIO_PORTH   8
00057 #define NUTGPIO_PORTI   9
00058 #define NUTGPIO_PORTJ   10
00059 #define NUTGPIO_PORTK   11
00060 #define NUTGPIO_PORTL   12
00061 
00062 #define NUTGPIO_EXTINT0     1
00063 #define NUTGPIO_EXTINT1     2
00064 #define NUTGPIO_EXTINT2     3
00065 #define NUTGPIO_EXTINT3     4
00066 #define NUTGPIO_EXTINT4     5
00067 #define NUTGPIO_EXTINT5     6
00068 #define NUTGPIO_EXTINT6     7
00069 #define NUTGPIO_EXTINT7     8
00070 #define NUTGPIO_EXTFIQ0    -1
00071 
00078 #define GPIO_CFG_DISABLED   0x00000001
00079 
00086 #define GPIO_CFG_OUTPUT     0x00000002
00087 
00091 #define GPIO_CFG_PULLUP     0x00000004
00092 
00098 #define GPIO_CFG_MULTIDRIVE 0x00000008
00099 
00103 #define GPIO_CFG_DEBOUNCE   0x00000010
00104 
00105 typedef struct {
00106     void (*iov_handler) (void *);
00107     void *iov_arg;
00108 } GPIO_VECTOR;
00109 
00110 typedef struct {
00111     IRQ_HANDLER *ios_sig;
00112     void (*ios_handler) (void *);
00113     int (*ios_ctl) (int cmd, void *param, int bit);
00114     GPIO_VECTOR *ios_vector;
00115 } GPIO_SIGNAL;
00116 
00117 #if defined(PIO_ISR)
00118 extern GPIO_SIGNAL sig_GPIO;
00119 #endif
00120 #if defined(PIOA_ISR)
00121 extern GPIO_SIGNAL sig_GPIO1;
00122 #endif
00123 #if defined(PIOB_ISR)
00124 extern GPIO_SIGNAL sig_GPIO2;
00125 #endif
00126 #if defined(PIOC_ISR)
00127 extern GPIO_SIGNAL sig_GPIO3;
00128 #endif
00129 
00130 __BEGIN_DECLS
00131 /* Prototypes */
00132 
00133 extern uint32_t GpioPinConfigGet(int bank, int bit);
00134 extern int GpioPinConfigSet(int bank, int bit, uint32_t flags);
00135 extern int GpioPortConfigSet(int bank, unsigned int mask, uint32_t flags);
00136 
00137 extern int GpioPinGet(int bank, int bit);
00138 extern void GpioPinSet(int bank, int bit, int value);
00139 extern void GpioPinSetLow(int bank, int bit);
00140 extern void GpioPinSetHigh(int bank, int bit);
00141 
00142 extern unsigned int GpioPortGet(int bank);
00143 extern void GpioPortSet(int bank, unsigned int value);
00144 extern void GpioPortSetLow(int bank, unsigned int mask);
00145 extern void GpioPortSetHigh(int bank, unsigned int mask);
00146 
00147 extern int GpioRegisterIrqHandler(GPIO_SIGNAL * sig, int bit, void (*handler) (void *), void *arg);
00148 extern int GpioIrqEnable(GPIO_SIGNAL * sig, int bit);
00149 extern int GpioIrqDisable(GPIO_SIGNAL * sig, int bit);
00150 
00151 __END_DECLS
00152 /* End of prototypes */
00153 #endif

© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/