<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE featureDefinitions SYSTEM "../featureDefinitions.dtd">

<featureDefinitions name="Interrupts30" iconName="interrupts-30" helpIndex="">

	<userControlGroup name="none" caption="none">
		<userControlSubGroup name="none" caption="none">
			<userControl name="applyButton">
				<dialogConfig type="applyButton" caption="none"/>
				<userAction name="apply"/>
			</userControl>
		</userControlSubGroup>
	</userControlGroup>

	<userControlGroup name="General" caption="General Interrupt Properties">
		<userControlSubGroup name="none" caption="none">

			<!-- The AIVT Start Address is required during the calculations for dsPIC33, dsPIC30, PIC24 families.
            This is a small hack that allows us to get access to that information
      -->

			<userControl type="readOnly" name="AIVTAddress">
				<dialogConfig type="parameter" caption="256"></dialogConfig>
				<userAction>
				</userAction>
			</userControl>


			<userControl name="VectorTable">
				<dialogConfig type="CB" caption="Select initial interrupt vector table">
					<selection name="UseMainIVT" value="Main"/>
					<selection name="UseAlternateIVT" value="Alternate"/>
				</dialogConfig>
				<userAction name="UseAlternateIVT">
					<claimResource type="register" registerField="ALTIVT" value="1"/>
				</userAction>
				<userAction name="UseMainIVT">
					<claimResource type="register" registerField="ALTIVT" value="0"/>
				</userAction>
			</userControl>

			<userControl name="CPUPriority">
				<dialogConfig type="CB" range="7" caption="Inital CPU priority">
					<selection name="CPUPriority%index%" value="%index%"/>
				</dialogConfig>
				<userAction>
					<claimResource type="register" registerField="IPL210" value="%index%"/>
				</userAction>
			</userControl>

			<userControl name="DisableInterruptNesting">
				<dialogConfig type="CK" caption="Disable interrupt nesting"/>
				<userAction name="enable">
					<claimResource type="register" registerField="NSTDIS" value="1"/>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="NSTDIS" value="0"/>
				</userAction>
			</userControl>

		</userControlSubGroup>
	</userControlGroup>

	<userControlGroup name="ExternalInterrupts" caption="External Interrupts">
		<userControlSubGroup name="none" caption="none">

			<userControl name="ExtIntEnable%indexControl%" enableForInt="INT%indexControl%" range="4">
				<dialogConfig type="CK" caption="Enable external interrupt %indexControl%"/>
				<userAction name="enable">
					<claimResource type="pin" pin="INT%indexControl%" polarity="Inp"/>
					<claimResource type="register" registerField="INT%indexControl%IE" value="1"/>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="INT%indexControl%IE" value="0"/>
				</userAction>
			</userControl>

			<userControl name="ExtIntEdge%indexControl%" edgeForInt="INT%indexControl%" range="4">
				<dialogConfig type="CB" caption="Select triggering edge for external interrupt %indexControl%">
					<selection name="TriggerOnRisingEdge" value="Rising"/>
					<selection name="TriggerOnFallingEdge" value="Falling"/>
				</dialogConfig>
				<userAction>
					<claimResource type="register" registerField="INT%indexControl%EP" value="1"/>
				</userAction>
				<userAction>
					<claimResource type="register" registerField="INT%indexControl%EP" value="0"/>
				</userAction>
			</userControl>

			<userControl name="ExtIntPriority%indexControl%" priorityForInt="INT%indexControl%" range="4">
				<dialogConfig type="CB" range="7" caption="Select priority for external interrupt %indexControl%">
					<selection name="SetExtInt%indexControl%ToPriority%index%" value="%index%"/>
				</dialogConfig>
				<userAction>
					<claimResource type="register" registerField="INT%indexControl%IP" value="%index%"/>
				</userAction>
			</userControl>

		</userControlSubGroup>
	</userControlGroup>

	<userControlGroup name="Traps" caption="Traps">
		<userControlSubGroup name="none" caption="none">

			<userControl name="EnableAccAOverflowTrap">
				<dialogConfig type="CK" caption="Enable accumulator A overflow trap"/>
				<userAction name="enable">
					<claimResource type="register" registerField="OVATE" value="1"/>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="OVATE" value="0"/>
				</userAction>
			</userControl>

			<userControl name="EnableAccBOverflowTrap">
				<dialogConfig type="CK" caption="Enable accumulator B overflow trap"/>
				<userAction name="enable">
					<claimResource type="register" registerField="OVBTE" value="1"/>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="OVBTE" value="0"/>
				</userAction>
			</userControl>

			<userControl name="EnableCatastrophicOverflowTrap">
				<dialogConfig type="CK" caption="Enable catastrophic overflow trap"/>
				<userAction name="enable">
					<claimResource type="register" registerField="COVTE" value="1"/>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="COVTE" value="0"/>
				</userAction>
			</userControl>

		</userControlSubGroup>
	</userControlGroup>

</featureDefinitions>
