gpio_at91.c File Reference

Go to the source code of this file.

Functions

int GpioPinGet (int bank, int bit)
 Get pin level.
void GpioPinSetLow (int bank, int bit)
 Set pin level to low.
void GpioPinSetHigh (int bank, int bit)
 Set pin level to high.
void GpioPinSet (int bank, int bit, int value)
 Set pin level.
u_int GpioPortGet (int bank)
 Get all pin levels of a specified bank/port.
void GpioPortSetLow (int bank, u_int mask)
 Set multiple pin levels of a bank/port to low.
void GpioPortSetHigh (int bank, u_int mask)
 Set multiple pin levels of a bank/port to high.
void GpioPortSet (int bank, u_int value)
 Set all pin levels of a bank/port.
uint32_t GpioPinConfigGet (int bank, int bit)
 Get pin configuration.
int GpioPortConfigSet (int bank, u_int mask, uint32_t flags)
 Set port wide pin configuration.
int GpioPinConfigSet (int bank, int bit, uint32_t flags)
 Set pin configuration.
int GpioRegisterIrqHandler (GPIO_SIGNAL *sig, int bit, void(*handler)(void *), void *arg)
 Register a GPIO pin interrupt handler.
int GpioIrqEnable (GPIO_SIGNAL *sig, int bit)
 Enable a specified GPIO interrupt.
int GpioIrqDisable (GPIO_SIGNAL *sig, int bit)
 Disable a specified GPIO interrupt.


Function Documentation

int GpioPinGet ( int  bank,
int  bit 
)

Get pin level.

Copyright (C) 2007 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 EGNITE SOFTWARE GMBH 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 EGNITE SOFTWARE GMBH 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/

Id

Parameters:
bank GPIO bank/port number.
bit Bit number of the specified bank/port.
Returns:
1 if the pin level is high. 0 is returned if the pin level is low or if the pin is undefined.

Definition at line 53 of file gpio_at91.c.

References _BV, and inr.

void GpioPinSetLow ( int  bank,
int  bit 
)

Set pin level to low.

Trying to set undefined pins is silently ignored.

Parameters:
bank GPIO bank/port number.
bit Bit number of the specified bank/port.

Definition at line 93 of file gpio_at91.c.

References _BV, and outr.

void GpioPinSetHigh ( int  bank,
int  bit 
)

Set pin level to high.

Trying to set undefined pins is silently ignored.

Parameters:
bank GPIO bank/port number.
bit Bit number of the specified bank/port.

Definition at line 130 of file gpio_at91.c.

References _BV, and outr.

void GpioPinSet ( int  bank,
int  bit,
int  value 
)

Set pin level.

Trying to set undefined pins is silently ignored.

Parameters:
bank GPIO bank/port number.
bit Bit number of the specified bank/port.
value Level, 0 for low or any other value for high.

Definition at line 168 of file gpio_at91.c.

References GpioPinSetHigh(), and GpioPinSetLow().

u_int GpioPortGet ( int  bank  ) 

Get all pin levels of a specified bank/port.

Parameters:
bank GPIO bank/port number.
Returns:
Pin levels. 0 is returned for unknown banks and pins.

Definition at line 185 of file gpio_at91.c.

References inr.

void GpioPortSetLow ( int  bank,
u_int  mask 
)

Set multiple pin levels of a bank/port to low.

Parameters:
bank GPIO bank/port number.
mask Pin levels are set to low, if the corresponding bit in this mask is 1.
Returns:
Levels.

Definition at line 226 of file gpio_at91.c.

References outr.

void GpioPortSetHigh ( int  bank,
u_int  mask 
)

Set multiple pin levels of a bank/port to high.

Trying to set undefined ports is silently ignored.

Parameters:
bank GPIO bank/port number.
mask Pin levels are set to high, if the corresponding bit in this mask is 1.

Definition at line 264 of file gpio_at91.c.

References outr.

void GpioPortSet ( int  bank,
u_int  value 
)

Set all pin levels of a bank/port.

This routine can be used to simultanously set all pins of a specific port. However, in some implementations the high bit values will be set before the low bit values. If this is a problem, you should use GpioPortSetHigh() and GpioPortSetLow().

Parameters:
bank GPIO bank/port number.
value Pin levels are set to high, if the corresponding bit in this mask is 1. All other pin levels are set to low.

Definition at line 306 of file gpio_at91.c.

References GpioPortSetHigh(), and GpioPortSetLow().

uint32_t GpioPinConfigGet ( int  bank,
int  bit 
)

Get pin configuration.

Parameters:
bank GPIO bank/port number.
bit Bit number of the specified bank/port.
Returns:
Attribute flags of the pin.

Definition at line 325 of file gpio_at91.c.

References _BV, GPIO_CFG_DEBOUNCE, GPIO_CFG_DISABLED, GPIO_CFG_MULTIDRIVE, GPIO_CFG_OUTPUT, GPIO_CFG_PULLUP, and inr.

int GpioPortConfigSet ( int  bank,
u_int  mask,
uint32_t  flags 
)

Set port wide pin configuration.

Note:
This function does not check for undefined ports and pins or invalid attributes. If this is required, use GpioPinConfigSet().
Parameters:
bank GPIO bank/port number.
mask The given attributes are set for a specific pin, if the corresponding bit in this mask is 1.
flags Attribute flags to set.
Returns:
Always 0.

Definition at line 475 of file gpio_at91.c.

References _BV, GPIO_CFG_DEBOUNCE, GPIO_CFG_DISABLED, GPIO_CFG_MULTIDRIVE, GPIO_CFG_OUTPUT, GPIO_CFG_PULLUP, outr, PIO_ID, PIOA_ID, PIOB_ID, PIOC_ID, and PMC_PCER.

int GpioPinConfigSet ( int  bank,
int  bit,
uint32_t  flags 
)

Set pin configuration.

Applications may also use this function to make sure, that a specific attribute is available for a specific pin.

Note:
GPIO pins are typically initialized to a safe state after power up. This routine is not able to determine the consequences of changing pin configurations. In the worst case you may permanently damage your hardware by bad pin settings.
Parameters:
bank GPIO bank/port number.
bit Bit number of the specified bank/port.
flags Attribute flags.
Returns:
0 if all attributes had been set, -1 otherwise.

Definition at line 710 of file gpio_at91.c.

References _BV, GpioPinConfigGet(), and GpioPortConfigSet().

int GpioRegisterIrqHandler ( GPIO_SIGNAL sig,
int  bit,
void(*)(void *)  handler,
void *  arg 
)

Register a GPIO pin interrupt handler.

Generating interrupts on GPIO pin changes is not supported on all platforms. In this case dedicated external interrupt pins may be used with NutRegisterIrqHandler().

Interrupts are triggered on rising and falling edges. Level triggering or triggering on specific edges is not supported.

After registering, interrupts are disabled. Calling GpioIrqEnable() is required to activate the interrupt.

The following code fragment registers an interrupt handler which is called on each change of bit 4 of the first GPIO port:

 #include <dev/gpio.h>

 static void PinChange(void *arg)
 {
     ...
 }

 {
     ...
     GpioPinConfigSet(0, 4, GPIO_CFG_PULLUP);
     GpioRegisterIrqHandler(&sig_GPIO, 4, PinChange, NULL);
     GpioIrqEnable(&sig_GPIO, 30);
     ...
 }

Parameters:
sig Bank/port interrupt to be associated with this handler.
bit Bit number of the specified bank/port.
handler This routine will be called by Nut/OS, when the specified pin changes its state.
arg Argument to be passed to the interrupt handler routine.
Returns:
0 on success, -1 otherwise.

Definition at line 761 of file gpio_at91.c.

References GPIO_SIGNAL::ios_handler, GPIO_SIGNAL::ios_sig, GPIO_SIGNAL::ios_vector, GPIO_VECTOR::iov_arg, GPIO_VECTOR::iov_handler, malloc, memset(), NutIrqEnable(), and NutRegisterIrqHandler().

int GpioIrqEnable ( GPIO_SIGNAL sig,
int  bit 
)

Enable a specified GPIO interrupt.

A related interrupt handler must have been registered before calling this function. See GpioRegisterIrqHandler().

Parameters:
sig Interrupt to enable.
bit Bit number of the specified bank/port.
Returns:
0 on success, -1 otherwise.

Definition at line 797 of file gpio_at91.c.

References GPIO_SIGNAL::ios_ctl, and NUT_IRQCTL_ENABLE.

int GpioIrqDisable ( GPIO_SIGNAL sig,
int  bit 
)

Disable a specified GPIO interrupt.

Parameters:
sig Interrupt to disable.
bit Bit number of the specified bank/port.
Returns:
0 on success, -1 otherwise.

Definition at line 810 of file gpio_at91.c.

References GPIO_SIGNAL::ios_ctl, and NUT_IRQCTL_DISABLE.


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