1<?xml version="1.0" encoding="utf-8"?> 2 3 4<!--**************************************************************************** 5* \file quaddec_v2.cypersonality 6* \version 1.0 7* 8* \brief 9* Quadrature Decoder personality description file. 10* 11******************************************************************************** 12* \copyright 13* Copyright 2018-2022 Cypress Semiconductor Corporation 14* SPDX-License-Identifier: Apache-2.0 15* 16* Licensed under the Apache License, Version 2.0 (the "License"); 17* you may not use this file except in compliance with the License. 18* You may obtain a copy of the License at 19* 20* http://www.apache.org/licenses/LICENSE-2.0 21* 22* Unless required by applicable law or agreed to in writing, software 23* distributed under the License is distributed on an "AS IS" BASIS, 24* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 25* See the License for the specific language governing permissions and 26* limitations under the License. 27*****************************************************************************--> 28 29<Personality id="mxs40quaddac_ver2" name="Quadrature Decoder" version="1.0" xmlns="http://cypress.com/xsd/cyhwpersonality_v8"> 30 <Dependencies> 31 <IpBlock name="mxtcpwm_ver2" /> 32 <Resource name="tcpwm\.group\.cnt" /> 33 <OperatingMode value="MCU"/> 34 </Dependencies> 35 <ExposedMembers /> 36 <Parameters> 37 <!-- PDL documentation --> 38 <ParamDoc id="pdlDoc" name="Configuration Help" group="Overview" default="file:///`${cy_libs_path()}`/docs/pdl_api_reference_manual/html/group__group__tcpwm__quaddec.html" linkText="Open Quadrature Decoder (TCPWM) Documentation" visible="true" desc="Opens the Peripheral Driver Library Documentation" /> 39 40 <!--General--> 41 <ParamRange id="pCntGroup" name="pCntGroup" desc="pCntGroup" group="Internal" default="`${getInstNumber("group")}`" min="0" max="3" resolution="1" visible="false" editable="false" /> 42 <ParamRange id="pMaxGroupCount" name="pMaxGroupCount" desc="pMaxGroupCount" group="Internal" default="4" min="0" max="4" resolution="1" visible="false" editable="false" /> 43 <ParamString id="pCntWidthEx" name="pCntWidthEx" desc="pCntWidthEx" group="Internal" default="GRP_NR[`${pCntGroup}`].CNT.GRP_CNT_WIDTH" visible="false" editable="false" /> 44 <ParamRange id="pCntWidth" name="pCntWidth" desc="pCntWidth" group="Internal" default="`${lookupExpression(pCntWidthEx)}`" min="0" max="32" resolution="1" visible="false" editable="false" /> 45 <ParamRange id="pCntWidthMax" name="pCntWidthMax" desc="pCntWidthMax" group="Internal" default="`${pow(2, pCntWidth)-1}`" min="0" max="4294967296" resolution="1" visible="false" editable="false" /> 46 <ParamRange id="tcpwmInst" name="TCPWM Number" group="Internal" default="`${getInstNumber("tcpwm")}`" min="0" max="3" resolution="1" visible="false" editable="false" desc="" /> 47 <ParamRange id="cntInst" name="CNT Number" group="Internal" default="`${getInstNumber("cnt") + pCntGroup * 256}`" min="0" max="1023" resolution="1" visible="false" editable="false" desc="" /> 48 <ParamString id="pCntCC1Ex" name="pCntCC1Ex" desc="pCntCC1Ex" group="Internal" default="GRP_NR[`${pCntGroup}`].CNT.GRP_CC1_PRESENT" visible="false" editable="false" /> 49 <ParamBool id="pCntCC1" name="pCntCC1" desc="pCntCC1" group="Internal" default="`${lookupExpression(pCntCC1Ex) eq 1}`" visible="false" editable="false" /> 50 51 <ParamString id="TCPWM_version" name="TCPWM Version" group="General" default="TCPWM_ver2" visible="true" editable="false" desc="Version of the TCPWM hardware block"/> 52 <ParamChoice id="QuadMode" name="Quad Mode" group="General" default="CY_TCPWM_QUADDEC_MODE_RANGE0" visible="true" editable="true" desc="Selects the Quad mode of operation."> 53 <Entry name="Range 0" value="CY_TCPWM_QUADDEC_MODE_RANGE0" visible="true" /> 54 <Entry name="Range 0 Compare" value="CY_TCPWM_QUADDEC_MODE_RANGE0_CMP" visible="true" /> 55 <Entry name="Range 1 Capture" value="CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT" visible="true" /> 56 <Entry name="Range 1 Compare" value="CY_TCPWM_QUADDEC_MODE_RANGE1_CMP" visible="true" /> 57 </ParamChoice> 58 <ParamChoice id="CounterSize" name="Quadrature Decoder Resolution" group="General" default="`${(pCntWidth eq 16) ? "16" : "32"}`" visible="true" editable="false" desc="Sets the resolution of the counter"> 59 <Entry name="16-bits" value="16" visible="true" /> 60 <Entry name="32-bits" value="32" visible="true" /> 61 </ParamChoice> 62 <ParamChoice id="Resolution" name="Quadrature Mode" group="General" default="CY_TCPWM_QUADDEC_X1" visible="true" editable="true" desc="Selects the quadrature encoding mode"> 63 <Entry name="x1" value="CY_TCPWM_QUADDEC_X1" visible="true" /> 64 <Entry name="x2" value="CY_TCPWM_QUADDEC_X2" visible="true" /> 65 <Entry name="x4" value="CY_TCPWM_QUADDEC_X4" visible="true" /> 66 <Entry name="Up/Down Rotary" value="CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT" visible="true" /> 67 </ParamChoice> 68 69 <!--Capture--> 70 <ParamChoice id="CaptureOnIndex" name="Capture" group="Capture" default="true" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP}`" editable="true" desc="Selects the capture source."> 71 <Entry name="Capture on Index" value="true" visible="true" /> 72 <Entry name="Capture on Wrap Around" value="false" visible="true" /> 73 </ParamChoice> 74 75 <ParamChoice id="Capture1Input" name="Capture 1 Input" group="Inputs" default="CY_TCPWM_INPUT_DISABLED" visible="`${pCntCC1 && QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT}`" editable="true" desc="Selects which input the capture1 uses. The inputs are device-specific." > 76 <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" /> 77 <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" /> 78 <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" /> 79 <Entry name="Disabled" value="CY_TCPWM_INPUT_DISABLED" visible="true" /> 80 </ParamChoice> 81 <ParamSignal port="capture1[0]" name="Capture 1 Signal" group="Inputs" visible="`${pCntCC1 && QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT && Capture1Input ne CY_TCPWM_INPUT_DISABLED}`" desc="This input triggers a capture of the current count value." canBeEmpty="`${Capture1Input eq CY_TCPWM_INPUT_DISABLED}`" > 82 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 83 <Parameter id="DriveModes" severity="DEFAULT" reason=""> 84 <Fixed value="CY_GPIO_DM_HIGHZ" /> 85 </Parameter> 86 </Constraint> 87 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 88 <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected."> 89 <Fixed value="CY_GPIO_DM_HIGHZ" /> 90 </Parameter> 91 </Constraint> 92 <Constraint type="ACCEPT" targetLocation=".*" valid="true" /> 93 </ParamSignal> 94 95 <!--Compare0--> 96 <ParamBool id="EnableCompare0Swap" name="Enable Compare 0 Swap" group="Compare" default="false" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" editable="true" desc="If enabled, allows a compare function using a CC0/CC0_BUFF." /> 97 <ParamRange id="Compare0" name="Compare 0" group="Compare" default="16384" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" editable="true" desc="Sets the value for Compare0. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." /> 98 <ParamRange id="CompareBuf0" name="Compare 0 Buff" group="Compare" default="16384" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${(EnableCompare0Swap && QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP) || (EnableCompare0Swap && QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)}`" editable="true" desc="Sets the value for the buffered Compare0. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." /> 99 100 <!--Compare1--> 101 <ParamBool id="EnableCompare1Swap" name="Enable Compare 1 Swap" group="Compare" default="false" visible="`${pCntCC1 && (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ||QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)}`" editable="true" desc="If enabled, allows a compare function using a CC1/CC1_BUFF." /> 102 <ParamRange id="Compare1" name="Compare 1" group="Compare" default="16384" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${pCntCC1 && (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)}`" editable="true" desc="Sets the compare value. When the count value equals the compare the compare output pulses high. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." /> 103 <ParamRange id="CompareBuf1" name="Compare 1 Buff" group="Compare" default="16384" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${EnableCompare1Swap && pCntCC1 && (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ||QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)}`" editable="true" desc="Sets the buffered compare value. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." /> 104 105 <!--Interrupts--> 106 <ParamBool id="InterruptCC0" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? "Reload/Index" : (((QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP) || (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP)) ? "Compare 0 " : "Capture 0 Event")}`" group="Interrupts" default="false" visible="true" editable="true" desc="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? "Generate interrupt on Index." : ( QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? "Generate interrupt on Compare 0 & Capture 0." : "Generate interrupt on Capture 0 Event.")}`" /> 107 <ParamBool id="InterruptCC1" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT ? "Capture 1 Event" : "Compare 1"}`" group="Interrupts" default="false" visible="`${pCntCC1 && QuadMode ne CY_TCPWM_QUADDEC_MODE_RANGE0}`" editable="true" desc="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT ? "Generate interrupt on Capture 1 Event." : "Generate interrupt on Compare 1 & Capture 1."}`" /> 108 <ParamBool id="InterruptTC" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? "Overflow & Underflow " : ((QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT) || (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) ? "Overflow, Underflow and Index" : (!CaptureOnIndex ? "Overflow & Underflow" : "Index & Capture 0"))}`" group="Interrupts" default="false" visible="true" editable="true" desc="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? "Generate interrupt on TC." : ((QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT) || (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) ? "Generate interrupt on Overflow, Underflow and Index." : (!CaptureOnIndex ? "Generate interrupt on Overflow & Underflow." : "Generate interrupt on Index & Capture 0."))}`" /> 109 <ParamString id="InterruptSource" name="InterruptSource" desc="InterruptSource" group="Interrupt Source" default="(CY_TCPWM_INT_ON_TC `${(InterruptTC)? "" : "& 0U"}`) | (CY_TCPWM_INT_ON_CC0 `${(InterruptCC0)? "" : "& 0U"}`) | (CY_TCPWM_INT_ON_CC1 `${(InterruptCC1)? "" : "& 0U"}`)" visible="false" editable="false" /> 110 111 <!--Period--> 112 <ParamRange id="Period" name="Period" group="Period" default="32768" min="0" max="`${pCntWidthMax}`" resolution="1" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" editable="true" desc="Sets the period of the Timer/Counter. Range: 0-65535 (for 16 bit resolution) or 0–4294967295 (for 32 bit resolution)." /> 113 114 <!--Inputs--> 115 <ParamSignal port="clock[0]" name="Clock Signal" group="Inputs" visible="`${hasVisibleOption("clock[0]")}`" desc="The clock input defines the operating frequency." canBeEmpty="`${!hasVisibleOption("clock[0]")}`" /> 116 <ParamSignal port="clock_counter_en[0]" name="Clock Signal" group="Inputs" visible="`${hasVisibleOption("clock_counter_en[0]")}`" desc="The clock input defines the operating frequency." canBeEmpty="`${!hasVisibleOption("clock_counter_en[0]")}`" /> 117 118 <ParamChoice id="IndexInput" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? "Index 0 Input" : "Index Input"}`" group="Inputs" default="CY_TCPWM_INPUT_DISABLED" visible="true" editable="true" desc="Determines if an index is needed and what edge causes an index to occur"> 119 <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" /> 120 <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" /> 121 <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" /> 122 <Entry name="Disabled" value="CY_TCPWM_INPUT_DISABLED" visible="true" /> 123 </ParamChoice> 124 <ParamSignal port="reload[0]" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0 ? "Index Signal" : "Index 0 Signal"}`" group="Inputs" visible="`${IndexInput ne CY_TCPWM_INPUT_DISABLED}`" desc="This input causes an index (reload) event to occur (indicates a completed rotation to determine absolute position). This input is only visible if the IndexInput parameter is set to anything other than disabled." canBeEmpty="`${IndexInput eq CY_TCPWM_INPUT_DISABLED}`" > 125 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 126 <Parameter id="DriveModes" severity="DEFAULT" reason=""> 127 <Fixed value="CY_GPIO_DM_HIGHZ" /> 128 </Parameter> 129 </Constraint> 130 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 131 <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected."> 132 <Fixed value="CY_GPIO_DM_HIGHZ" /> 133 </Parameter> 134 </Constraint> 135 <Constraint type="ACCEPT" targetLocation=".*" valid="true" /> 136 </ParamSignal> 137 138 <ParamChoice id="phiAInputMode" name="PhiA Input" group="Inputs" default="CY_TCPWM_INPUT_LEVEL" visible="`${Resolution eq CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT}`" editable="true" desc="Determines if phiA should use pass through or edge detection."> 139 <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" /> 140 <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" /> 141 <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" /> 142 <Entry name="Pass Through" value="CY_TCPWM_INPUT_LEVEL" visible="true" /> 143 </ParamChoice> 144 <ParamSignal port="count[0]" name="PhiA Signal" group="Inputs" visible="true" desc="This is the phase A input it is always required." canBeEmpty="false" > 145 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 146 <Parameter id="DriveModes" severity="DEFAULT" reason=""> 147 <Fixed value="CY_GPIO_DM_HIGHZ" /> 148 </Parameter> 149 </Constraint> 150 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 151 <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected."> 152 <Fixed value="CY_GPIO_DM_HIGHZ" /> 153 </Parameter> 154 </Constraint> 155 <Constraint type="ACCEPT" targetLocation=".*" valid="true" /> 156 </ParamSignal> 157 158 <ParamChoice id="phiBInputMode" name="PhiB Input" group="Inputs" default="CY_TCPWM_INPUT_LEVEL" visible="`${Resolution eq CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT}`" editable="true" desc="Determines if phiB should use pass through or edge detection."> 159 <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" /> 160 <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" /> 161 <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" /> 162 <Entry name="Pass Through" value="CY_TCPWM_INPUT_LEVEL" visible="true" /> 163 </ParamChoice> 164 <ParamSignal port="start[0]" name="PhiB Signal" group="Inputs" visible="true" desc="This is the phase B input it is always required." canBeEmpty="false" > 165 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 166 <Parameter id="DriveModes" severity="DEFAULT" reason=""> 167 <Fixed value="CY_GPIO_DM_HIGHZ" /> 168 </Parameter> 169 </Constraint> 170 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 171 <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected."> 172 <Fixed value="CY_GPIO_DM_HIGHZ" /> 173 </Parameter> 174 </Constraint> 175 <Constraint type="ACCEPT" targetLocation=".*" valid="true" /> 176 </ParamSignal> 177 178 <ParamChoice id="StopInput" name="Stop Input" group="Inputs" default="CY_TCPWM_INPUT_DISABLED" visible="true" editable="true" desc="Determines if a stop input is needed and what edges causes a stop to occur"> 179 <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" /> 180 <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" /> 181 <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" /> 182 <Entry name="Disabled" value="CY_TCPWM_INPUT_DISABLED" visible="true" /> 183 </ParamChoice> 184 <ParamSignal port="stop[0]" name="Stop Signal" group="Inputs" visible="`${StopInput ne CY_TCPWM_INPUT_DISABLED}`" desc="This input causes the Quad Dec to stop Counting. This input is only visible if the StopInput parameter is set to anything other than disabled." canBeEmpty="`${StopInput eq CY_TCPWM_INPUT_DISABLED}`" > 185 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 186 <Parameter id="DriveModes" severity="DEFAULT" reason=""> 187 <Fixed value="CY_GPIO_DM_HIGHZ" /> 188 </Parameter> 189 </Constraint> 190 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 191 <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected."> 192 <Fixed value="CY_GPIO_DM_HIGHZ" /> 193 </Parameter> 194 </Constraint> 195 <Constraint type="ACCEPT" targetLocation=".*" valid="true" /> 196 </ParamSignal> 197 198 <ParamChoice id="Capture0OrIndex1Input" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? "Index 1 Input" : "Capture 0 Input"}`" group="Inputs" default="CY_TCPWM_INPUT_DISABLED" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT}`" editable="true" desc="Determines if an index1(capture0) is needed and what edge causes an index to occur."> 199 <Entry name="Rising Edge" value="CY_TCPWM_INPUT_RISINGEDGE" visible="true" /> 200 <Entry name="Falling Edge" value="CY_TCPWM_INPUT_FALLINGEDGE" visible="true" /> 201 <Entry name="Either Edge" value="CY_TCPWM_INPUT_EITHEREDGE" visible="true" /> 202 <Entry name="Disabled" value="CY_TCPWM_INPUT_DISABLED" visible="true" /> 203 </ParamChoice> 204 <ParamSignal port="capture0[0]" name="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? "Index 1 Signal" : "Capture 0 Signal"}`" group="Inputs" visible="`${(Capture0OrIndex1Input ne CY_TCPWM_INPUT_DISABLED) && (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT)}`" desc="This input causes an index1 (capture0) event to occur (indicates a completed rotation to determine absolute position). This input is only visible if the Input parameter is set to anything other than disabled." canBeEmpty="`${Capture0OrIndex1Input eq CY_TCPWM_INPUT_DISABLED}`" > 205 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 206 <Parameter id="DriveModes" severity="DEFAULT" reason=""> 207 <Fixed value="CY_GPIO_DM_HIGHZ" /> 208 </Parameter> 209 </Constraint> 210 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 211 <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected."> 212 <Fixed value="CY_GPIO_DM_HIGHZ" /> 213 </Parameter> 214 </Constraint> 215 <Constraint type="ACCEPT" targetLocation=".*" valid="true" /> 216 </ParamSignal> 217 218 <!--Trigger Outputs--> 219 <ParamChoice id="trigger0Event" name="Trigger 0 Event" group="Trigger Outputs" default="CY_TCPWM_CNT_TRIGGER_ON_DISABLED" visible="true" editable="true" desc="This output used to connect TCPWM event signals to other peripherals." > 220 <Entry name="Overflow" value="CY_TCPWM_CNT_TRIGGER_ON_OVERFLOW" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" /> 221 <Entry name="Underflow" value="CY_TCPWM_CNT_TRIGGER_ON_UNDEFLOW" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" /> 222 <Entry name="Terminal Count" value="CY_TCPWM_CNT_TRIGGER_ON_TC" visible="true" /> 223 <Entry name="Compare 0 Match" value="CY_TCPWM_CNT_TRIGGER_ON_CC0_MATCH" visible="true" /> 224 <Entry name="Compare 1 Match" value="CY_TCPWM_CNT_TRIGGER_ON_CC1_MATCH" visible="`${pCntCC1 && !(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0)}`" /> 225 <Entry name="Disabled" value="CY_TCPWM_CNT_TRIGGER_ON_DISABLED" visible="true" /> 226 </ParamChoice> 227 <ParamSignal port="tr_out0[0]" name="Trigger 0 Signal" group="Trigger Outputs" visible="`${trigger0Event ne CY_TCPWM_CNT_TRIGGER_ON_DISABLED}`" desc="Signals to connect on Trigger 0 Event" canBeEmpty="`${trigger0Event eq CY_TCPWM_CNT_TRIGGER_ON_DISABLED}`" > 228 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 229 <Parameter id="DriveModes" severity="DEFAULT" reason=""> 230 <Fixed value="CY_GPIO_DM_STRONG_IN_OFF" /> 231 </Parameter> 232 </Constraint> 233 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 234 <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected."> 235 <Fixed value="CY_GPIO_DM_STRONG_IN_OFF" /> 236 </Parameter> 237 </Constraint> 238 <Constraint type="ACCEPT" targetLocation=".*" valid="true" /> 239 </ParamSignal> 240 <ParamChoice id="trigger1Event" name="Trigger 1 Event" group="Trigger Outputs" default="CY_TCPWM_CNT_TRIGGER_ON_DISABLED" visible="true" editable="true" desc="This output used to connect TCPWM event signals to other peripherals." > 241 <Entry name="Overflow" value="CY_TCPWM_CNT_TRIGGER_ON_OVERFLOW" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" /> 242 <Entry name="Underflow" value="CY_TCPWM_CNT_TRIGGER_ON_UNDEFLOW" visible="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT || QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP}`" /> 243 <Entry name="Terminal Count" value="CY_TCPWM_CNT_TRIGGER_ON_TC" visible="true" /> 244 <Entry name="Compare 0 Match" value="CY_TCPWM_CNT_TRIGGER_ON_CC0_MATCH" visible="true" /> 245 <Entry name="Compare 1 Match" value="CY_TCPWM_CNT_TRIGGER_ON_CC1_MATCH" visible="`${pCntCC1 && !(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0)}`" /> 246 <Entry name="Disabled" value="CY_TCPWM_CNT_TRIGGER_ON_DISABLED" visible="true" /> 247 </ParamChoice> 248 <ParamSignal port="tr_out1[0]" name="Trigger 1 Signal" group="Trigger Outputs" visible="`${trigger1Event ne CY_TCPWM_CNT_TRIGGER_ON_DISABLED}`" desc="Signals to connect on Trigger 1 Event" canBeEmpty="`${trigger1Event eq CY_TCPWM_CNT_TRIGGER_ON_DISABLED}`" > 249 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 250 <Parameter id="DriveModes" severity="DEFAULT" reason=""> 251 <Fixed value="CY_GPIO_DM_STRONG_IN_OFF" /> 252 </Parameter> 253 </Constraint> 254 <Constraint type="ACCEPT" targetLocation="ioss\[\d+\]\.port\[\d+\]\.pin.*" valid="true" > 255 <Parameter id="DriveModes" severity="INFO" reason="The pin Drive Mode parameter does not match expected."> 256 <Fixed value="CY_GPIO_DM_STRONG_IN_OFF" /> 257 </Parameter> 258 </Constraint> 259 <Constraint type="ACCEPT" targetLocation=".*" valid="true" /> 260 </ParamSignal> 261 262 <!--Config--> 263 <ParamBool id="inFlash" name="Store Config in Flash" group="Advanced" default="true" visible="true" editable="true" desc="Controls whether the configuration structure is stored in flash (const, true) or SRAM (not const, false)." /> 264 265 <!-- Peripheral clock divider connection --> 266 <ParamRange id="tcpwmInst" name="TCPWM Number" group="Internal" default="`${getInstNumber("tcpwm")}`" min="0" max="127" resolution="1" visible="false" editable="false" desc="" /> 267 <ParamRange id="cntInst" name="CNT Number" group="Internal" default="`${getInstNumber("cnt")}`" min="0" max="31" resolution="1" visible="false" editable="false" desc="" /> 268 <ParamString id="definePrefix" name="Define prefix" group="Internal" default="`${"TCPWM" . tcpwmInst . "_GRP" . pCntGroup . "_CNT" . getInstNumber("cnt")}`" visible="false" editable="false" desc="" /> 269 <ParamString id="defineInputDisabled" name="Define input disabled" group="Internal" default="`${INST_NAME . "_INPUT_DISABLED & 0x3U"}`" visible="false" editable="false" desc="" /> 270 <ParamString id="pclk" name="PCLK" group="Internal" default="`${hasVisibleOption("clock_counter_en[0]") ? getBlockFromSignal("clock_counter_en[0]"):getBlockFromSignal("clock[0]")}`" visible="false" editable="false" desc="Connected peripheral clock divider (PCLK)" /> 271 <ParamBool id="pclkOk" name="PCLK Valid" group="Internal" default="`${hasVisibleOption("clock_counter_en[0]") ? hasConnection("clock_counter_en", 0) && isBlockUsed(pclk) : hasConnection("clock", 0) && isBlockUsed(pclk)}`" visible="false" editable="false" desc="Checks whether there is a PCLK connected and enabled" /> 272 <ParamString id="pclkDst" name="PCLK Destination" group="Internal" default="`${hasVisibleOption("clock_counter_en[0]") ? "PCLK_TCPWM" . tcpwmInst . "_CLOCK_COUNTER_EN" . cntInst : "PCLK_TCPWM" . tcpwmInst . "_CLOCKS" . cntInst}`" visible="false" editable="false" desc="" /> 273 274 <!-- Clock Frequency --> 275 <ParamString id="sourceClock" name="sourceClock" group="General" default="`${(hasVisibleOption("clock[0]")) ? (getBlockFromSignal("clock[0]")) : (getBlockFromSignal("clock_counter_en[0]"))}`" visible="false" editable="false" desc="Source Clock Resource" /> 276 <ParamRange id="tcpwmClkHz" name="tcpwmClkHz" group="General" default="`${getExposedMember(sourceClock, "frequency")}`" min="0" max="400000000" resolution="1" visible="false" editable="false" desc="TCPWM clock frequency in Hz" /> 277 278 </Parameters> 279 280 <DRCs> 281 <DRC type="ERROR" paramId="clock_en[0]" text="Maximum input clock signal frequency supported is 100 Mhz. Please fix input clock setting." condition="`${(hasVisibleOption("clock[0]")) && (tcpwmClkHz > 100000000)}`" /> 282 <DRC type="ERROR" paramId="clock_counter_en[0]" text="Maximum input clock signal frequency supported is 100 Mhz. Please fix input clock setting." condition="`${(hasVisibleOption("clock_counter_en[0]")) && (tcpwmClkHz > 100000000)}`" /> 283 284 <!--Compare0 DRC--> 285 <DRC type="INFO" text="Compare 0 value have to be less or equal to Period" condition="`${(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) && (Compare0 > Period)}`" paramId="Compare0" /> 286 <!--CompareBuff0 DRC--> 287 <DRC type="INFO" text="Compare 0 Buffer value have to be less or equal to Period" condition="`${(EnableCompare0Swap) && (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) && (CompareBuf0 > Period)}`" paramId="CompareBuf0" /> 288 289 <!--Compare1 DRC--> 290 <DRC type="INFO" text="Compare 1 value have to be less or equal to Period" condition="`${pCntCC1 && (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) && (Compare1 > Period)}`" paramId="Compare1"/> 291 <!--CompareBuf1 DRC--> 292 <DRC type="INFO" text="Compare 1 Buffer value have to be less or equal to Period" condition="`${pCntCC1 &&(EnableCompare1Swap) && (QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE1_CMP) && (CompareBuf1 > Period)}`" paramId="CompareBuf1" /> 293 294 <!--IndexInput DRCs--> 295 <DRC type="ERROR" text="Index Input Event has to be enabled to use Index Signal." condition="`${hasConnection("reload", 0) && (IndexInput eq CY_TCPWM_INPUT_DISABLED)}`" paramId="IndexInput"> 296 <FixIt action="SET_PARAM" target="IndexInput" value="CY_TCPWM_INPUT_RISINGEDGE" valid="true" /> 297 <FixIt action="SET_PARAM" target="IndexInput" value="CY_TCPWM_INPUT_FALLINGEDGE" valid="true" /> 298 <FixIt action="SET_PARAM" target="IndexInput" value="CY_TCPWM_INPUT_EITHEREDGE" valid="true" /> 299 </DRC> 300 301 <!--IndexInput1/Capture0 DRCs--> 302 <DRC type="ERROR" text="Capture 0 or Index 1 Input cannot be used in Range 0 Quad Mode." condition="`${(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0) && hasConnection("capture0", 0)}`" paramId="Capture0OrIndex1Input"> 303 <FixIt action="SET_PARAM" target="QuadMode" value="CY_TCPWM_QUADDEC_MODE_RANGE0_CMP" valid="true" /> 304 <FixIt action="SET_PARAM" target="QuadMode" value="CY_TCPWM_QUADDEC_MODE_RANGE1_CAPT" valid="true" /> 305 </DRC> 306 <DRC type="ERROR" text="`${QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? "Index 1 Input Event has to be enabled to use Index Signal." : "Capture 0 Input Event has to be enabled to use Index Signal."}`" condition="`${!(QuadMode eq CY_TCPWM_QUADDEC_MODE_RANGE0) && hasConnection("capture0", 0) && (Capture0OrIndex1Input eq CY_TCPWM_INPUT_DISABLED)}`" paramId="Capture0OrIndex1Input"> 307 <FixIt action="SET_PARAM" target="Capture0OrIndex1Input" value="CY_TCPWM_INPUT_RISINGEDGE" valid="true" /> 308 <FixIt action="SET_PARAM" target="Capture0OrIndex1Input" value="CY_TCPWM_INPUT_FALLINGEDGE" valid="true" /> 309 <FixIt action="SET_PARAM" target="Capture0OrIndex1Input" value="CY_TCPWM_INPUT_EITHEREDGE" valid="true" /> 310 </DRC> 311 312 <!--Capture1 DRCs--> 313 <DRC type="ERROR" text="Capture 1 Input Event has to be enabled to use Index Signal." condition="`${hasConnection("capture1", 0) && (Capture1Input eq CY_TCPWM_INPUT_DISABLED)}`" paramId="Capture1Input"> 314 <FixIt action="SET_PARAM" target="Capture1Input" value="CY_TCPWM_INPUT_RISINGEDGE" valid="true" /> 315 <FixIt action="SET_PARAM" target="Capture1Input" value="CY_TCPWM_INPUT_FALLINGEDGE" valid="true" /> 316 <FixIt action="SET_PARAM" target="Capture1Input" value="CY_TCPWM_INPUT_EITHEREDGE" valid="true" /> 317 </DRC> 318 319 <!--StopInput DRCs--> 320 <DRC type="ERROR" text="Stop Event has to be enabled to use Stop Signal." condition="`${hasConnection("stop", 0) && (StopInput eq CY_TCPWM_INPUT_DISABLED)}`" paramId="StopInput"> 321 <FixIt action="SET_PARAM" target="StopInput" value="CY_TCPWM_INPUT_RISINGEDGE" valid="true" /> 322 <FixIt action="SET_PARAM" target="StopInput" value="CY_TCPWM_INPUT_FALLINGEDGE" valid="true" /> 323 <FixIt action="SET_PARAM" target="StopInput" value="CY_TCPWM_INPUT_EITHEREDGE" valid="true" /> 324 </DRC> 325 326 <!--Trigger Output DRCs--> 327 <DRC type="ERROR" text="Trigger 0 Event has to be enabled to use Trigger 0 Signal." condition="`${hasConnection("tr_out0", 0) && (trigger0Event eq CY_TCPWM_CNT_TRIGGER_ON_DISABLED)}`" paramId="trigger0Event"> 328 <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_OVERFLOW" valid="true" /> 329 <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_UNDEFLOW" valid="true" /> 330 <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_TC" valid="true" /> 331 <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_CC0_MATCH" valid="true" /> 332 <FixIt action="SET_PARAM" target="trigger0Event" value="CY_TCPWM_CNT_TRIGGER_ON_CC1_MATCH" valid="false" /> 333 </DRC> 334 <DRC type="ERROR" text="Trigger 1 Event has to be enabled to use Trigger 1 Signal." condition="`${hasConnection("tr_out1", 0) && (trigger1Event eq CY_TCPWM_CNT_TRIGGER_ON_DISABLED)}`" paramId="trigger1Event"> 335 <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_OVERFLOW" valid="true" /> 336 <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_UNDEFLOW" valid="true" /> 337 <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_TC" valid="true" /> 338 <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_CC0_MATCH" valid="true" /> 339 <FixIt action="SET_PARAM" target="trigger1Event" value="CY_TCPWM_CNT_TRIGGER_ON_CC1_MATCH" valid="false" /> 340 </DRC> 341 </DRCs> 342 343 <ConfigFirmware> 344 <ConfigInclude value="cy_tcpwm_quaddec.h" include="true" /> 345 <ConfigInclude value="cy_sysclk.h" include="`${pclkOk}`" /> 346 <ConfigInclude value="cycfg_routing.h" include="true" /> 347 <ConfigInclude value="cyhal_hwmgr.h" include="true" guard="defined (CY_USING_HAL)" /> 348 <ConfigInclude value="cyhal.h" include="true" guard="defined (CY_USING_HAL)" /> 349 350 <ConfigDefine name="`${INST_NAME}`_HW" value="TCPWM`${tcpwmInst}`" public="true" include="true" /> 351 <ConfigDefine name="`${INST_NAME}`_NUM" value="`${cntInst}`UL" public="true" include="true" /> 352 <ConfigDefine name="`${INST_NAME}`_IRQ" value="tcpwm_`${tcpwmInst}`_interrupts_`${cntInst}`_IRQn" public="true" include="`${InterruptTC || InterruptCC0 || InterruptCC1}`" /> 353 <ConfigDefine name="`${INST_NAME}`_INPUT_DISABLED" value="0x7U" public="false" include="true" /> 354 <ConfigStruct name="`${INST_NAME . "_config"}`" type="cy_stc_tcpwm_quaddec_config_t" const="`${inFlash}`" public="true" include="true" > 355 <Member name="quadMode" value="`${QuadMode}`" /> 356 <Member name="resolution" value="`${Resolution}`" /> 357 <Member name="interruptSources" value="`${InterruptSource}`" /> 358 <Member name="indexInputMode" value="`${IndexInput eq CY_TCPWM_INPUT_DISABLED ? defineInputDisabled : IndexInput}`" /> 359 <Member name="indexInput" value="`${IndexInput eq CY_TCPWM_INPUT_DISABLED ? "CY_TCPWM_INPUT_0" : (definePrefix . "_RELOAD_VALUE")}`" /> 360 <Member name="stopInputMode" value="`${StopInput eq CY_TCPWM_INPUT_DISABLED ? defineInputDisabled : StopInput}`" /> 361 <Member name="stopInput" value="`${StopInput eq CY_TCPWM_INPUT_DISABLED ? "CY_TCPWM_INPUT_0" : (definePrefix . "_STOP_VALUE")}`" /> 362 <Member name="phiAInput" value="`${(definePrefix . "_COUNT_VALUE")}`" /> 363 <Member name="phiBInput" value="`${(definePrefix . "_START_VALUE")}`" /> 364 <Member name="phiAInputMode" value="`${Resolution eq CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT ? phiAInputMode : CY_TCPWM_INPUT_LEVEL }`" /> 365 <Member name="phiBInputMode" value="`${Resolution eq CY_TCPWM_QUADDEC_UP_DOWN_ROTARY_COUNT ? phiBInputMode : CY_TCPWM_INPUT_LEVEL }`" /> 366 <Member name="trigger0Event" value="`${trigger0Event}`" /> 367 <Member name="trigger1Event" value="`${trigger1Event}`" /> 368 <Member name="captureOnIndex" value="`${QuadMode ne CY_TCPWM_QUADDEC_MODE_RANGE0_CMP ? defineInputDisabled : CaptureOnIndex}`"/> 369 <Member name="compare0" value="`${Compare0}`" /> 370 <Member name="compareBuf0" value="`${CompareBuf0}`" /> 371 <Member name="enableCompare0Swap" value="`${EnableCompare0Swap}`" /> 372 <Member name="compare1" value="`${pCntCC1 ? Compare1 : "CY_TCPWM_GRP_CNT_CC0_DEFAULT"}`" /> 373 <Member name="compareBuf1" value="`${pCntCC1 ? CompareBuf1 : "CY_TCPWM_GRP_CNT_CC0_BUFF_DEFAULT"}`" /> 374 <Member name="enableCompare1Swap" value="`${EnableCompare1Swap}`" /> 375 <Member name="capture0OrIndex1InputMode" value="`${Capture0OrIndex1Input eq CY_TCPWM_INPUT_DISABLED ? defineInputDisabled : Capture0OrIndex1Input}`" /> 376 <Member name="capture0OrIndex1Input" value="`${Capture0OrIndex1Input eq CY_TCPWM_INPUT_DISABLED ? "CY_TCPWM_INPUT_0" : (definePrefix . "_CAPTURE0_VALUE")}`" /> 377 <Member name="period0" value="`${Period}`" /> 378 <Member name="capture1InputMode" value="`${Capture1Input eq CY_TCPWM_INPUT_DISABLED ? defineInputDisabled : Capture1Input}`" /> 379 <Member name="capture1Input" value="`${Capture1Input eq CY_TCPWM_INPUT_DISABLED ? "CY_TCPWM_INPUT_0" : (definePrefix . "_CAPTURE1_VALUE")}`" /> 380 </ConfigStruct> 381 382 <ConfigStruct name="`${INST_NAME}`_obj" type="cyhal_resource_inst_t" const="true" public="true" include="true" guard="defined (CY_USING_HAL)"> 383 <Member name="type" value="CYHAL_RSC_TCPWM" /> 384 <Member name="block_num" value="`${(getInstNumber("tcpwm") * pMaxGroupCount) + pCntGroup}`U" /> 385 <Member name="channel_num" value="`${getInstNumber("cnt")}`U" /> 386 </ConfigStruct> 387 388 <ConfigStruct name="`${INST_NAME}`_clock" type="cyhal_clock_t" const="`${inFlash}`" public="true" include="true" guard="defined (CY_USING_HAL)"> 389 <Member name="block" value="`${getExposedMember(pclk, "hal_block")}`" /> 390 <Member name="channel" value="`${getExposedMember(pclk, "number")}`" /> 391 <Member name="reserved" value="false" /> 392 <Member name="funcs" value="NULL" /> 393 </ConfigStruct> 394 395 <ConfigStruct name="`${INST_NAME}`_hal_config" type="cyhal_quaddec_configurator_t" const="`${inFlash}`" public="true" include="true" guard="defined (CY_USING_HAL)"> 396 <Member name="resource" value="&`${INST_NAME}`_obj" /> 397 <Member name="config" value="&`${INST_NAME}`_config" /> 398 <Member name="clock" value="&`${INST_NAME}`_clock" /> 399 </ConfigStruct> 400 401 <ConfigInstruction purpose="INITIALIZE" value="Cy_SysClk_PeriGroupSlaveInit(CY_MMIO_TCPWM`${tcpwmInst}`_PERI_NR, CY_MMIO_TCPWM`${tcpwmInst}`_GROUP_NR, CY_MMIO_TCPWM`${tcpwmInst}`_SLAVE_NR, CY_MMIO_TCPWM`${tcpwmInst}`_CLK_HF_NR);" include="true" guard="defined (CY_DEVICE_CONFIGURATOR_IP_ENABLE_FEATURE)" /> 402 <ConfigInstruction purpose="INITIALIZE" value="Cy_SysClk_PeriphAssignDivider(`${pclkDst}`, `${getExposedMember(pclk, "clockSel")}`);" include="`${pclkOk}`" /> 403 <ConfigInstruction purpose="RESERVE" value="cyhal_hwmgr_reserve(&`${INST_NAME}`_obj);" include="true" guard="defined (CY_USING_HAL)" /> 404 </ConfigFirmware> 405</Personality> 406