Hanna
Sourcecode Batteriemanagementsystem |
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>
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 ... | |
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.
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:
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.
#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.
_port | Pointer to the PORT_t or VPORT_t instance. |
_bitMask | Bit 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.
_port | Pointer to the PORT_t instance. |
_clearMask | The 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.
_port | Pointer to the PORT_t or VPORT_t instance. |
_bitMask | Bit mask for interrupt flags to read. |
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.
_port | Pointer to the PORT_t or VPORT_t instance. |
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.
_port | Pointer to the PORT_t or VPORT_t instance. |
_directionMask | The 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.
_port | Pointer to the PORT_t or VPORT_t instance. |
_outValue | The 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.
_port | Pointer to the PORT_t instance. |
_setMask | The 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.
_port | Pointer to the PORT_t instance. |
_toggleMask | A 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.
_port | Pointer to the PORT_t instance. |
_toggleMask | The bit mask of pins to toggle. |
Definiert in Zeile 179 der Datei port_driver.h.
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.
port | The port to configure. |
intLevel | The desired interrupt level for port interrupt 0. |
pinMask | A 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.
port | The port to configure. |
intLevel | The desired interrupt level for port interrupt 1. |
pinMask | A 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.
port | The port. |
pinMask | A bit mask that selects the pins to configure. |
slewRateEnable | Enable/disable slew rate control. |
invertEnable | Enable/disable I/O inversion. |
opc | Output/Pull Configuration. |
isc | Input/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.
realPort | Selects 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.
realPort | Selects 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.
realPort | Selects 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.
realPort | Selects 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.
*port | Pointer to the PORT_t or VPORT_t instance. |
pinMask | pin to toggle as bitmask |
Definiert in Zeile 159 der Datei port_driver.c.
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.
*port | Pointer to the PORT_t or VPORT_t instance. |
pinMask | pin to toggle as bitmask |
Definiert in Zeile 133 der Datei port_driver.c.
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.
*port | Pointer to the PORT_t or VPORT_t instance. |
pinMask | pin to toggle as bitmask |
Definiert in Zeile 145 der Datei port_driver.c.
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.
*port | Pointer to the PORT_t or VPORT_t instance. |
pinMask | pin to toggle as bitmask |
Definiert in Zeile 108 der Datei port_driver.c.
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.
*port | Pointer to the PORT_t or VPORT_t instance. |
pinMask | pin to toggle as bitmask |
Definiert in Zeile 121 der Datei port_driver.c.
void IO_TogglePin | ( | PORT_t * | port, |
uint8_t | pinMask | ||
) |
Toggle the value of an IOPORT pin, which has previously been configured as an output.
*port | Pointer to the PORT_t or VPORT_t instance. |
pinMask | pin to toggle as bitmask |
Definiert in Zeile 174 der Datei port_driver.c.