diff options
Diffstat (limited to 'mcc_generated_files/system/pins.h')
| -rw-r--r-- | mcc_generated_files/system/pins.h | 608 |
1 files changed, 608 insertions, 0 deletions
diff --git a/mcc_generated_files/system/pins.h b/mcc_generated_files/system/pins.h new file mode 100644 index 0000000..63292fd --- /dev/null +++ b/mcc_generated_files/system/pins.h @@ -0,0 +1,608 @@ +/**
+ * Generated Pins header File
+ *
+ * @file pins.h
+ *
+ * @defgroup pinsdriver Pins Driver
+ *
+ * @brief This is generated driver header for pins.
+ * This header file provides APIs for all pins selected in the GUI.
+ *
+ * @version Driver Version 1.1.0
+*/
+
+/*
+© [2025] Microchip Technology Inc. and its subsidiaries.
+
+ Subject to your compliance with these terms, you may use Microchip
+ software and any derivatives exclusively with Microchip products.
+ You are responsible for complying with 3rd party license terms
+ applicable to your use of 3rd party software (including open source
+ software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
+ NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
+ SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
+ MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+ WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
+ INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY
+ KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF
+ MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE
+ FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP?S
+ TOTAL LIABILITY ON ALL CLAIMS RELATED TO THE SOFTWARE WILL NOT
+ EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
+ THIS SOFTWARE.
+*/
+
+#ifndef PINS_H_INCLUDED
+#define PINS_H_INCLUDED
+
+#include <avr/io.h>
+#include "./port.h"
+
+//get/set IO_PA5 aliases
+#define IO_PA5_SetHigh() do { PORTA_OUTSET = 0x20; } while(0)
+#define IO_PA5_SetLow() do { PORTA_OUTCLR = 0x20; } while(0)
+#define IO_PA5_Toggle() do { PORTA_OUTTGL = 0x20; } while(0)
+#define IO_PA5_GetValue() (VPORTA.IN & (0x1 << 5))
+#define IO_PA5_SetDigitalInput() do { PORTA_DIRCLR = 0x20; } while(0)
+#define IO_PA5_SetDigitalOutput() do { PORTA_DIRSET = 0x20; } while(0)
+#define IO_PA5_SetPullUp() do { PORTA_PIN5CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PA5_ResetPullUp() do { PORTA_PIN5CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PA5_SetInverted() do { PORTA_PIN5CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PA5_ResetInverted() do { PORTA_PIN5CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PA5_DisableInterruptOnChange() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PA5_EnableInterruptForBothEdges() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PA5_EnableInterruptForRisingEdge() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PA5_EnableInterruptForFallingEdge() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PA5_DisableDigitalInputBuffer() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PA5_EnableInterruptForLowLevelSensing() do { PORTA.PIN5CTRL = (PORTA.PIN5CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PA5_SetInterruptHandler IO_PA5_SetInterruptHandler
+
+//get/set IO_PA4 aliases
+#define IO_PA4_SetHigh() do { PORTA_OUTSET = 0x10; } while(0)
+#define IO_PA4_SetLow() do { PORTA_OUTCLR = 0x10; } while(0)
+#define IO_PA4_Toggle() do { PORTA_OUTTGL = 0x10; } while(0)
+#define IO_PA4_GetValue() (VPORTA.IN & (0x1 << 4))
+#define IO_PA4_SetDigitalInput() do { PORTA_DIRCLR = 0x10; } while(0)
+#define IO_PA4_SetDigitalOutput() do { PORTA_DIRSET = 0x10; } while(0)
+#define IO_PA4_SetPullUp() do { PORTA_PIN4CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PA4_ResetPullUp() do { PORTA_PIN4CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PA4_SetInverted() do { PORTA_PIN4CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PA4_ResetInverted() do { PORTA_PIN4CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PA4_DisableInterruptOnChange() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PA4_EnableInterruptForBothEdges() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PA4_EnableInterruptForRisingEdge() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PA4_EnableInterruptForFallingEdge() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PA4_DisableDigitalInputBuffer() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PA4_EnableInterruptForLowLevelSensing() do { PORTA.PIN4CTRL = (PORTA.PIN4CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PA4_SetInterruptHandler IO_PA4_SetInterruptHandler
+
+//get/set IO_PA6 aliases
+#define IO_PA6_SetHigh() do { PORTA_OUTSET = 0x40; } while(0)
+#define IO_PA6_SetLow() do { PORTA_OUTCLR = 0x40; } while(0)
+#define IO_PA6_Toggle() do { PORTA_OUTTGL = 0x40; } while(0)
+#define IO_PA6_GetValue() (VPORTA.IN & (0x1 << 6))
+#define IO_PA6_SetDigitalInput() do { PORTA_DIRCLR = 0x40; } while(0)
+#define IO_PA6_SetDigitalOutput() do { PORTA_DIRSET = 0x40; } while(0)
+#define IO_PA6_SetPullUp() do { PORTA_PIN6CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PA6_ResetPullUp() do { PORTA_PIN6CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PA6_SetInverted() do { PORTA_PIN6CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PA6_ResetInverted() do { PORTA_PIN6CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PA6_DisableInterruptOnChange() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PA6_EnableInterruptForBothEdges() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PA6_EnableInterruptForRisingEdge() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PA6_EnableInterruptForFallingEdge() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PA6_DisableDigitalInputBuffer() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PA6_EnableInterruptForLowLevelSensing() do { PORTA.PIN6CTRL = (PORTA.PIN6CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PA6_SetInterruptHandler IO_PA6_SetInterruptHandler
+
+//get/set IO_PA7 aliases
+#define IO_PA7_SetHigh() do { PORTA_OUTSET = 0x80; } while(0)
+#define IO_PA7_SetLow() do { PORTA_OUTCLR = 0x80; } while(0)
+#define IO_PA7_Toggle() do { PORTA_OUTTGL = 0x80; } while(0)
+#define IO_PA7_GetValue() (VPORTA.IN & (0x1 << 7))
+#define IO_PA7_SetDigitalInput() do { PORTA_DIRCLR = 0x80; } while(0)
+#define IO_PA7_SetDigitalOutput() do { PORTA_DIRSET = 0x80; } while(0)
+#define IO_PA7_SetPullUp() do { PORTA_PIN7CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PA7_ResetPullUp() do { PORTA_PIN7CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PA7_SetInverted() do { PORTA_PIN7CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PA7_ResetInverted() do { PORTA_PIN7CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PA7_DisableInterruptOnChange() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PA7_EnableInterruptForBothEdges() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PA7_EnableInterruptForRisingEdge() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PA7_EnableInterruptForFallingEdge() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PA7_DisableDigitalInputBuffer() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PA7_EnableInterruptForLowLevelSensing() do { PORTA.PIN7CTRL = (PORTA.PIN7CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PA7_SetInterruptHandler IO_PA7_SetInterruptHandler
+
+//get/set IO_PA2 aliases
+#define IO_PA2_SetHigh() do { PORTA_OUTSET = 0x4; } while(0)
+#define IO_PA2_SetLow() do { PORTA_OUTCLR = 0x4; } while(0)
+#define IO_PA2_Toggle() do { PORTA_OUTTGL = 0x4; } while(0)
+#define IO_PA2_GetValue() (VPORTA.IN & (0x1 << 2))
+#define IO_PA2_SetDigitalInput() do { PORTA_DIRCLR = 0x4; } while(0)
+#define IO_PA2_SetDigitalOutput() do { PORTA_DIRSET = 0x4; } while(0)
+#define IO_PA2_SetPullUp() do { PORTA_PIN2CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PA2_ResetPullUp() do { PORTA_PIN2CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PA2_SetInverted() do { PORTA_PIN2CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PA2_ResetInverted() do { PORTA_PIN2CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PA2_DisableInterruptOnChange() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PA2_EnableInterruptForBothEdges() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PA2_EnableInterruptForRisingEdge() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PA2_EnableInterruptForFallingEdge() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PA2_DisableDigitalInputBuffer() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PA2_EnableInterruptForLowLevelSensing() do { PORTA.PIN2CTRL = (PORTA.PIN2CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PA2_SetInterruptHandler IO_PA2_SetInterruptHandler
+
+//get/set IO_PA3 aliases
+#define IO_PA3_SetHigh() do { PORTA_OUTSET = 0x8; } while(0)
+#define IO_PA3_SetLow() do { PORTA_OUTCLR = 0x8; } while(0)
+#define IO_PA3_Toggle() do { PORTA_OUTTGL = 0x8; } while(0)
+#define IO_PA3_GetValue() (VPORTA.IN & (0x1 << 3))
+#define IO_PA3_SetDigitalInput() do { PORTA_DIRCLR = 0x8; } while(0)
+#define IO_PA3_SetDigitalOutput() do { PORTA_DIRSET = 0x8; } while(0)
+#define IO_PA3_SetPullUp() do { PORTA_PIN3CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PA3_ResetPullUp() do { PORTA_PIN3CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PA3_SetInverted() do { PORTA_PIN3CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PA3_ResetInverted() do { PORTA_PIN3CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PA3_DisableInterruptOnChange() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PA3_EnableInterruptForBothEdges() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PA3_EnableInterruptForRisingEdge() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PA3_EnableInterruptForFallingEdge() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PA3_DisableDigitalInputBuffer() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PA3_EnableInterruptForLowLevelSensing() do { PORTA.PIN3CTRL = (PORTA.PIN3CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PA3_SetInterruptHandler IO_PA3_SetInterruptHandler
+
+//get/set IO_PD0 aliases
+#define IO_PD0_SetHigh() do { PORTD_OUTSET = 0x1; } while(0)
+#define IO_PD0_SetLow() do { PORTD_OUTCLR = 0x1; } while(0)
+#define IO_PD0_Toggle() do { PORTD_OUTTGL = 0x1; } while(0)
+#define IO_PD0_GetValue() (VPORTD.IN & (0x1 << 0))
+#define IO_PD0_SetDigitalInput() do { PORTD_DIRCLR = 0x1; } while(0)
+#define IO_PD0_SetDigitalOutput() do { PORTD_DIRSET = 0x1; } while(0)
+#define IO_PD0_SetPullUp() do { PORTD_PIN0CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PD0_ResetPullUp() do { PORTD_PIN0CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PD0_SetInverted() do { PORTD_PIN0CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PD0_ResetInverted() do { PORTD_PIN0CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PD0_DisableInterruptOnChange() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PD0_EnableInterruptForBothEdges() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PD0_EnableInterruptForRisingEdge() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PD0_EnableInterruptForFallingEdge() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PD0_DisableDigitalInputBuffer() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PD0_EnableInterruptForLowLevelSensing() do { PORTD.PIN0CTRL = (PORTD.PIN0CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PD0_SetInterruptHandler IO_PD0_SetInterruptHandler
+
+//get/set IO_PD1 aliases
+#define IO_PD1_SetHigh() do { PORTD_OUTSET = 0x2; } while(0)
+#define IO_PD1_SetLow() do { PORTD_OUTCLR = 0x2; } while(0)
+#define IO_PD1_Toggle() do { PORTD_OUTTGL = 0x2; } while(0)
+#define IO_PD1_GetValue() (VPORTD.IN & (0x1 << 1))
+#define IO_PD1_SetDigitalInput() do { PORTD_DIRCLR = 0x2; } while(0)
+#define IO_PD1_SetDigitalOutput() do { PORTD_DIRSET = 0x2; } while(0)
+#define IO_PD1_SetPullUp() do { PORTD_PIN1CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PD1_ResetPullUp() do { PORTD_PIN1CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PD1_SetInverted() do { PORTD_PIN1CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PD1_ResetInverted() do { PORTD_PIN1CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PD1_DisableInterruptOnChange() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PD1_EnableInterruptForBothEdges() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PD1_EnableInterruptForRisingEdge() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PD1_EnableInterruptForFallingEdge() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PD1_DisableDigitalInputBuffer() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PD1_EnableInterruptForLowLevelSensing() do { PORTD.PIN1CTRL = (PORTD.PIN1CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PD1_SetInterruptHandler IO_PD1_SetInterruptHandler
+
+//get/set IO_PD2 aliases
+#define IO_PD2_SetHigh() do { PORTD_OUTSET = 0x4; } while(0)
+#define IO_PD2_SetLow() do { PORTD_OUTCLR = 0x4; } while(0)
+#define IO_PD2_Toggle() do { PORTD_OUTTGL = 0x4; } while(0)
+#define IO_PD2_GetValue() (VPORTD.IN & (0x1 << 2))
+#define IO_PD2_SetDigitalInput() do { PORTD_DIRCLR = 0x4; } while(0)
+#define IO_PD2_SetDigitalOutput() do { PORTD_DIRSET = 0x4; } while(0)
+#define IO_PD2_SetPullUp() do { PORTD_PIN2CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PD2_ResetPullUp() do { PORTD_PIN2CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PD2_SetInverted() do { PORTD_PIN2CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PD2_ResetInverted() do { PORTD_PIN2CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PD2_DisableInterruptOnChange() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PD2_EnableInterruptForBothEdges() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PD2_EnableInterruptForRisingEdge() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PD2_EnableInterruptForFallingEdge() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PD2_DisableDigitalInputBuffer() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PD2_EnableInterruptForLowLevelSensing() do { PORTD.PIN2CTRL = (PORTD.PIN2CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PD2_SetInterruptHandler IO_PD2_SetInterruptHandler
+
+//get/set IO_PD3 aliases
+#define IO_PD3_SetHigh() do { PORTD_OUTSET = 0x8; } while(0)
+#define IO_PD3_SetLow() do { PORTD_OUTCLR = 0x8; } while(0)
+#define IO_PD3_Toggle() do { PORTD_OUTTGL = 0x8; } while(0)
+#define IO_PD3_GetValue() (VPORTD.IN & (0x1 << 3))
+#define IO_PD3_SetDigitalInput() do { PORTD_DIRCLR = 0x8; } while(0)
+#define IO_PD3_SetDigitalOutput() do { PORTD_DIRSET = 0x8; } while(0)
+#define IO_PD3_SetPullUp() do { PORTD_PIN3CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PD3_ResetPullUp() do { PORTD_PIN3CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PD3_SetInverted() do { PORTD_PIN3CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PD3_ResetInverted() do { PORTD_PIN3CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PD3_DisableInterruptOnChange() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PD3_EnableInterruptForBothEdges() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PD3_EnableInterruptForRisingEdge() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PD3_EnableInterruptForFallingEdge() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PD3_DisableDigitalInputBuffer() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PD3_EnableInterruptForLowLevelSensing() do { PORTD.PIN3CTRL = (PORTD.PIN3CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PD3_SetInterruptHandler IO_PD3_SetInterruptHandler
+
+//get/set IO_PD4 aliases
+#define IO_PD4_SetHigh() do { PORTD_OUTSET = 0x10; } while(0)
+#define IO_PD4_SetLow() do { PORTD_OUTCLR = 0x10; } while(0)
+#define IO_PD4_Toggle() do { PORTD_OUTTGL = 0x10; } while(0)
+#define IO_PD4_GetValue() (VPORTD.IN & (0x1 << 4))
+#define IO_PD4_SetDigitalInput() do { PORTD_DIRCLR = 0x10; } while(0)
+#define IO_PD4_SetDigitalOutput() do { PORTD_DIRSET = 0x10; } while(0)
+#define IO_PD4_SetPullUp() do { PORTD_PIN4CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PD4_ResetPullUp() do { PORTD_PIN4CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PD4_SetInverted() do { PORTD_PIN4CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PD4_ResetInverted() do { PORTD_PIN4CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PD4_DisableInterruptOnChange() do { PORTD.PIN4CTRL = (PORTD.PIN4CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PD4_EnableInterruptForBothEdges() do { PORTD.PIN4CTRL = (PORTD.PIN4CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PD4_EnableInterruptForRisingEdge() do { PORTD.PIN4CTRL = (PORTD.PIN4CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PD4_EnableInterruptForFallingEdge() do { PORTD.PIN4CTRL = (PORTD.PIN4CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PD4_DisableDigitalInputBuffer() do { PORTD.PIN4CTRL = (PORTD.PIN4CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PD4_EnableInterruptForLowLevelSensing() do { PORTD.PIN4CTRL = (PORTD.PIN4CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PD4_SetInterruptHandler IO_PD4_SetInterruptHandler
+
+//get/set IO_PD5 aliases
+#define IO_PD5_SetHigh() do { PORTD_OUTSET = 0x20; } while(0)
+#define IO_PD5_SetLow() do { PORTD_OUTCLR = 0x20; } while(0)
+#define IO_PD5_Toggle() do { PORTD_OUTTGL = 0x20; } while(0)
+#define IO_PD5_GetValue() (VPORTD.IN & (0x1 << 5))
+#define IO_PD5_SetDigitalInput() do { PORTD_DIRCLR = 0x20; } while(0)
+#define IO_PD5_SetDigitalOutput() do { PORTD_DIRSET = 0x20; } while(0)
+#define IO_PD5_SetPullUp() do { PORTD_PIN5CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PD5_ResetPullUp() do { PORTD_PIN5CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PD5_SetInverted() do { PORTD_PIN5CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PD5_ResetInverted() do { PORTD_PIN5CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PD5_DisableInterruptOnChange() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PD5_EnableInterruptForBothEdges() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PD5_EnableInterruptForRisingEdge() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PD5_EnableInterruptForFallingEdge() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PD5_DisableDigitalInputBuffer() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PD5_EnableInterruptForLowLevelSensing() do { PORTD.PIN5CTRL = (PORTD.PIN5CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PD5_SetInterruptHandler IO_PD5_SetInterruptHandler
+
+//get/set IO_PD6 aliases
+#define IO_PD6_SetHigh() do { PORTD_OUTSET = 0x40; } while(0)
+#define IO_PD6_SetLow() do { PORTD_OUTCLR = 0x40; } while(0)
+#define IO_PD6_Toggle() do { PORTD_OUTTGL = 0x40; } while(0)
+#define IO_PD6_GetValue() (VPORTD.IN & (0x1 << 6))
+#define IO_PD6_SetDigitalInput() do { PORTD_DIRCLR = 0x40; } while(0)
+#define IO_PD6_SetDigitalOutput() do { PORTD_DIRSET = 0x40; } while(0)
+#define IO_PD6_SetPullUp() do { PORTD_PIN6CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PD6_ResetPullUp() do { PORTD_PIN6CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PD6_SetInverted() do { PORTD_PIN6CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PD6_ResetInverted() do { PORTD_PIN6CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PD6_DisableInterruptOnChange() do { PORTD.PIN6CTRL = (PORTD.PIN6CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PD6_EnableInterruptForBothEdges() do { PORTD.PIN6CTRL = (PORTD.PIN6CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PD6_EnableInterruptForRisingEdge() do { PORTD.PIN6CTRL = (PORTD.PIN6CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PD6_EnableInterruptForFallingEdge() do { PORTD.PIN6CTRL = (PORTD.PIN6CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PD6_DisableDigitalInputBuffer() do { PORTD.PIN6CTRL = (PORTD.PIN6CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PD6_EnableInterruptForLowLevelSensing() do { PORTD.PIN6CTRL = (PORTD.PIN6CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PD6_SetInterruptHandler IO_PD6_SetInterruptHandler
+
+//get/set IO_PD7 aliases
+#define IO_PD7_SetHigh() do { PORTD_OUTSET = 0x80; } while(0)
+#define IO_PD7_SetLow() do { PORTD_OUTCLR = 0x80; } while(0)
+#define IO_PD7_Toggle() do { PORTD_OUTTGL = 0x80; } while(0)
+#define IO_PD7_GetValue() (VPORTD.IN & (0x1 << 7))
+#define IO_PD7_SetDigitalInput() do { PORTD_DIRCLR = 0x80; } while(0)
+#define IO_PD7_SetDigitalOutput() do { PORTD_DIRSET = 0x80; } while(0)
+#define IO_PD7_SetPullUp() do { PORTD_PIN7CTRL |= PORT_PULLUPEN_bm; } while(0)
+#define IO_PD7_ResetPullUp() do { PORTD_PIN7CTRL &= ~PORT_PULLUPEN_bm; } while(0)
+#define IO_PD7_SetInverted() do { PORTD_PIN7CTRL |= PORT_INVEN_bm; } while(0)
+#define IO_PD7_ResetInverted() do { PORTD_PIN7CTRL &= ~PORT_INVEN_bm; } while(0)
+#define IO_PD7_DisableInterruptOnChange() do { PORTD.PIN7CTRL = (PORTD.PIN7CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
+#define IO_PD7_EnableInterruptForBothEdges() do { PORTD.PIN7CTRL = (PORTD.PIN7CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
+#define IO_PD7_EnableInterruptForRisingEdge() do { PORTD.PIN7CTRL = (PORTD.PIN7CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
+#define IO_PD7_EnableInterruptForFallingEdge() do { PORTD.PIN7CTRL = (PORTD.PIN7CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
+#define IO_PD7_DisableDigitalInputBuffer() do { PORTD.PIN7CTRL = (PORTD.PIN7CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
+#define IO_PD7_EnableInterruptForLowLevelSensing() do { PORTD.PIN7CTRL = (PORTD.PIN7CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
+#define PD7_SetInterruptHandler IO_PD7_SetInterruptHandler
+
+/**
+ * @ingroup pinsdriver
+ * @brief GPIO and peripheral I/O initialization
+ * @param none
+ * @return none
+ */
+void PIN_MANAGER_Initialize();
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PA5 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PA5_SetInterruptHandler() method.
+ * This handler is called every time the IO_PA5 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PA5_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PA5 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PA5 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PA5_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PA4 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PA4_SetInterruptHandler() method.
+ * This handler is called every time the IO_PA4 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PA4_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PA4 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PA4 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PA4_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PA6 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PA6_SetInterruptHandler() method.
+ * This handler is called every time the IO_PA6 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PA6_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PA6 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PA6 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PA6_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PA7 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PA7_SetInterruptHandler() method.
+ * This handler is called every time the IO_PA7 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PA7_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PA7 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PA7 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PA7_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PA2 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PA2_SetInterruptHandler() method.
+ * This handler is called every time the IO_PA2 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PA2_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PA2 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PA2 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PA2_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PA3 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PA3_SetInterruptHandler() method.
+ * This handler is called every time the IO_PA3 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PA3_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PA3 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PA3 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PA3_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PD0 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PD0_SetInterruptHandler() method.
+ * This handler is called every time the IO_PD0 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PD0_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PD0 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PD0 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PD0_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PD1 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PD1_SetInterruptHandler() method.
+ * This handler is called every time the IO_PD1 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PD1_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PD1 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PD1 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PD1_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PD2 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PD2_SetInterruptHandler() method.
+ * This handler is called every time the IO_PD2 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PD2_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PD2 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PD2 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PD2_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PD3 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PD3_SetInterruptHandler() method.
+ * This handler is called every time the IO_PD3 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PD3_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PD3 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PD3 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PD3_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PD4 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PD4_SetInterruptHandler() method.
+ * This handler is called every time the IO_PD4 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PD4_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PD4 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PD4 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PD4_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PD5 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PD5_SetInterruptHandler() method.
+ * This handler is called every time the IO_PD5 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PD5_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PD5 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PD5 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PD5_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PD6 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PD6_SetInterruptHandler() method.
+ * This handler is called every time the IO_PD6 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PD6_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PD6 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PD6 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PD6_SetInterruptHandler(void (* interruptHandler)(void)) ;
+
+/**
+ * @ingroup pinsdriver
+ * @brief Default Interrupt Handler for IO_PD7 pin.
+ * This is a predefined interrupt handler to be used together with the IO_PD7_SetInterruptHandler() method.
+ * This handler is called every time the IO_PD7 ISR is executed.
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param none
+ * @return none
+ */
+void IO_PD7_DefaultInterruptHandler(void);
+
+/**
+ * @ingroup pinsdriver
+ * @brief Interrupt Handler Setter for IO_PD7 pin input-sense-config functionality.
+ * Allows selecting an interrupt handler for IO_PD7 at application runtime
+ * @pre PIN_MANAGER_Initialize() has been called at least once
+ * @param InterruptHandler function pointer.
+ * @return none
+ */
+void IO_PD7_SetInterruptHandler(void (* interruptHandler)(void)) ;
+#endif /* PINS_H_INCLUDED */
|
