X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/f1b6ddb7107fd9534cc6a8d6ab2d46f349d9cdb7..a032d77d0e8009a3ef7e1666f144cde6f08f800e:/LUFA/Platform/UC3/InterruptManagement.h
diff --git a/LUFA/Platform/UC3/InterruptManagement.h b/LUFA/Platform/UC3/InterruptManagement.h
index 435afc3df..e9efbf311 100644
--- a/LUFA/Platform/UC3/InterruptManagement.h
+++ b/LUFA/Platform/UC3/InterruptManagement.h
@@ -35,14 +35,14 @@
* handlers within the device.
*/
-/** \ingroup Group_PlatformDrivers
- * \defgroup Group_PlatformDrivers_UC3Interrupts UC3 Interrupt Controller Driver - LUFA/Platform/UC3/InterruptManagement.h
+/** \ingroup Group_PlatformDrivers_UC3
+ * \defgroup Group_PlatformDrivers_UC3Interrupts Interrupt Controller Driver - LUFA/Platform/UC3/InterruptManagement.h
* \brief Interrupt Controller Driver for the AVR32 UC3 microcontrollers.
*
* \section Sec_Dependencies Module Source Dependencies
* The following files must be built with any user project that uses this module:
- * - LUFA/Platform/UC3/InterruptManagement.c
- * - LUFA/Platform/UC3/Exception.S
+ * - LUFA/Platform/UC3/InterruptManagement.c (Makefile source module name: LUFA_SRC_PLATFORM)
+ * - LUFA/Platform/UC3/Exception.S (Makefile source module name: LUFA_SRC_PLATFORM)
*
* \section Sec_ModDescription Module Description
* Interrupt controller driver for the AVR32 UC3 microcontrollers, for the configuration of interrupt
@@ -51,12 +51,12 @@
* Usage Example:
* \code
* #include
- *
+ *
* ISR(USB_Group_IRQ_Handler)
* {
* // USB group handler code here
* }
- *
+ *
* void main(void)
* {
* INTC_Init();
@@ -71,7 +71,7 @@
#define _UC3_INTERRUPT_MANAGEMENT_H_
/* Includes: */
- #include
+ #include "../../Common/Common.h"
/* Enable C linkage for C++ Compilers: */
#if defined(__cplusplus)
@@ -84,14 +84,16 @@
typedef void (*InterruptHandlerPtr_t)(void);
/* External Variables: */
- extern const void EVBA_Table;
- extern const uint32_t Autovector_Table[];
+ #if defined(__INCLUDE_FROM_INTMANAGEMENT_C)
+ extern const void EVBA_Table;
+ #endif
extern InterruptHandlerPtr_t InterruptHandlers[AVR32_INTC_NUM_INT_GRPS];
+ extern const uint32_t Autovector_Table[];
#endif
/* Public Interface - May be used in end-application: */
/* Macros: */
- /** Converts a given interrupt index into its assocated interrupt group.
+ /** Converts a given interrupt index into its associated interrupt group.
*
* \param[in] IRQIndex Index of the interrupt request to convert.
*
@@ -99,7 +101,7 @@
*/
#define INTC_IRQ_GROUP(IRQIndex) (IRQIndex / 32)
- /** Converts a given interrupt index into its assocated interrupt line.
+ /** Converts a given interrupt index into its associated interrupt line.
*
* \param[in] IRQIndex Index of the interrupt request to convert.
*
@@ -108,10 +110,19 @@
#define INTC_IRQ_LINE(IRQIndex) (IRQIndex % 32)
/* Function Prototypes: */
- /** Initializes the interrupt controller, nulling out all interrupt handlers ready for new registration. This
- * function should be called once on startup to ensure the interrupt controller is ready for use.
+ /** Initializes the interrupt controller ready to handle interrupts. This must be called at the
+ * start of the user program before any interrupts are registered or enabled.
+ */
+ void INTC_Init(void);
+
+ /** Retrieves the associated interrupt handler for the interrupt group currently being fired. This
+ * is called directly from the exception handler routine before dispatching to the ISR.
+ *
+ * \param[in] InterruptLevel Priority level of the interrupt.
+ *
+ * \return Pointer to the associated interrupt handler function, or NULL if no handler set.
*/
- void INTC_Init(void);
+ InterruptHandlerPtr_t INTC_GetInterruptHandler(const uint_reg_t InterruptLevel);
/* Inline Functions: */
/** Registers a handler for a given interrupt group. On the AVR32 UC3 devices, interrupts are grouped by