Hanna
Sourcecode Batteriemanagementsystem
Makrodefinitionen | Typdefinitionen | Funktionen
port_driver.h-Dateireferenz

XMEGA I/O Port driver header file. Mehr ...

#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
Include-Abhängigkeitsdiagramm für port_driver.h:
Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define IO_ClearInterruptFlags(_port, _bitMask)   ( (_port)->INTFLAGS = _bitMask )
 This macro clears interrupt flags, given by a bit mask, for an I/O port or a virtual port. Mehr ...
 
#define IO_ClearPins(_port, _clearMask)   ( (_port)->OUTCLR = _clearMask )
 Set the output value of a set of I/O pins to logic low. Mehr ...
 
#define IO_GetInterruptFlags(_port, _bitMask)   ( (_port)->INTFLAGS & _bitMask )
 This macro returns the current state of the interrupt flags, given by a bit mask, for an I/O port or a virtual port. Mehr ...
 
#define IO_GetPortValue(_port)   ( (_port)->IN )
 This macro returns the current logic value of the port or virtual port. Mehr ...
 
#define IO_SetDirection(_port, _directionMask)   ( (_port)->DIR = _directionMask )
 This macro sets the data direction for all I/O pins in the port or the virtual port. Mehr ...
 
#define IO_SetOutputValue(_port, _outValue)   ( (_port)->OUT = _outValue )
 This macro sets the output value/logic level of all pins in the I/O port or virtual port. Mehr ...
 
#define IO_SetPins(_port, _setMask)   ( (_port)->OUTSET = _setMask )
 Set the output value of a set of I/O pins to logic high. Mehr ...
 
#define IO_ToggleDirection(_port, _toggleMask)   ( (_port)->DIRTGL = _toggleMask )
 Toggle the data direction of a set of pins. Mehr ...
 
#define IO_TogglePins(_port, _toggleMask)   ( (_port)->OUTTGL = _toggleMask )
 Toggle the output value of a set of I/O pins. Mehr ...
 
Input/Sense Configuration Flags
#define IO_ISC_BOTHEDGES   (0 << 0)
 
#define IO_ISC_RISING   (1 << 0)
 
#define IO_ISC_FALLING   (2 << 0)
 
#define IO_ISC_LEVEL   (3 << 0)
 
#define IO_ISC_INPUT_DISABLE   (7 << 0)
 
#define IO_ISC_DEFAULT   (0 << 0)
 
Output and Pull Configuration Flags
#define IO_OPC_TOTEM   (0 << 3)
 
#define IO_OPC_BUSKEEPER   (1 << 3)
 
#define IO_OPC_PULL_DOWN   (2 << 3)
 
#define IO_OPC_PULL_UP   (3 << 3)
 
#define IO_OPC_WIRED_OR   (4 << 3)
 
#define IO_OPC_WIRED_AND   (5 << 3)
 
#define IO_OPC_WIRED_OR_PULL_DOWN   (6 << 3)
 
#define IO_OPC_WIRED_AND_PULL_UP   (7 << 3)
 
#define IO_OPC_DEFAULT   (0 << 3)
 
Inverted I/O Configuration Flags
#define IO_CONF_INV_ENABLED   (1 << 0)
 
#define IO_CONF_INV_DISABLE   (0 << 0)
 
Slew Rate Limit Configuration Flags
#define IO_CONF_SRL_ENABLED   (1 << 0)
 
#define IO_CONF_SRL_DISABLED   (0 << 0)
 

Typdefinitionen

typedef uint8_t ioport_pin_t
 
typedef uint8_t port_pin_t
 

Funktionen

void IO_ConfigureInterrupt0 (PORT_t *port, PORT_INT0LVL_t intLevel, uint8_t pinMask)
 Configures interrupt 0. Mehr ...
 
void IO_ConfigureInterrupt1 (PORT_t *port, PORT_INT1LVL_t intLevel, uint8_t pinMask)
 Configures interrupt 1. Mehr ...
 
void IO_ConfigurePin (PORT_t *port, uint8_t pinMask, uint8_t slewRateEnable, uint8_t invertEnable, PORT_OPC_t opc, PORT_ISC_t isc)
 This function changes the configuration of a set of pins. Mehr ...
 
bool IO_GetPinLevel (PORT_t *port, uint8_t pinMask)
 
void IO_MapVirtualPort0 (PORTCFG_VP02MAP_t realPort)
 Maps a real port to virtual port 0. Mehr ...
 
void IO_MapVirtualPort1 (PORTCFG_VP13MAP_t realPort)
 Maps a real port to virtual port 1. Mehr ...
 
void IO_MapVirtualPort2 (PORTCFG_VP02MAP_t realPort)
 Maps a real port to virtual port 2. Mehr ...
 
void IO_MapVirtualPort3 (PORTCFG_VP13MAP_t realPort)
 Maps a real port to virtual port 3. Mehr ...
 
void IO_SetPinAsInput (PORT_t *port, uint8_t pinMask)
 This function configures a pin in an I/O port or virtual port as an input. Mehr ...
 
void IO_SetPinAsOutput (PORT_t *port, uint8_t pinMask)
 This function configures a pin in an I/O port or virtual port as an output. Mehr ...
 
void IO_SetPinAsOutput_InitHigh (PORT_t *port, uint8_t pinMask)
 This function configures a pin in an I/O port or virtual port as an output and sets the pin to high as initial value. Mehr ...
 
void IO_SetPinHigh (PORT_t *port, uint8_t pinMask)
 This function sets a bit in the OUT register of an I/O port or virtual port. Mehr ...
 
void IO_SetPinLow (PORT_t *port, uint8_t pinMask)
 This function clears a bit in the OUT register of an I/O port or virtual port. Mehr ...
 
void IO_TogglePin (PORT_t *port, uint8_t pinMask)
 Toggle the value of an IOPORT pin, which has previously been configured as an output. Mehr ...
 

Ausführliche Beschreibung

XMEGA I/O Port driver header file.

This file contains the function prototypes and enumerator definitions for various configuration parameters for the XMEGA I/O Port driver.

This driver is intended for rapid prototyping and documentation purposes for getting started with the XMEGA I/O Ports. The driver is not optimized for speed or size. However, functions that are just a few lines of code are written as macros to eliminate function call overhead. When using these macros it is important to use the correct data type for the arguments, as this is not checked by the compiler.

Application note:
AVR1313: Using the XMEGA I/O Pins and External Interrupts
Documentation
For comprehensive code documentation, supported compilers, compiler settings and supported devices see readme.html
Autor
Atmel Corporation: http://www.atmel.com
Support email: avr@a.nosp@m.tmel.nosp@m..com
Revision
351
Date
2016-03-19 23:27:55 +0100 (Sa, 19 Mrz 2016)


Copyright (c) 2008, Atmel Corporation 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. The name of ATMEL may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY ATMEL "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 EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.

Definiert in Datei port_driver.h.

Makro-Dokumentation

#define IO_ClearInterruptFlags (   _port,
  _bitMask 
)    ( (_port)->INTFLAGS = _bitMask )

This macro clears interrupt flags, given by a bit mask, for an I/O port or a virtual port.

/note This macro can be used for both I/O ports and virtual ports.

Parameter
_portPointer to the PORT_t or VPORT_t instance.
_bitMaskBit mask for interrupt flags to clear.

Definiert in Zeile 213 der Datei port_driver.h.

#define IO_ClearPins (   _port,
  _clearMask 
)    ( (_port)->OUTCLR = _clearMask )

Set the output value of a set of I/O pins to logic low.

This macro sets the output value of a set of I/O pins to logic low. (Unless inverted I/O has been enabled for the pins) It does not alter the pins not specified in the bit mask.

Parameter
_portPointer to the PORT_t instance.
_clearMaskThe bit mask of pins to set to logic low level.

Definiert in Zeile 168 der Datei port_driver.h.

#define IO_CONF_INV_DISABLE   (0 << 0)

I/O is Not Inverted

Definiert in Zeile 101 der Datei port_driver.h.

#define IO_CONF_INV_ENABLED   (1 << 0)

I/O is Inverted

Definiert in Zeile 100 der Datei port_driver.h.

#define IO_CONF_SRL_DISABLED   (0 << 0)

Slew Rate Limit Disabled

Definiert in Zeile 107 der Datei port_driver.h.

#define IO_CONF_SRL_ENABLED   (1 << 0)

Slew Rate Limit Enabled

Definiert in Zeile 106 der Datei port_driver.h.

#define IO_GetInterruptFlags (   _port,
  _bitMask 
)    ( (_port)->INTFLAGS & _bitMask )

This macro returns the current state of the interrupt flags, given by a bit mask, for an I/O port or a virtual port.

/note This macro can also be used to access virtual ports.

Parameter
_portPointer to the PORT_t or VPORT_t instance.
_bitMaskBit mask for interrupt flags to read.
Rückgabe
The state of the interrupt flags.

Definiert in Zeile 202 der Datei port_driver.h.

#define IO_GetPortValue (   _port)    ( (_port)->IN )

This macro returns the current logic value of the port or virtual port.

/note This macro can also be used to access virtual ports.

Parameter
_portPointer to the PORT_t or VPORT_t instance.
Rückgabe
The current logic state of the port.

Definiert in Zeile 190 der Datei port_driver.h.

#define IO_ISC_BOTHEDGES   (0 << 0)

Sense Both Edges

Definiert in Zeile 77 der Datei port_driver.h.

#define IO_ISC_FALLING   (2 << 0)

Sense Falling Edge

Definiert in Zeile 79 der Datei port_driver.h.

#define IO_ISC_INPUT_DISABLE   (7 << 0)

Input Buffer Disabled

Definiert in Zeile 81 der Datei port_driver.h.

#define IO_ISC_LEVEL   (3 << 0)

Sense Low Level

Definiert in Zeile 80 der Datei port_driver.h.

#define IO_ISC_RISING   (1 << 0)

Sense Rising Edge

Definiert in Zeile 78 der Datei port_driver.h.

#define IO_OPC_BUSKEEPER   (1 << 3)

Bus Keeper

Definiert in Zeile 88 der Datei port_driver.h.

#define IO_OPC_DEFAULT   (0 << 3)

Normal push/pull output

Definiert in Zeile 95 der Datei port_driver.h.

#define IO_OPC_PULL_DOWN   (2 << 3)

Pull-Down (when input)

Definiert in Zeile 89 der Datei port_driver.h.

#define IO_OPC_PULL_UP   (3 << 3)

Pull-Up (when input)

Definiert in Zeile 90 der Datei port_driver.h.

#define IO_OPC_TOTEM   (0 << 3)

Normal push/pull output

Definiert in Zeile 87 der Datei port_driver.h.

#define IO_OPC_WIRED_AND   (5 << 3)

Wired AND

Definiert in Zeile 92 der Datei port_driver.h.

#define IO_OPC_WIRED_AND_PULL_UP   (7 << 3)

Wired AND and Pull-Up

Definiert in Zeile 94 der Datei port_driver.h.

#define IO_OPC_WIRED_OR   (4 << 3)

Wired OR

Definiert in Zeile 91 der Datei port_driver.h.

#define IO_OPC_WIRED_OR_PULL_DOWN   (6 << 3)

Wired OR and Pull-Down

Definiert in Zeile 93 der Datei port_driver.h.

#define IO_SetDirection (   _port,
  _directionMask 
)    ( (_port)->DIR = _directionMask )

This macro sets the data direction for all I/O pins in the port or the virtual port.

/note This macro can also be used to access virtual ports.

Parameter
_portPointer to the PORT_t or VPORT_t instance.
_directionMaskThe direction setting mask. The direction for pin n in the port is controlled by bit n. A 0 means input. A 1 means output.

Definiert in Zeile 121 der Datei port_driver.h.

#define IO_SetOutputValue (   _port,
  _outValue 
)    ( (_port)->OUT = _outValue )

This macro sets the output value/logic level of all pins in the I/O port or virtual port.

/note This macro can also be used to access virtual ports.

Parameter
_portPointer to the PORT_t or VPORT_t instance.
_outValueThe output value. Bit n in this parameter corresponds to pin n of the port.

Definiert in Zeile 144 der Datei port_driver.h.

#define IO_SetPins (   _port,
  _setMask 
)    ( (_port)->OUTSET = _setMask )

Set the output value of a set of I/O pins to logic high.

This macro sets the output value of a set of I/O pins to logic high. (Unless inverted I/O has been enabled for the pins) It does not alter the pins not specified in the bit mask.

Parameter
_portPointer to the PORT_t instance.
_setMaskThe bit mask of pins to set to logic high level.

Definiert in Zeile 156 der Datei port_driver.h.

#define IO_ToggleDirection (   _port,
  _toggleMask 
)    ( (_port)->DIRTGL = _toggleMask )

Toggle the data direction of a set of pins.

This macro toggles the data direction of the selected port pins without altering the data direction of the other pins in that port.

Parameter
_portPointer to the PORT_t instance.
_toggleMaskA bit mask of the pins on which to toggle input direction.

Definiert in Zeile 132 der Datei port_driver.h.

#define IO_TogglePins (   _port,
  _toggleMask 
)    ( (_port)->OUTTGL = _toggleMask )

Toggle the output value of a set of I/O pins.

This macro toggles the output value of a set of I/O pins. It does not alter the output value of pins not specified in the bit mask.

Parameter
_portPointer to the PORT_t instance.
_toggleMaskThe bit mask of pins to toggle.

Definiert in Zeile 179 der Datei port_driver.h.

Dokumentation der Funktionen

void IO_ConfigureInterrupt0 ( PORT_t *  port,
PORT_INT0LVL_t  intLevel,
uint8_t  pinMask 
)

Configures interrupt 0.

This function configures interrupt 0 to be associated with a set of pins and sets the desired interrupt level.

Parameter
portThe port to configure.
intLevelThe desired interrupt level for port interrupt 0.
pinMaskA mask that selects the pins to associate with port interrupt 0.

Definiert in Zeile 189 der Datei port_driver.c.

void IO_ConfigureInterrupt1 ( PORT_t *  port,
PORT_INT1LVL_t  intLevel,
uint8_t  pinMask 
)

Configures interrupt 1.

This function configures interrupt 1 to be associated with a set of pins and sets the desired interrupt level.

Parameter
portThe port to configure.
intLevelThe desired interrupt level for port interrupt 1.
pinMaskA mask that selects the pins to associate with port interrupt 1.

Definiert in Zeile 207 der Datei port_driver.c.

void IO_ConfigurePin ( PORT_t *  port,
uint8_t  pinMask,
uint8_t  slewRateEnable,
uint8_t  invertEnable,
PORT_OPC_t  opc,
PORT_ISC_t  isc 
)

This function changes the configuration of a set of pins.

Parameter
portThe port.
pinMaskA bit mask that selects the pins to configure.
slewRateEnableEnable/disable slew rate control.
invertEnableEnable/disable I/O inversion.
opcOutput/Pull Configuration.
iscInput/Sense Configuration.

Definiert in Zeile 77 der Datei port_driver.c.

void IO_MapVirtualPort0 ( PORTCFG_VP02MAP_t  realPort)

Maps a real port to virtual port 0.

This function maps a real port to virtual port 0 to make some of the registers available in I/O space.

Parameter
realPortSelects the real port to map to virtual port 0.

Definiert in Zeile 223 der Datei port_driver.c.

void IO_MapVirtualPort1 ( PORTCFG_VP13MAP_t  realPort)

Maps a real port to virtual port 1.

This function maps a real port to virtual port 1 to make some of the registers available in I/O space.

Parameter
realPortSelects the real port to map to virtual port 1.

Definiert in Zeile 236 der Datei port_driver.c.

void IO_MapVirtualPort2 ( PORTCFG_VP02MAP_t  realPort)

Maps a real port to virtual port 2.

This function maps a real port to virtual port 2 to make some of the registers available in I/O space.

Parameter
realPortSelects the real port to map to virtual port 2.

Definiert in Zeile 249 der Datei port_driver.c.

void IO_MapVirtualPort3 ( PORTCFG_VP13MAP_t  realPort)

Maps a real port to virtual port 3.

This function maps a real port to virtual port 3 to make some of the registers available in I/O space.

Parameter
realPortSelects the real port to map to virtual port 3.

Definiert in Zeile 262 der Datei port_driver.c.

void IO_SetPinAsInput ( PORT_t *  port,
uint8_t  pinMask 
)

This function configures a pin in an I/O port or virtual port as an input.

Zu beachten
This function is especially efficient with virtual ports, since only one CBI instruction is invoked.
Parameter
*portPointer to the PORT_t or VPORT_t instance.
pinMaskpin to toggle as bitmask

Definiert in Zeile 159 der Datei port_driver.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void IO_SetPinAsOutput ( PORT_t *  port,
uint8_t  pinMask 
)

This function configures a pin in an I/O port or virtual port as an output.

Zu beachten
This function is especially efficient with virtual ports, since only one SBI instruction is invoked.
Parameter
*portPointer to the PORT_t or VPORT_t instance.
pinMaskpin to toggle as bitmask

Definiert in Zeile 133 der Datei port_driver.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void IO_SetPinAsOutput_InitHigh ( PORT_t *  port,
uint8_t  pinMask 
)

This function configures a pin in an I/O port or virtual port as an output and sets the pin to high as initial value.

Zu beachten
This function is especially efficient with virtual ports, since only one SBI instruction is invoked.
Parameter
*portPointer to the PORT_t or VPORT_t instance.
pinMaskpin to toggle as bitmask

Definiert in Zeile 145 der Datei port_driver.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void IO_SetPinHigh ( PORT_t *  port,
uint8_t  pinMask 
)

This function sets a bit in the OUT register of an I/O port or virtual port.

Zu beachten
This function is especially efficient with virtual ports, since only one SBI instruction is invoked.
Parameter
*portPointer to the PORT_t or VPORT_t instance.
pinMaskpin to toggle as bitmask

Definiert in Zeile 108 der Datei port_driver.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void IO_SetPinLow ( PORT_t *  port,
uint8_t  pinMask 
)

This function clears a bit in the OUT register of an I/O port or virtual port.

Zu beachten
This function is especially efficient with virtual ports, since only one CBI instruction is invoked.
Parameter
*portPointer to the PORT_t or VPORT_t instance.
pinMaskpin to toggle as bitmask

Definiert in Zeile 121 der Datei port_driver.c.

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void IO_TogglePin ( PORT_t *  port,
uint8_t  pinMask 
)

Toggle the value of an IOPORT pin, which has previously been configured as an output.

Parameter
*portPointer to the PORT_t or VPORT_t instance.
pinMaskpin to toggle as bitmask

Definiert in Zeile 174 der Datei port_driver.c.