Nut/OS  4.10.3
API Reference
gpio.h File Reference

GPIO header for AVR32 UC3. More...

#include <arch/avr32.h>
#include <avr32/io.h>
Include dependency graph for gpio.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  gpio_map_t
 A type definition of pins and modules connectivity. More...

Return Values of the GPIO API

#define GPIO_SUCCESS   0
 Function successfully completed.
#define GPIO_INVALID_ARGUMENT   1

Interrupt Trigger Modes

#define GPIO_PIN_CHANGE   0
 Interrupt triggered upon pin change.
#define GPIO_RISING_EDGE   1
 Interrupt triggered upon rising edge.
#define GPIO_FALLING_EDGE   2

Peripheral Bus Interface

Low-speed interface with a non-deterministic number of clock cycles per access.

This interface operates with lower clock frequencies (fPB <= fCPU), and its timing is not deterministic since it needs to access a shared bus which may be heavily loaded.

Note:
This interface is immediately available without initialization.
int gpio_enable_module (const gpio_map_t gpiomap, unsigned int size)
 Enables specific module modes for a set of pins.
int gpio_enable_module_pin (unsigned int pin, unsigned int function)
 Enables a specific module mode for a pin.
void gpio_enable_gpio (const gpio_map_t gpiomap, unsigned int size)
 Enables the GPIO mode of a set of pins.
void gpio_enable_gpio_pin (unsigned int pin)
 Enables the GPIO mode of a pin.
void gpio_enable_pin_pull_up (unsigned int pin)
 Enables the pull-up resistor of a pin.
void gpio_disable_pin_pull_up (unsigned int pin)
 Disables the pull-up resistor of a pin.
int gpio_get_pin_value (unsigned int pin)
 Returns the value of a pin.
int gpio_get_gpio_pin_output_value (unsigned int pin)
 Returns the output value set for a GPIO pin.
int gpio_get_gpio_open_drain_pin_output_value (unsigned int pin)
 Returns the output value set for a GPIO pin using open drain.
void gpio_set_gpio_pin (unsigned int pin)
 Drives a GPIO pin to 1.
void gpio_clr_gpio_pin (unsigned int pin)
 Drives a GPIO pin to 0.
void gpio_tgl_gpio_pin (unsigned int pin)
 Toggles a GPIO pin.
void gpio_set_gpio_open_drain_pin (unsigned int pin)
 Drives a GPIO pin to 1 using open drain.
void gpio_clr_gpio_open_drain_pin (unsigned int pin)
 Drives a GPIO pin to 0 using open drain.
void gpio_tgl_gpio_open_drain_pin (unsigned int pin)
 Toggles a GPIO pin using open drain.
void gpio_enable_pin_glitch_filter (unsigned int pin)
 Enables the glitch filter of a pin.
void gpio_disable_pin_glitch_filter (unsigned int pin)
 Disables the glitch filter of a pin.
int gpio_enable_pin_interrupt (unsigned int pin, unsigned int mode)
 Enables the interrupt of a pin with the specified settings.
void gpio_disable_pin_interrupt (unsigned int pin)
 Disables the interrupt of a pin.
int gpio_get_pin_interrupt_flag (unsigned int pin)
 Gets the interrupt flag of a pin.
void gpio_clear_pin_interrupt_flag (unsigned int pin)
 Clears the interrupt flag of a pin.

Detailed Description

GPIO header for AVR32 UC3.

Copyright (C) 2001-2010 by egnite Software GmbH

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

For additional information see http://www.ethernut.de/

Portions Copyright Atmel Corporation, see the following note.

This file contains basic GPIO driver functions.

  • Compiler: IAR EWAVR32 and GNU GCC for AVR32
  • Supported devices: All AVR32 devices with a GPIO module can be used.
  • AppNote:
Author:
Atmel Corporation: http://www.atmel.com
Support and FAQ: http://support.atmel.no/

Definition in file gpio.h.


Define Documentation

#define GPIO_SUCCESS   0

Function successfully completed.

Definition at line 96 of file gpio.h.

Referenced by gpio_enable_module(), gpio_enable_module_pin(), and gpio_enable_pin_interrupt().

#define GPIO_INVALID_ARGUMENT   1

Input parameters are out of range.

Definition at line 97 of file gpio.h.

Referenced by gpio_enable_module_pin(), and gpio_enable_pin_interrupt().

#define GPIO_PIN_CHANGE   0

Interrupt triggered upon pin change.

Definition at line 104 of file gpio.h.

#define GPIO_RISING_EDGE   1

Interrupt triggered upon rising edge.

Definition at line 105 of file gpio.h.

#define GPIO_FALLING_EDGE   2

Interrupt triggered upon falling edge.

Definition at line 106 of file gpio.h.


Function Documentation

int gpio_enable_module ( const gpio_map_t  gpiomap,
unsigned int  size 
)

Enables specific module modes for a set of pins.

Parameters:
gpiomapThe pin map.
sizeThe number of pins in gpiomap.
Returns:
GPIO_SUCCESS or GPIO_INVALID_ARGUMENT.

Definition at line 97 of file gpio.c.

References gpio_map_t::function, gpio_enable_module_pin(), GPIO_SUCCESS, and gpio_map_t::pin.

Here is the call graph for this function:

int gpio_enable_module_pin ( unsigned int  pin,
unsigned int  function 
)

Enables a specific module mode for a pin.

Parameters:
pinThe pin number.
Refer to the product header file `uc3x.h' (where x is the part number; e.g. x = a0512) for module pins. E.g., to enable a PWM channel output, the pin number can be AVR32_PWM_3_PIN for PWM channel 3.
functionThe pin function.
Refer to the product header file `uc3x.h' (where x is the part number; e.g. x = a0512) for module pin functions. E.g., to enable a PWM channel output, the pin function can be AVR32_PWM_3_FUNCTION for PWM channel 3.
Returns:
GPIO_SUCCESS or GPIO_INVALID_ARGUMENT.

Definition at line 112 of file gpio.c.

References GPIO, GPIO_INVALID_ARGUMENT, and GPIO_SUCCESS.

Referenced by Avr32SpiBus0Select(), Avr32SpiBus1Select(), and gpio_enable_module().

void gpio_enable_gpio ( const gpio_map_t  gpiomap,
unsigned int  size 
)

Enables the GPIO mode of a set of pins.

Parameters:
gpiomapThe pin map.
sizeThe number of pins in gpiomap.

Definition at line 188 of file gpio.c.

References gpio_enable_gpio_pin(), and gpio_map_t::pin.

Here is the call graph for this function:

void gpio_enable_gpio_pin ( unsigned int  pin)

Enables the GPIO mode of a pin.

Parameters:
pinThe pin number.
Refer to the product header file `uc3x.h' (where x is the part number; e.g. x = a0512) for pin definitions. E.g., to enable the GPIO mode of PX21, AVR32_PIN_PX21 can be used. Module pins such as AVR32_PWM_3_PIN for PWM channel 3 can also be used to release module pins for GPIO.

Definition at line 200 of file gpio.c.

References GPIO.

Referenced by gpio_enable_gpio().

void gpio_enable_pin_pull_up ( unsigned int  pin)

Enables the pull-up resistor of a pin.

Parameters:
pinThe pin number.

Definition at line 235 of file gpio.c.

References GPIO.

void gpio_disable_pin_pull_up ( unsigned int  pin)

Disables the pull-up resistor of a pin.

Parameters:
pinThe pin number.

Definition at line 245 of file gpio.c.

References GPIO.

int gpio_get_pin_value ( unsigned int  pin)

Returns the value of a pin.

Parameters:
pinThe pin number.
Returns:
The pin value.

Definition at line 299 of file gpio.c.

References GPIO.

int gpio_get_gpio_pin_output_value ( unsigned int  pin)

Returns the output value set for a GPIO pin.

Parameters:
pinThe pin number.
Returns:
The pin output value.
Note:
This function must be used in conjunction with gpio_set_gpio_pin, gpio_clr_gpio_pin and gpio_tgl_gpio_pin.

Definition at line 306 of file gpio.c.

References GPIO.

int gpio_get_gpio_open_drain_pin_output_value ( unsigned int  pin)

Returns the output value set for a GPIO pin using open drain.

Parameters:
pinThe pin number.
Returns:
The pin output value.
Note:
This function must be used in conjunction with gpio_set_gpio_open_drain_pin, gpio_clr_gpio_open_drain_pin and gpio_tgl_gpio_open_drain_pin.

Definition at line 313 of file gpio.c.

References GPIO.

void gpio_set_gpio_pin ( unsigned int  pin)

Drives a GPIO pin to 1.

Parameters:
pinThe pin number.

Definition at line 320 of file gpio.c.

References GPIO.

void gpio_clr_gpio_pin ( unsigned int  pin)

Drives a GPIO pin to 0.

Parameters:
pinThe pin number.

Definition at line 330 of file gpio.c.

References GPIO.

void gpio_tgl_gpio_pin ( unsigned int  pin)

Toggles a GPIO pin.

Parameters:
pinThe pin number.

Definition at line 340 of file gpio.c.

References GPIO.

void gpio_set_gpio_open_drain_pin ( unsigned int  pin)

Drives a GPIO pin to 1 using open drain.

Parameters:
pinThe pin number.

Definition at line 350 of file gpio.c.

References GPIO.

void gpio_clr_gpio_open_drain_pin ( unsigned int  pin)

Drives a GPIO pin to 0 using open drain.

Parameters:
pinThe pin number.

Definition at line 359 of file gpio.c.

References GPIO.

void gpio_tgl_gpio_open_drain_pin ( unsigned int  pin)

Toggles a GPIO pin using open drain.

Parameters:
pinThe pin number.

Definition at line 369 of file gpio.c.

References GPIO.

void gpio_enable_pin_glitch_filter ( unsigned int  pin)

Enables the glitch filter of a pin.

When the glitch filter is enabled, a glitch with duration of less than 1 clock cycle is automatically rejected, while a pulse with duration of 2 clock cycles or more is accepted. For pulse durations between 1 clock cycle and 2 clock cycles, the pulse may or may not be taken into account, depending on the precise timing of its occurrence. Thus for a pulse to be guaranteed visible it must exceed 2 clock cycles, whereas for a glitch to be reliably filtered out, its duration must not exceed 1 clock cycle. The filter introduces 2 clock cycles latency.

Parameters:
pinThe pin number.

Definition at line 379 of file gpio.c.

References GPIO.

void gpio_disable_pin_glitch_filter ( unsigned int  pin)

Disables the glitch filter of a pin.

Parameters:
pinThe pin number.

Definition at line 386 of file gpio.c.

References GPIO.

int gpio_enable_pin_interrupt ( unsigned int  pin,
unsigned int  mode 
)

Enables the interrupt of a pin with the specified settings.

Parameters:
pinThe pin number.
modeThe trigger mode (GPIO_PIN_CHANGE, GPIO_RISING_EDGE or GPIO_FALLING_EDGE).
Returns:
GPIO_SUCCESS or GPIO_INVALID_ARGUMENT.

Definition at line 430 of file gpio.c.

References GPIO, GPIO_INVALID_ARGUMENT, and GPIO_SUCCESS.

void gpio_disable_pin_interrupt ( unsigned int  pin)

Disables the interrupt of a pin.

Parameters:
pinThe pin number.

Definition at line 448 of file gpio.c.

References GPIO.

int gpio_get_pin_interrupt_flag ( unsigned int  pin)

Gets the interrupt flag of a pin.

Parameters:
pinThe pin number.
Returns:
The pin interrupt flag.

Definition at line 455 of file gpio.c.

References GPIO.

void gpio_clear_pin_interrupt_flag ( unsigned int  pin)

Clears the interrupt flag of a pin.

Parameters:
pinThe pin number.

Definition at line 462 of file gpio.c.

References GPIO.