<?xml version="1.0" encoding="UTF-8" standalone="no"?><IP xmlns="http://mcd.rou.st.com/modules.php?name=mcu" xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance" DBVersion="V4.0" IPType="peripheral" Name="COMP" Version="comp_v1_3_d44x_Cube" ns0:schemaLocation="http://mcd.rou.st.com/modules.php?name=mcu ../../../../../../../doc/V4/Development/Specifications/db/IP_Modes.xsd">
	<About>COMP: Comparator</About>
	
	<!-- Pinout Parameters for COMP 1/2 for Stingray (F05x/F07x). Already selected on Pinout TreeView -->
	<RefParameter Comment="Inverting Input" DefaultValue="COMP_INVERTINGINPUT_IO1" Group="Pinout Parameters" Name="InvertingInput" Type="list" Visible="false">
		<Condition Diagnostic="" Expression="((PA0_COMP1_INM  &amp; ($IpNumber=1)) | (PA2_COMP2_INM  &amp; ($IpNumber=2)))"/>
		<PossibleValue Comment="I/O1 (PA0/PA2)" Value="COMP_INVERTINGINPUT_IO1"/>
	</RefParameter>
	<RefParameter Comment="Inverting Input" DefaultValue="COMP_INVERTINGINPUT_DAC1" Group="Pinout Parameters" Name="InvertingInput" Type="list" Visible="false">
		<Condition Diagnostic="" Expression="((PA4_COMP1_INM  &amp; ($IpNumber=1)) | (PA4_COMP2_INM &amp; ($IpNumber=2)))"/>
		<PossibleValue Comment="DAC_OUT1 (PA4)" Value="COMP_INVERTINGINPUT_DAC1"/>
	</RefParameter>
	<RefParameter Comment="Inverting Input" DefaultValue="COMP_INVERTINGINPUT_DAC2" Group="Pinout Parameters" Name="InvertingInput" Type="list" Visible="false">
		<Condition Diagnostic="" Expression="((PA5_COMP1_INM  &amp; ($IpNumber=1)) | (PA5_COMP2_INM &amp; ($IpNumber=2)))"/>
		<PossibleValue Comment="DAC_OUT2 (PA5)" Value="COMP_INVERTINGINPUT_DAC2"/>
	</RefParameter>
	<RefParameter Comment="Inverting Input" DefaultValue="COMP_INVERTINGINPUT_VREFINT" Group="Pinout Parameters" Name="InvertingInput" Type="list" Visible="false">
		<PossibleValue Comment="VREFINT" Value="COMP_INVERTINGINPUT_VREFINT"/>
		<PossibleValue Comment="DAC_OUT1 (PA4)" Value="COMP_INVERTINGINPUT_DAC1"/>
		<PossibleValue Comment="DAC_OUT2 (PA5)" Value="COMP_INVERTINGINPUT_DAC2"/>
		<PossibleValue Comment="1/4 VREFINT" Value="COMP_INVERTINGINPUT_1_4VREFINT"/>
		<PossibleValue Comment="1/2 VREFINT" Value="COMP_INVERTINGINPUT_1_2VREFINT"/>
		<PossibleValue Comment="3/4 VREFINT" Value="COMP_INVERTINGINPUT_3_4VREFINT"/>
	</RefParameter>
	
	
	<RefParameter Comment="Non Inverting Input" DefaultValue="COMP_NONINVERTINGINPUT_DAC1SWITCHCLOSED" Group="Pinout Parameters" Name="NonInvertingInput" Type="list" Visible="false">
		<Condition Diagnostic="" Expression="(PA1_COMP1_INP  &amp; ($IpNumber=1) &amp; (COMP1_SwitchDAC|COMP1_SwitchDAC1))"/>
		<PossibleValue Comment="Switch DAC - PA1" Value="COMP_NONINVERTINGINPUT_DAC1SWITCHCLOSED"/>
	</RefParameter>
	<RefParameter Comment="Non Inverting Input" DefaultValue="COMP_NONINVERTINGINPUT_IO1" Group="Pinout Parameters" Name="NonInvertingInput" Type="list" Visible="false">
		<Condition Diagnostic="" Expression="((PA1_COMP1_INP  &amp; ($IpNumber=1)) | (PA3_COMP2_INP &amp; ($IpNumber=2)))"/>
		<PossibleValue Comment="I/O1 (PA1/PA3)" Value="COMP_NONINVERTINGINPUT_IO1"/>
	</RefParameter>
	<RefParameter Comment="Non Inverting Input" DefaultValue="COMP_NONINVERTINGINPUT_IO1" Group="Pinout Parameters" Name="NonInvertingInput" Type="list" Visible="false">
		<PossibleValue Comment="I/O1 (PA1)" Value="COMP_NONINVERTINGINPUT_IO1"/>
	</RefParameter>
	

	<RefParameter Comment="Window Mode" DefaultValue="COMP_WINDOWMODE_DISABLE" Group="Pinout Parameters" Name="WindowMode" Type="list" Visible="false">
		<PossibleValue Comment="Disable" Value="COMP_WINDOWMODE_DISABLE"/>
		<PossibleValue Comment="Enable" Value="COMP_WINDOWMODE_ENABLE"/>
	</RefParameter>
	
	
	<!-- Basic Parameters -->
	<RefParameter Comment="Speed / Power Mode" DefaultValue="COMP_MODE_HIGHSPEED" Group="Basic Parameters" Name="Mode" Type="list">
		<PossibleValue Comment="High Speed / Full Power" Value="COMP_MODE_HIGHSPEED"/>
		<PossibleValue Comment="Medium Speed / Medium Power" Value="COMP_MODE_MEDIUMSPEED"/>
		<PossibleValue Comment="Low Speed / Low Power" Value="COMP_MODE_LOWPOWER"/>
		<PossibleValue Comment="Very-Low Speed / Ultra-Low Power" Value="COMP_MODE_ULTRALOWPOWER"/>
	</RefParameter>
	
	<RefParameter Comment="Interrupt Trigger Mode" DefaultValue="COMP_TRIGGERMODE_NONE" Group="Basic Parameters" Name="TriggerMode" Type="list">
		<PossibleValue Comment="None" Value="COMP_TRIGGERMODE_NONE"/>
		<PossibleValue Comment="Rising Edge" Semaphore="$IpInstance_EXTI_IT_ENABLED" Value="COMP_TRIGGERMODE_IT_RISING"/>
		<PossibleValue Comment="Falling Edge" Semaphore="$IpInstance_EXTI_IT_ENABLED" Value="COMP_TRIGGERMODE_IT_FALLING"/>
		<PossibleValue Comment="Rising/Falling Edge" Semaphore="$IpInstance_EXTI_IT_ENABLED" Value="COMP_TRIGGERMODE_IT_RISING_FALLING"/>
	</RefParameter>
	
	<!-- Hysteresis Level -->
	<RefParameter Comment="Hysteresis Level" DefaultValue="COMP_HYSTERESIS_NONE" Group="Basic Parameters" Name="Hysteresis" Type="list">
		<PossibleValue Comment="None" Value="COMP_HYSTERESIS_NONE"/>
		<PossibleValue Comment="Low" Value="COMP_HYSTERESIS_LOW"/>
		<PossibleValue Comment="Medium" Value="COMP_HYSTERESIS_MEDIUM"/>
		<PossibleValue Comment="High" Value="COMP_HYSTERESIS_HIGH"/>
	</RefParameter>
		
	<!-- Output Parameters -->
	<RefParameter Comment="Output Polarity" DefaultValue="COMP_OUTPUTPOL_NONINVERTED" Group="Output Parameters" Name="OutputPol" Type="list">
		<PossibleValue Comment="Not Inverted" Value="COMP_OUTPUTPOL_NONINVERTED"/>
		<PossibleValue Comment="Inverted" Value="COMP_OUTPUTPOL_INVERTED"/>
	</RefParameter>
	
	<!-- Internal Output Selection. -->
	<RefParameter Comment="Output Internal Selection" DefaultValue="COMP_OUTPUT_NONE" Group="Output Parameters" Name="Output" Type="list">
		<Condition Diagnostic="" Expression="($IpNumber=1) | ($IpNumber=2)"/>
		<PossibleValue Comment="None" Value="COMP_OUTPUT_NONE"/>
		<PossibleValue Comment="Timer 1 Break Input (BKIN)" Value="COMP_OUTPUT_TIM1BKIN"/>
		<PossibleValue Comment="Timer 1 Input Capture 1" Value="COMP_OUTPUT_TIM1IC1"/>
		<PossibleValue Comment="Timer 1 Output Compare Reference Clear" Value="COMP_OUTPUT_TIM1OCREFCLR"/>
		<PossibleValue Comment="Timer 2 Input Capture 4" Value="COMP_OUTPUT_TIM2IC4"/>
		<PossibleValue Comment="Timer 2 Output Compare Reference Clear" Value="COMP_OUTPUT_TIM2OCREFCLR"/>
		<PossibleValue Comment="Timer 3 Input Capture 1" Value="COMP_OUTPUT_TIM3IC1"/>
		<PossibleValue Comment="Timer 3 Output Compare Reference Clear" Value="COMP_OUTPUT_TIM3OCREFCLR"/>
	</RefParameter>
	<RefParameter Comment="Output Internal Selection" DefaultValue="COMP_OUTPUT_NONE" Group="Output Parameters" Name="Output" Type="list" Visible="false">
		<PossibleValue Comment="None" Value="COMP_OUTPUT_NONE"/>
	</RefParameter>
	
	

	<!-- InputPlus is the default Mode -->
	<RefMode Abstract="true" Name="InputPlus_BaseMode">
		<ConfigForMode>Comp_Init</ConfigForMode>
		<Parameter Name="Mode"/>
		<Parameter Name="TriggerMode"/>
		<Parameter Name="Hysteresis"/>
		<Parameter Name="OutputPol"/>
		<Parameter Name="Output"/>
	</RefMode>
	
	
	<!-- 'Non-Inverting Input' RefModes list -->
	<RefMode BaseMode="InputPlus_BaseMode" Name="INP">
		<Parameter Name="NonInvertingInput"/>
	</RefMode>

	<!-- 'Switch with DAC' RefMode-->
	<RefMode BaseMode="InputPlus_BaseMode" Name="Switch_DAC">
		<Parameter Name="NonInvertingInput"/>
	</RefMode>
	<RefMode BaseMode="InputPlus_BaseMode" Name="Switch_DAC1">
		<Parameter Name="NonInvertingInput"/>
	</RefMode>

	<!-- 'Window Mode' RefMode-->
	<RefMode BaseMode="InputPlus_BaseMode" Name="WindowMode">
		<Parameter Name="WindowMode">
			<PossibleValue>COMP_WINDOWMODE_ENABLE</PossibleValue>
		</Parameter>
	</RefMode>


	<!-- 'Inverting Input' RefModes list -->
	<RefMode Name="INM">
		<Parameter Name="InvertingInput"/>
	</RefMode>
	<RefMode Name="VREFINT">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_VREFINT</PossibleValue>
		</Parameter>	
	</RefMode>
	<RefMode Name="VREFINT_34">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_3_4VREFINT</PossibleValue>
		</Parameter>	
	</RefMode>
	<RefMode Name="VREFINT_12">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_1_2VREFINT</PossibleValue>
		</Parameter>	
	</RefMode>
	<RefMode Name="VREFINT_14">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_1_4VREFINT</PossibleValue>
		</Parameter>	
	</RefMode>
	<RefMode Name="INM_DACOUT1">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_DAC1</PossibleValue>
		</Parameter>	
	</RefMode>
	<RefMode Name="INM_DACOUT2">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_DAC2</PossibleValue>
		</Parameter>	
	</RefMode>
	<RefMode Name="INM_DAC1OUT1">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_DAC1</PossibleValue>
		</Parameter>	
	</RefMode>
	<RefMode Name="INM_DAC1OUT2">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_DAC2</PossibleValue>
		</Parameter>	
	</RefMode>
	<!-- 
	<RefMode Name="INM_DAC2OUT1">
		<Parameter Name="InvertingInput">
			<PossibleValue>COMP_INVERTINGINPUT_DAC3</PossibleValue>
		</Parameter>	
	</RefMode>
	-->
		
	
	<!-- Modes for COMP. Defined for Stingray (F05x/F07x) -->
	<ModeLogicOperator Name="OR">
		<Mode Name="InputPlus" UserName="Input [+]">
			<ModeLogicOperator Name="XOR">
				<Mode Name="INP" ShrinkName="Input [+] : INP" UserName="INP">
					<SignalLogicalOp Name="AND">
						<Signal Name="INP"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_ExternalInputPlus</Semaphore>
				</Mode>
				<!-- Used if DAC is Named DAC -->
				<Mode Name="Switch_DAC" RemoveCondition="!(($IpNumber=1) &amp; (DAC:$modeexist_DAC_OUT1))" UserName="Switch with DAC_OUT1">
					<SignalLogicalOp Name="AND">
						<Signal Name="INP"/>
						<Signal Name="VS_Switch"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_SwitchDAC</Semaphore>
					<Condition Diagnostic="Need to have DAC_OUT1 activated" Expression="(DAC_OUT1_Conf)"/>
				</Mode>
				<!-- Used if DAC is Named DAC1 -->
				<Mode Name="Switch_DAC1" RemoveCondition="!(($IpNumber=1) &amp; (DAC1:$modeexist_DAC_OUT1))" UserName="Switch with DAC1_OUT1">
					<SignalLogicalOp Name="AND">
						<Signal Name="INP"/>
						<Signal Name="VS_Switch"/>
					</SignalLogicalOp>
					<Semaphore>$IpInstance_SwitchDAC1</Semaphore>
					<Condition Diagnostic="Need to have DAC1_OUT1 activated" Expression="(DAC1_OUT1_Conf)"/>
				</Mode>
				<!-- On Stingray, WindowMode is based on COMP1 'Non Inverted Input' -->
				<Mode Name="WindowMode" RemoveCondition="($IpNumber=1)" UserName="Window Mode">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_WindowMode"/>
					</SignalLogicalOp>
					<Condition Diagnostic="Need to have an INP (External Input [+]) on previous Comparator" Expression="(($IpNumber=2) &amp; COMP1_ExternalInputPlus)"/>
				</Mode>
			</ModeLogicOperator>
			<Semaphore>$IpInstance_InputPlus</Semaphore>
		</Mode>
		
		<Mode Name="InputNeg" UserName="Input [-]">
			<ModeLogicOperator Name="XOR">
				<Mode Name="INM" UserName="INM">
					<SignalLogicalOp Name="AND">
						<Signal Name="INM"/>
					</SignalLogicalOp>
				</Mode>
				<!-- Used if only one DAC -->
				<Mode Name="INM_DACOUT1" RemoveCondition="!(DAC:$modeexist_DAC_OUT1)" UserName="DAC OUT1">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_DAC1OUT1"/>
					</SignalLogicalOp>
					<Condition Diagnostic="Need to have an 'DAC Out 1' activated" Expression="(DAC_OUT1_Conf)"/>
				</Mode>
				<Mode Name="INM_DACOUT2" RemoveCondition="!(DAC:$modeexist_DAC_OUT2)" UserName="DAC OUT2">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_DAC1OUT2"/>
					</SignalLogicalOp>
					<Condition Diagnostic="Need to have an 'DAC Out 2' activated" Expression="(DAC_OUT2_Conf)"/>
				</Mode>
				<!-- Used if we have two DACs -->
				<Mode Name="INM_DAC1OUT1" RemoveCondition="!(DAC1:$modeexist_DAC_OUT1)" UserName="DAC1 OUT1">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_DAC1OUT1"/>
					</SignalLogicalOp>
					<Condition Diagnostic="Need to have an 'DAC1 Out 1' activated" Expression="(DAC1_OUT1_Conf)"/>
				</Mode>
				<Mode Name="INM_DAC1OUT2" RemoveCondition="!(DAC1:$modeexist_DAC_OUT2)" UserName="DAC1 OUT2">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_DAC1OUT2"/>
					</SignalLogicalOp>
					<Condition Diagnostic="Need to have an 'DAC1 Out 2' activated" Expression="(DAC1_OUT2_Conf)"/>
				</Mode>
				<!-- 
				<Mode Name="INM_DAC2OUT1" UserName="DAC2 OUT1" RemoveCondition="!(DAC2:$modeexist_DAC_OUT1)">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_DAC2OUT1"/>
					</SignalLogicalOp>
					<Condition Expression="(DAC2_OUT1_Conf)" Diagnostic="Need to have an 'DAC2 Out 1' activated"/>
				</Mode>
				-->
				<Mode Name="VREFINT" UserName="Internal VRef">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_VREFINT"/>
					</SignalLogicalOp>
				</Mode>
				<Mode Name="VREFINT_34" UserName="3/4 Internal VRef">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_VREFINT34"/>
					</SignalLogicalOp>
				</Mode>
				<Mode Name="VREFINT_12" UserName="1/2 Internal VRef">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_VREFINT12"/>
					</SignalLogicalOp>
				</Mode>
				<Mode Name="VREFINT_14" UserName="1/4 Internal VRef">
					<SignalLogicalOp Name="AND">
						<Signal Name="VS_VREFINT14"/>
					</SignalLogicalOp>
				</Mode>
			</ModeLogicOperator>
			<Condition Diagnostic="Need to have an INP (External Input [+]) activated" Expression="$IpInstance_InputPlus"/>
		</Mode>
		
		<Mode Name="ExternalOutput" UserName="External Output">
			<ModeLogicOperator Name="OR">
				<Mode Name="ExternalOutput">
					<SignalLogicalOp Name="AND">
						<Signal Name="OUT"/>
					</SignalLogicalOp>
				</Mode>
			</ModeLogicOperator>
			<Condition Diagnostic="Need to have an INP (External Input [+]) activated" Expression="$IpInstance_InputPlus"/>
		</Mode>
	</ModeLogicOperator>
	
	<!-- Signals for COMP. -->
	<RefSignal IOMode="Analog" Name="INP"/>
	<RefSignal IOMode="Analog" Name="INM"/>
	<RefSignal IOMode="AlternateFunctionPushPull" Name="OUT"/>
	
	<RefSignal Name="VS_WindowMode" Virtual="true"/>
	<RefSignal Name="VS_Switch" Virtual="true"/>
	<RefSignal Name="VS_VREFINT" Virtual="true"/>
	<RefSignal Name="VS_VREFINT34" Virtual="true"/>
	<RefSignal Name="VS_VREFINT12" Virtual="true"/>
	<RefSignal Name="VS_VREFINT14" Virtual="true"/>
	<RefSignal Name="VS_DAC1OUT1" Virtual="true"/>
	<RefSignal Name="VS_DAC1OUT2" Virtual="true"/>
	<RefSignal Name="VS_DAC2OUT1" Virtual="true"/>
	
	<!-- Semaphore for COMP -->
	<Semaphore>$IpInstance</Semaphore>
</IP>