|
|
@@ -0,0 +1,356 @@
|
|
|
+/*******************************************************************************
|
|
|
+* File Name: SCSI_SEL_ISR.c
|
|
|
+* Version 1.70
|
|
|
+*
|
|
|
+* Description:
|
|
|
+* API for controlling the state of an interrupt.
|
|
|
+*
|
|
|
+*
|
|
|
+* Note:
|
|
|
+*
|
|
|
+********************************************************************************
|
|
|
+* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.
|
|
|
+* You may use this file only in accordance with the license, terms, conditions,
|
|
|
+* disclaimers, and limitations in the end user license agreement accompanying
|
|
|
+* the software package with which this file was provided.
|
|
|
+*******************************************************************************/
|
|
|
+
|
|
|
+
|
|
|
+#include <cydevice_trm.h>
|
|
|
+#include <CyLib.h>
|
|
|
+#include <SCSI_SEL_ISR.h>
|
|
|
+
|
|
|
+#if !defined(SCSI_SEL_ISR__REMOVED) /* Check for removal by optimization */
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Place your includes, defines and code here
|
|
|
+********************************************************************************/
|
|
|
+/* `#START SCSI_SEL_ISR_intc` */
|
|
|
+
|
|
|
+/* `#END` */
|
|
|
+
|
|
|
+#ifndef CYINT_IRQ_BASE
|
|
|
+#define CYINT_IRQ_BASE 16
|
|
|
+#endif /* CYINT_IRQ_BASE */
|
|
|
+#ifndef CYINT_VECT_TABLE
|
|
|
+#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET)
|
|
|
+#endif /* CYINT_VECT_TABLE */
|
|
|
+
|
|
|
+/* Declared in startup, used to set unused interrupts to. */
|
|
|
+CY_ISR_PROTO(IntDefaultHandler);
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_Start
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Set up the interrupt and enable it.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* None
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_Start(void)
|
|
|
+{
|
|
|
+ /* For all we know the interrupt is active. */
|
|
|
+ SCSI_SEL_ISR_Disable();
|
|
|
+
|
|
|
+ /* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */
|
|
|
+ SCSI_SEL_ISR_SetVector(&SCSI_SEL_ISR_Interrupt);
|
|
|
+
|
|
|
+ /* Set the priority. */
|
|
|
+ SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER);
|
|
|
+
|
|
|
+ /* Enable it. */
|
|
|
+ SCSI_SEL_ISR_Enable();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_StartEx
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Set up the interrupt and enable it.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* address: Address of the ISR to set in the interrupt vector table.
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_StartEx(cyisraddress address)
|
|
|
+{
|
|
|
+ /* For all we know the interrupt is active. */
|
|
|
+ SCSI_SEL_ISR_Disable();
|
|
|
+
|
|
|
+ /* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */
|
|
|
+ SCSI_SEL_ISR_SetVector(address);
|
|
|
+
|
|
|
+ /* Set the priority. */
|
|
|
+ SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER);
|
|
|
+
|
|
|
+ /* Enable it. */
|
|
|
+ SCSI_SEL_ISR_Enable();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_Stop
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Disables and removes the interrupt.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_Stop(void)
|
|
|
+{
|
|
|
+ /* Disable this interrupt. */
|
|
|
+ SCSI_SEL_ISR_Disable();
|
|
|
+
|
|
|
+ /* Set the ISR to point to the passive one. */
|
|
|
+ SCSI_SEL_ISR_SetVector(&IntDefaultHandler);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_Interrupt
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* The default Interrupt Service Routine for SCSI_SEL_ISR.
|
|
|
+*
|
|
|
+* Add custom code between the coments to keep the next version of this file
|
|
|
+* from over writting your code.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+CY_ISR(SCSI_SEL_ISR_Interrupt)
|
|
|
+{
|
|
|
+ /* Place your Interrupt code here. */
|
|
|
+ /* `#START SCSI_SEL_ISR_Interrupt` */
|
|
|
+
|
|
|
+ /* `#END` */
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_SetVector
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Change the ISR vector for the Interrupt. Note calling SCSI_SEL_ISR_Start
|
|
|
+* will override any effect this method would have had. To set the vector
|
|
|
+* before the component has been started use SCSI_SEL_ISR_StartEx instead.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* address: Address of the ISR to set in the interrupt vector table.
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_SetVector(cyisraddress address)
|
|
|
+{
|
|
|
+ cyisraddress * ramVectorTable;
|
|
|
+
|
|
|
+ ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;
|
|
|
+
|
|
|
+ ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER] = address;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_GetVector
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Gets the "address" of the current ISR vector for the Interrupt.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* None
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* Address of the ISR in the interrupt vector table.
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+cyisraddress SCSI_SEL_ISR_GetVector(void)
|
|
|
+{
|
|
|
+ cyisraddress * ramVectorTable;
|
|
|
+
|
|
|
+ ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;
|
|
|
+
|
|
|
+ return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER];
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_SetPriority
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Sets the Priority of the Interrupt. Note calling SCSI_SEL_ISR_Start
|
|
|
+* or SCSI_SEL_ISR_StartEx will override any effect this method
|
|
|
+* would have had. This method should only be called after
|
|
|
+* SCSI_SEL_ISR_Start or SCSI_SEL_ISR_StartEx has been called. To set
|
|
|
+* the initial priority for the component use the cydwr file in the tool.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* priority: Priority of the interrupt. 0 - 7, 0 being the highest.
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_SetPriority(uint8 priority)
|
|
|
+{
|
|
|
+ *SCSI_SEL_ISR_INTC_PRIOR = priority << 5;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_GetPriority
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Gets the Priority of the Interrupt.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* None
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* Priority of the interrupt. 0 - 7, 0 being the highest.
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+uint8 SCSI_SEL_ISR_GetPriority(void)
|
|
|
+{
|
|
|
+ uint8 priority;
|
|
|
+
|
|
|
+
|
|
|
+ priority = *SCSI_SEL_ISR_INTC_PRIOR >> 5;
|
|
|
+
|
|
|
+ return priority;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_Enable
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Enables the interrupt.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* None
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_Enable(void)
|
|
|
+{
|
|
|
+ /* Enable the general interrupt. */
|
|
|
+ *SCSI_SEL_ISR_INTC_SET_EN = SCSI_SEL_ISR__INTC_MASK;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_GetState
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Gets the state (enabled, disabled) of the Interrupt.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* None
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* 1 if enabled, 0 if disabled.
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+uint8 SCSI_SEL_ISR_GetState(void)
|
|
|
+{
|
|
|
+ /* Get the state of the general interrupt. */
|
|
|
+ return ((*SCSI_SEL_ISR_INTC_SET_EN & (uint32)SCSI_SEL_ISR__INTC_MASK) != 0u) ? 1u:0u;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_Disable
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Disables the Interrupt.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* None
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_Disable(void)
|
|
|
+{
|
|
|
+ /* Disable the general interrupt. */
|
|
|
+ *SCSI_SEL_ISR_INTC_CLR_EN = SCSI_SEL_ISR__INTC_MASK;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_SetPending
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Causes the Interrupt to enter the pending state, a software method of
|
|
|
+* generating the interrupt.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* None
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_SetPending(void)
|
|
|
+{
|
|
|
+ *SCSI_SEL_ISR_INTC_SET_PD = SCSI_SEL_ISR__INTC_MASK;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* Function Name: SCSI_SEL_ISR_ClearPending
|
|
|
+********************************************************************************
|
|
|
+*
|
|
|
+* Summary:
|
|
|
+* Clears a pending interrupt.
|
|
|
+*
|
|
|
+* Parameters:
|
|
|
+* None
|
|
|
+*
|
|
|
+* Return:
|
|
|
+* None
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void SCSI_SEL_ISR_ClearPending(void)
|
|
|
+{
|
|
|
+ *SCSI_SEL_ISR_INTC_CLR_PD = SCSI_SEL_ISR__INTC_MASK;
|
|
|
+}
|
|
|
+
|
|
|
+#endif /* End check for removal by optimization */
|
|
|
+
|
|
|
+
|
|
|
+/* [] END OF FILE */
|