This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS1224:在 HET IDE 上使用波形

Guru**** 2562120 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/813986/tms570ls1224-using-the-waveform-on-het-ide

器件型号:TMS570LS1224

你(们)好

我一直在尝试运行仿真来测试代码、但无法使其正常工作。 我非常确信代码能够正常工作、因为它基于几年前别人上传的代码。 我刚才添加了项目所需的额外引脚。  我一直在尝试创建编码器信号、但我似乎无法使其在仿真器上正常运行...  

这是我要使用的代码。

;-------------------------------- 变量定义-------------------------------------------------------

;-------------------------------- 输入编码器---

Encoder_MAX_STEPICESS_VALUE .equ 0x0003475
ENCODE_MINUSE_NOT_STEP .equ 0x0003474

;--- 输入编码器通道1:引脚配置---

引脚_A1 equ 10;来自 QEP 编码器的信号 A -> N2HET1[10]
PIN_B1 equ 12;来自 QEP 编码器的信号 B -> N2HET1[12]

;--- 输入编码器通道2:引脚配置---

引脚_A2 equ 14;来自 QEP 编码器的信号 A -> N2HET1[14]
PIN_B2 equ 30;来自 QEP 编码器的信号 B -> N2HET1[30]

;--- 输入编码器通道3:引脚配置---

引脚_A3 equ 16;来自 QEP 编码器的信号 A -> N2HET1[16]
PIN_B3 equ 29;来自 QEP 编码器的信号 B -> N2HET1[29]

;--- 输入编码器通道4:引脚配置---

引脚_A4 equ 27;来自 QEP 编码器的信号 A -> N2HET1[27]
PIN_B4 equ 22;来自 QEP 编码器的信号 B -> N2HET1[22]

;--- 输入编码器通道6:引脚配置---

PIN_A6 equ 31;来自 QEP 编码器的信号 A -> N2HET1[31]
PIN_B6 equ 15;来自 QEP 编码器的信号 B -> N2HET1[15]

;--- 输入编码器通道8:引脚配置---

引脚_A8 equ 19;来自 QEP 编码器的信号 A -> N2HET1[19]
PIN_B8 equ 13;来自 QEP 编码器的信号 B -> N2HET1[13]

;--- 输入编码器通道9:引脚配置---

引脚_A9 equ 6;来自 QEP 编码器的信号 A -> N2HET1[6]
PIN_B9 equ 25;来自 QEP 编码器的信号 B -> N2HET1[25]

;--- 输入编码器通道10:引脚配置---

PIN_A10 equ 24;来自 QEP 编码器的信号 A -> N2HET1[24]
PIN_B10 equ 26;来自 QEP 编码器的信号 B -> N2HET1[26]

;--- 输入编码器通道11:引脚配置---

引脚_A11 equ 8;来自 QEP 编码器的信号 A -> N2HET1[8]
PIN_B11 equ 28;来自 QEP 编码器的信号 B -> N2HET1[28]

;--- 输入编码器通道12:引脚配置---

引脚_A12 equ 1;来自 QEP 编码器的信号 A -> N2HET1[1]
PIN_B12 equ 3;来自 QEP 编码器的信号 B -> N2HET1[3]


;---------------
;-------------------------------- HET 方案---
;------------------------------------------------------------------

;-------------------------------- 输入编码器- QEP----

;-------------------------------- 启动通道1-------------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A1 FALL 和 PIN_B1 Low 或者 PIN_A1 FALL 和 PIN_B1 High --
--;--------

AFE1 BR{NEXT = ARE1、COND_ADDR = AFL1、EVENT = FALL、Pin = PIN_A1}

AFE1 BR{NEXT = BAC1、COND_ADDR = FOR1、EVENT = Low、Pin = PIN_B1}

;------ 测试情况2-----------------------------------------------------------------
;--Check:PIN_A1 RISE 和 PIN_B1 Low 或者 PIN_A1 RISE 和 PIN_B1 High --
--;-----------------

ARE1 BR { NEXT = BFE1,COND_ADDR = ARL1,EVENT = RISE,Pin = PIN_A1}

ARL1 BR { NEXT = BAC1,COND_ADDR = FOR1,EVENT = HIGH,Pin = PIN_B1}

;------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B1 FALL 和 PIN_A1 Low 或者 PIN_B1 FALL 和 PIN_A1 High --
--;--------

BFE1 BR { NEXT = BRE1,COND_ADDR = BFL1,EVENT = FALL,Pin = PIN_B1}

BFL1 BR { NEXT = BAC1,COND_ADDR = FOR1,EVENT = HIGH,Pin = PIN_A1}

;--- 测试情况4-----------------------------------------------------------------
;--Check:PIN_B1 RISE 和 PIN_A1 High 或者 PIN_B1 RISE 和 PIN_A1 High;--
--------------------

BRE1 BR {NEXT = AFE2、COND_ADDR = BRL1、EVENT = RISE、Pin = PIN_B1}

BRL1 BR {NEXT = BAC1、COND_ADDR = FOR1、EVENT = LOW、Pin = PIN_A1}

;------------ 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将后退,数据= ENCODER_MAX_STEPS 值

for1 CNT {next = AFE2、reg = none、max = encoder_MAX_STETERS_VALUE}

;--------- 反向旋转---

BAC1 MOV32{NEXT = LIM1、REMOTE = FOR1、TYPE = REMTOREG、reg = A}

LIM1 eCMP{NEXT = SSUB1、COND_ADDR= HIL1、hr_LR=低电平、en_PIN_ACTION =关闭、PIN=CC10、 REG = A、DATA=0}

HIL1 adm32 { NEXT = AFE2,REMOTE = FOR1,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MAX_STEPS_VALUE}

SSUB1 ADM32 { NEXT = AFE2,REMOTE = FOR1,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINE_NE_STEP}

;--- 结束通道1----

;-------------------------------- 启动通道2-------------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A2下降和 PIN_B2下降或者 PIN_A2下降和 PIN_B2高电平---
;---------------

AFE2 BR {NEXT = ARE2、COND_ADDR = AFL2、事件= FALL、引脚= PIN_A2}

AFL2 BR {NEXT = BAC2、COND_ADDR = FOR2、EVENT =低电平、Pin = PIN_B2}

;------------ 测试情况2-----------------------------------------------------------------
;--Check:PIN_A2 RISE 和 PIN_B2 RISE 低或者 PIN_A2 RISE 和 PIN_B2高---
;-------------------------------------------------------

ARE2 BR {NEXT = BFE2、COND_ADDR = ARL2、EVENT = RISE、Pin = PIN_A2}

ARL2 BR {NEXT = BAC2、COND_ADDR = FOR2、EVENT = HIGH、Pin = PIN_B2}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B2下降和 PIN_A2下降或者 PIN_B2下降和 PIN_A2高电平---
;---------------

BFE2 BR {NEXT = BRE2、COND_ADDR = BFL2、事件=下降、引脚= PIN_B2}

BFL2 BR {NEXT = BAC2、COND_ADDR = FOR2、EVENT = HIGH、Pin = PIN_A2}

;------------ 测试情况4-----------------------------------------------------------------
;--Check:PIN_B2 RISE 和 PIN_A2 High 或者 PIN_B2 RISE 和 PIN_A2 High;--
---------------------

BRE2. BR {NEXT = AFE3、COND_ADDR = BRL2、事件=上升、引脚= PIN_B2}

BRL2 BR {NEXT = BAC2、COND_ADDR = FOR2、EVENT = LOW、Pin = PIN_A2}

;------------ 前转--------------------------------------------------------
;此指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将向后转动,则数据= ENCODER_MAX_STEPS 值

for2 CNT {next = AFE3、reg = none、max = encoder_MAX_STETERS_VALUE}

;--------- 反向旋转---

BAC2 MOV32{NEXT = LIM2、REMOTE = FOR2、TYPE = REMTOREG、reg = A}

LIM2 eCMP{NEXT = SSUB2、COND_ADDR= HIL2、hr_LR=低电平、en_PIN_ACTION =关闭、PIN=CC14、 REG = A、DATA=0}

HIL2 adm32{next = AFE3、remote = for2、type = IM&REGTOREM、reg = A、data = ENCODER_MAX_STETERS_VALUE}

SSUB2 adm32 { NEXT = AFE3,REMOTE = FOR2,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP}

;--------------- 结束通道2---------------

;-------------------------------- 启动通道3-------------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A3下降和 PIN_B3低或者是 PIN_A3下降和 PIN_B3高---
;-------------------------------------------------------

AFE3. BR {NEXT = are3、COND_ADDR = AFL3、事件= FALL、引脚= PIN_A3}

AFL3 BR {next = BAC3、COND_ADDR = for3、事件=低电平、引脚= PIN_B3}

;--------- 测试情况2-----------------------------------------------------------------
;--Check:Pin_A3 RISE 和 Pin_B3为低电平或者 Pin_A3 RISE 和 Pin_B3为高电平---
;---------------

区域3. BR {NEXT = BFE3、COND_ADDR = ARL3、事件=上升、引脚= PIN_A3}

ARL3 BR {NEXT = BAC3、COND_ADDR = FOR3、EVENT = HIGH、Pin = PIN_B3}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:Pin_B3下降和 Pin_A3低或者 Pin_B3下降和 Pin_A3高--
--;---------------

BFE3 BR {NEXT = BRE3、COND_ADDR = BFL3、事件=下降、引脚= PIN_B3}

BFL3 BR {NEXT = BAC3、COND_ADDR = FOR3、EVENT = HIGH、Pin = PIN_A3}

;------------ 测试情况4-----------------------------------------------------------------
;--Check:PIN_B3 RISE 和 PIN_A3 High 或者 PIN_B3 RISE 和 PIN_A3 High;--
------------------------

BRE3 BR {NEXT = AFE4、COND_ADDR = BRL3、事件=上升、引脚= PIN_B3}

BRL3 BR {NEXT = BAC3、COND_ADDR = FOR3、EVENT = LOW、Pin = PIN_A3}

;------------ 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将向后转动,则数据= ENCODER_MAX_STEPS 值

用于3 CNT {next = AFE4、reg = none、max = encoder_MAX_STETERS_VALUE}

;--------- 反向旋转---

BAC3 MOV32{NEXT = LIM3、REMOTE = for3、TYPE = REMTOREG、reg = A}

LIM3 eCMP{NEXT = SSUB3、COND_ADDR= HIL3、hr_LR=低电平、en_PIN_ACTION=OFF、PIN=CC16、 REG = A、DATA=0}

HIL3 adm32{next = AFE4、remote = for3、type = IM&REGTOREM、reg = A、data = Encoder_MAX_STETERS_VALUE}

SSUB3 adm32 { NEXT = AFE4,REMOTE = for3,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP}

;--------------- 结束通道3 -------------------------------------------------------

;-------------------------------- 启动通道4-------------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A4下降和 PIN_B4低或者 PIN_A4下降和 PIN_B4高--
--;-----------------

AFE4 BR {NEXT = ARE4、COND_ADDR = AL4、事件= FALL、引脚= PIN_A4}

AL4 BR {NEXT = BAC4、COND_ADDR = FOR4、事件=低电平、引脚= PIN_B4}

;------------ 测试情况2-----------------------------------------------------------------
;--Check:PIN_A4 RISE 和 PIN_B4 Low 或者 PIN_A4 RISE 和 PIN_B4 High;--
-----------------

ARE4 BR {NEXT = BFE4、COND_ADDR = ARL4、EVENT = RISE、Pin = PIN_A4}

ARL4 BR {NEXT = BAC4、COND_ADDR = FOR4、事件=高电平、引脚= PIN_B4}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B4下降和 PIN_A4下降或者是 PIN_B4下降和 PIN_A4高--
--;-------------------------

BFE4 BR {NEXT = BRE4、COND_ADDR = BFL4、EVENT = FALL、Pin = PIN_B4}

BFL4 BR {NEXT = BAC4、COND_ADDR = FOR4、EVENT = HIGH、Pin = PIN_A4}

;------------ 测试情况4-----------------------------------------------------------------
;--Check:PIN_B4 RISE 和 PIN_A4 High 或者 PIN_B4 RISE 和 PIN_A4 High;--
----------------------------

BRE4 BR {NEXT = AFE6、COND_ADDR = BRL4、事件=上升、引脚= PIN_B4}

BRL4 BR {NEXT = BAC4、COND_ADDR = FOR4、事件=低电平、引脚= PIN_A4}

;------------ 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将后退,数据= ENCODER_MAX_STEPS 值

FOR4 CNT {next = AFE6、reg = none、max = encoder_MAX_STETERS_VALUE}

;--------- 反向旋转---

BAC4. MOV32{NEXT = LIM4、REMOTE = FOR4、TYPE = REMTOREG、reg = A}

LIM4 eCMP{NEXT = SSUB4、COND_ADDR= HIL4、hr_LR=低电平、en_PIN_ACTION =关闭、PIN=CC27、 REG = A、DATA=0}

HIL4 adm32{next = AFE6、remote = FOR4、type = IM&REGTOREM、reg = A、data = ENCODER_MAX_STETERS_VALUE}

SSUB4 adm32 { NEXT = AFE6,REMOTE = FOR4,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP}

;--------------- 结束通道4 ----------------

;-------------------------------- 启动通道6 -------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A6下降和 PIN_B6低或者 PIN_A6下降和 PIN_B6高---
;---;---

AFE6 BR {NEXT = ARE6、COND_ADDR = AFL6、EVENT = FALL、Pin = PIN_A6}

AFL6 BR {NEXT = BAC6,COND_ADDR = FOR6,事件=低电平,引脚= PIN_B6}

;------------ 测试情况2-----------------------------------------------------------------
;--Check:Pin_A6 Rise 和 Pin_B6 Low 或者 Pin_A6 Rise 和 Pin_B6 High --
;---;---

ARE6. BR {NEXT = BFE6、COND_ADDR = ARL6、EVENT = RISE、Pin = PIN_A6}

ARL6 BR {NEXT = BAC6,COND_ADDR = FOR6,事件=高电平,引脚= PIN_B6}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B6 FALL 和 PIN_A6 Low 或者 PIN_B6 FALL 和 PIN_A6 High --
--;---;---

BFE6 BR {NEXT = BRE6、COND_ADDR = BFL6、EVENT = FALL、Pin = PIN_B6}

BFL6 BR {NEXT = BAC6,COND_ADDR = FOR6,事件=高电平,引脚= PIN_A6}

;--------------- 测试情况4-----------------------------------------------------------------
;--Check:Pin_B6 RISE 和 Pin_A6 High 或者 Pin_B6 RISE 和 Pin_A6 High --
--;---------------

BRE6 BR {NEXT = AFE8、COND_ADDR = BRL6、EVENT = RISE、Pin = PIN_B6}

BRL6 BR {NEXT = BAC6,COND_ADDR = FOR6,事件=低电平,引脚= PIN_A6}

;------------ 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将后退,数据= ENCODER_MAX_STEPS 值

FOR6 CNT {next = AFE8、reg = none、max = Encoder_MAX_STEPS_VALUE}

;--------- 反向旋转---

BAC6 MOV32{NEXT = LIM6、REMOTE = FOR6、TYPE = REMTOREG、reg = A}

LIM6 eCMP{NEXT = SSUB6、COND_ADDR= HIL6、hr_LR=低电平、en_PIN_ACTION=OFF、PIN=CC31、 REG = A、DATA=0}

HIL6 adm32{NEXT = AFE8、REMOTE = FOR6、TYPE = IM&REGTOREM、reg = A、DATA = ENCODER_MAX_STEPS_VALUE}

SSUB6 adm32 { NEXT = AFE8,REMOTE = FOR6,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP }

;--------------- 结束通道6 --------------------------------------------------------

;-------------------------------- 启动通道8 --------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A8 FALL 和 PIN_B8 LALL 或者 PIN_A8 FALL 和 PIN_B8 High 的引脚;---
;---

AFE8. BR {NEXT = ARE8、COND_ADDR = AFL8、事件= FALL、引脚= PIN_A8}

AFL8 BR {NEXT = BAC8、COND_ADDR = FOR8、事件=低电平、引脚= PIN_B8}

;------------ 测试情况2-----------------------------------------------------------------
;--Check:PIN_A8 RISE 和 PIN_B8 RISE 低或者 PIN_A8 RISE 和 PIN_B8高电平---
;---------------

ARE8. BR {NEXT = BFE8、COND_ADDR = ARL8、EVENT = RISE、Pin = PIN_A8}

ARL8 BR {NEXT = BAC8,COND_ADDR = FOR8,事件=高电平,引脚= PIN_B8}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B8 FALL 和 PIN_A8 Low 或者 PIN_B8 FALL 和 PIN_A8 High 的引脚;-----
;---

BFE8 BR {NEXT = BRE8、COND_ADDR = BFL8、EVENT = FALL、Pin = PIN_B8}

BFL8 BR {NEXT = BAC8,COND_ADDR = FOR8,事件=高电平,引脚= PIN_A8}

;------------ 测试情况4-----------------------------------------------------------------
;--Check:Pin_B8 RISE 和 Pin_A8 High 或 Pin_B8 RISE 和 Pin_A8 High。-----
;---------------

BRE8. BR {NEXT = AFE9、COND_ADDR = BRL8、事件=上升、引脚= PIN_B8}

BRL8 BR {NEXT = BAC8,COND_ADDR = FOR8,事件=低电平,引脚= PIN_A8}

;------------ 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将后退,数据= ENCODER_MAX_STEPS 值

FOR8 CNT {next = AFE9、reg = none、max = encoder_MAX_STETERS_VALUE}

;--------- 反向旋转---

BAC8 MOV32{NEXT = LIM8、REMOTE = FOR8、TYPE = REMTOREG、reg = A}

LIM8 eCMP{NEXT = SSUB8、COND_ADDR= HIL8、hr_LR=低电平、en_PIN_ACTION =关闭、PIN=CC19、 REG = A、DATA=0}

HIL8 adm32{next = AFE9、remote = FOR8、type = IM&REGTOREM、reg = A、data = Encoder_MAX_STETERS_VALUE}

SSUB8 adm32 { NEXT = AFE9,REMOTE = FOR8,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP}

;--------------- 结束通道8--------------------------------------------------------

;-------------------------------- 启动通道9--------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A9下降沿和 PIN_B9下降沿和 PIN_B9下降沿或者 PIN_A9下降沿和 PIN_B9高段的位置-->
;-----------------

AFE9 BR {NEXT = ARE9、COND_ADDR = AFL9、事件= FALL、引脚= PIN_A9}

AFL9 BR {NEXT = BAC9,COND_ADDR = FOR9,事件=低电平,引脚= PIN_B9}

;------------ 测试情况2-----------------------------------------------------------------
;--Check:PIN_A9上升沿和 PIN_B9低电平或者 PIN_A9上升沿和 PIN_B9高电平-->
;-----------------

ARE9 BR {NEXT = BFE9、COND_addr = ARL9、事件=上升、引脚= PIN_A9}

ARL9 BR {NEXT = BAC9,COND_ADDR = FOR9,事件=高电平,引脚= PIN_B9}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B9 FALL 和 PIN_A9 Low 或者 PIN_B9 FALL 和 PIN_A9 High 的引脚;-----
;--------------------

BFE9 BR {NEXT = BRE9、COND_ADDR = BFL9、事件= FALL、Pin = PIN_B9}

BFL9 BR {NEXT = BAC9,COND_ADDR = FOR9,事件=高电平,引脚= PIN_A9}

;--------- 测试情况4-----------------------------------------------------------------
;--Check:Pin_B9 RISE 和 Pin_A9 High 或 Pin_B9 RISE 和 Pin_A9 High;-----
;---------------

BRE9. BR {NEXT = AFE10、COND_ADDR = BRL9、EVENT = RISE、Pin = PIN_B9}

BRL9 BR {NEXT = BAC9,COND_ADDR = FOR9,事件=低电平,引脚= PIN_A9}

;------ 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将后退,数据= ENCODER_MAX_STEPS 值

FOR9 CNT {next = AFE10、reg = none、max = Encoder_MAX_STEPS_VALUE}

;--------- 反向旋转---

BAC9. MOV32{NEXT = LIM9、REMOTE = FOR9、TYPE = REMTOREG、reg = A}

LIM9 eCMP{NEXT = SSUB9、COND_ADDR= HIL9、hr_LR=低电平、en_PIN_ACTION=OFF、PIN=CC6、 REG = A、DATA=0}

HIL9 adm32{NEXT = AFE10、REMOTE = FOR9、TYPE = IM&REGTOREM、reg = A、DATA = ENCODER_MAX_STEPS_VALUE}

SSUB9 adm32 { NEXT = AFE10,REMOTE = FOR9,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP }

;--------------- 结束通道9--------------------------------------------------------

;-------------------------------- 启动通道10-------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A10下降沿和 PIN_B10下降沿和 PIN_B10下降沿和 PIN_B10下降沿和高---
---------------------------------------------------------------------------------------------------------------

AFE10. BR {NEXT = ARE10、COND_ADDR = AFL10、EVENT = FALL、Pin = PIN_A10}

AFL10 BR {NEXT = BAC10、COND_ADDR = FOR10、EVENT =低电平、Pin = PIN_B10}

;------------ 测试情况2-----------------------------------------------------------------
;--Check:PIN_A10 RISE 和 PIN_B10 RISE 低电平或者 PIN_A10 RISE 和 PIN_B10高电平---
;-------------------------------------------------------

ARE10. BR {NEXT = BFE10、COND_ADDR = ARL10、EVENT = RISE、Pin = PIN_A10}

ARL10 BR {NEXT = BAC10,COND_ADDR = FOR10,事件=高电平,引脚= PIN_B10}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B10 FALL 和 PIN_A10 Low 或者 PIN_B10 FALL 和 PIN_A10 High --
--;--------------------

BFE10 BR {NEXT = BRE10、COND_ADDR = BFL10、EVENT = FALL、Pin = PIN_B10}

BFL10 BR {NEXT = BAC10、COND_ADDR = FOR10、EVENT = HIGH、Pin = PIN_A10}

;--------------- 测试情况4-----------------------------------------------------------------
;--Check:PIN_B10 RISE 和 PIN_A10 High 或者 PIN_B10 RISE 和 PIN_A10 High --
--;---------------

BRE10 BR {NEXT = AFE11、COND_ADDR = BRL10、EVENT = RISE、Pin = PIN_B10}

BRL10 BR {NEXT = BAC10,COND_ADDR = FOR10,事件=低电平,引脚= PIN_A10}

;------------ 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将后退,数据= ENCODER_MAX_STEPS 值

用于10 CNT {next = AFE11、reg = none、max = Encoder_MAX_STEPS_VALUE}

;--------- 反向旋转---

BAC10 MOV32{NEXT = LIM10、REMOTE = FOR10、TYPE = REMTOREG、reg = A}

LIM10 eCMP{NEXT = SSUB10、COND_ADDR= HIL10、hr_LR=低电平、en_PIN_ACTION =关闭、PIN=CC24、 REG = A、DATA=0}

HIL10 adm32{next = AFE11、remote = for10、type = IM&REGTOREM、reg = A、data = Encoder_MAX_STEPS_VALUE}

SSUB10 adm32 { NEXT = AFE11,REMOTE = FOR10,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP }

;--------------- 结束通道10-------------------------------------------------------

;-------------------------------- 启动通道11-------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A11下降和 PIN_B11低电平或者 PIN_A11下降和 PIN_B11高电平---
;-----------

AFE11. BR {NEXT = ARE11、COND_ADDR = AFL11、事件= FALL、引脚= PIN_A11}

AFL11 BR {NEXT = BAC11,COND_ADDR = FOR11,事件=低电平,引脚= PIN_B11}

;------------ 测试情况2-----------------------------------------------------------------
;--Check:PIN_A11 RISE 和 PIN_B11 RISE 低或者 PIN_A11 RISE 和 PIN_B11 RISE 高--
--;-----------------

ARE11. BR {NEXT = BFE11、COND_ADDR = ARL11、EVENT = RISE、Pin = PIN_A11}

ARL11 BR {NEXT = BAC11,COND_ADDR = FOR11,事件=高电平,引脚= PIN_B11}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B11 FALL 和 PIN_A11 LALL 或者 PIN_B11 FALL 和 PIN_A11 High --
--;-----------------

BFE11 BR {NEXT = BRE11、COND_ADDR = BFL11、事件= FALL、Pin = PIN_B11}

BFL11 BR {NEXT = BAC11,COND_ADDR = FOR11,事件=高电平,引脚= PIN_A11}

;------------ 测试情况4-----------------------------------------------------------------
;--Check:PIN_B11 RISE 和 PIN_A11 High 或者 PIN_B11 RISE 和 PIN_A11 High。-------


BRE11 BR {NEXT = AFE12、COND_ADDR = BRL11、事件=上升、引脚= PIN_B11}

BRL11 BR {NEXT = BAC11,COND_ADDR = FOR11,事件=低电平,引脚= PIN_A11}

;--------- 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将后退,数据= ENCODER_MAX_STEPS 值

FOR11 CNT {next = AFE12、reg = none、max = Encoder_MAX_STEPS_VALUE}

;--------- 反向旋转---

BAC11 MOV32{NEXT = LIM11、REMOTE = FOR11、TYPE = REMTOREG、reg = A}

LIM11 eCMP{NEXT = SSUB11、COND_ADDR= HIL11、hr_LR=低电平、en_PIN_ACTION=OFF、PIN=CC8、 REG=B、DATA=0}

HIL11 adm32{NEXT = AFE12、REMOTE = FOR11、TYPE = IM&REGTOREM、reg = A、DATA = ENCODER_MAX_STEPS_VALUE}

SSUB11 adm32 { NEXT = AFE12,REMOTE = FOR11,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP }

;--------------- 结束通道11--------------------------------------------------------

;-------------------------------- 启动通道12-------------------------------------------------------

;-------------------------------- 测试情况1-----------------------------------------------------------------
;--Check:PIN_A12下降和 PIN_B12低电平或者是 PIN_A12下降和 PIN_B12高电平---
;---------------

AFE12. BR {NEXT = ARE12、COND_ADDR = AFL12、事件= FALL、引脚= PIN_A12}

AFL12 BR {NEXT = BAC12,COND_ADDR = FOR12,事件=低电平,引脚= PIN_B12}

;------------ 测试情况2-----------------------------------------------------------------
;--Check:PIN_A12 RISE 和 PIN_B12 Low 或者 PIN_A12 RISE 和 PIN_B12 High --
--;---------------

ARE12. BR {NEXT = BFE12、COND_ADDR = ARL12、EVENT = RISE、Pin = PIN_A12}

ARL12 BR {NEXT = BAC12,COND_ADDR = FOR12,事件=高电平,引脚= PIN_B12}

;------------ 测试情况3-----------------------------------------------------------------
;--Check:PIN_B12下降和 PIN_A12低电平或者 PIN_B12下降和 PIN_A12高电平---
;---;---------

BFE12 BR {NEXT = BRE12、COND_ADDR = BFL12、事件= FALL、Pin = PIN_B12}

BFL12 BR {NEXT = BAC12,COND_ADDR = FOR12,事件=高电平,引脚= PIN_A12}

;------------ 测试情况4-----------------------------------------------------------------
;--Check:PIN_B12 RISE 和 PIN_A12 High 或者 PIN_B12 RISE 和 PIN_A12 High。-------
;-------------------------------------------------------

BRE12 BR {NEXT = AFE1、COND_ADDR = BRL12、EVENT = RISE、Pin = PIN_B12}

BRL12 BR {NEXT = BAC12,COND_ADDR = FOR12,事件=低电平,引脚= PIN_A12}

;--------- 前转--------------------------------------------------------
;这条指令表示移动的步进,值存储在数据字段中(范围:0到 ENCODER_MAX_STEPS 值)
;如果数据字段为0,电机将后退,数据= ENCODER_MAX_STEPS 值

FOR12 CNT {next = AFE1、reg = none、max = encoder_MAX_STETERS_VALUE}

;--------- 反向旋转---

BAC12 MOV32{NEXT = LIM12、REMOTE = FOR12、TYPE = REMTOREG、reg = A}

LIM12 eCMP{NEXT = SSUB12、COND_ADDR= HIL12、hr_LR=低电平、en_PIN_ACTION=OFF、PIN=CC1、 REG= B、DATA=0}

HIL12 adm32{next = AFE1、remote = FOR12、type = IM&REGTOREM、reg = A、data = ENCODER_MAX_STETERS_VALUE}

SSUB12 adm32 { NEXT = AFE1,REMOTE = FOR12,TYPE = IM&REGTOREM,reg = A,DATA = ENCODER_MINUSE_ONE_STEP}

;--------------- 端通道12-------------------------------------------------------

;-------------------------------- 终端输入编码器---

;-------------------------------- 结束方案----------

对如何使其在仿真器上工作有任何想法? 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能告诉我们问题的详细信息吗? 在进行修改之前、代码是否有效?

    NHET 支持的最大指令数为160。  您的代码中有多少条指令?

    确保通过代码的最长路径必须适合一个循环分辨率周期(LRP)。 大多数 N2HET 指令在一个单周期内执行。 有关用于 NHET 指令集的周期、请参阅表23-73。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    每个编码器有13条指令。 此代码适用于10个编码器。  

    我认为 LRP 没有问题。

    来自编码器的脉冲频率为6.2kHz

    问题是我创建了信号、可能方式不正确、然后运行了代码。 我创建了脉冲、对编码器信号进行仿真、在50ns 周期内产生了大约5个脉冲。 如果我尝试创建更长的脉冲、它会给我一个错误、我需要不同版本的软件。

    几年前、我能够完成这项工作、但这次我无法做到...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    仿真的问题是它从0变为14453、再从14453变为0 ... TI 应用手册中关于正交编码器的代码也会发生类似的情况。 我猜问题是在刺激计划上的某个地方,但我不知道问题是什么。  

    我设置了类似这样的信号

    起始电平重复 引脚

    0ns   0  10ns  A

    5ns   1  15ns  A

    0ns   0  12.5ns b.

    7.5ns 1   17.5ns b.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Miguel、

    问题是否与免费 SynaptiCAD 波形查看器的限制相关?

    您的代码有130条指令,因此如果 VCLK2=80MHz,LRP 为256*周期的 VCLK2=3.2us。 我认为代码无法检测50ns 周期内的所有脉冲。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定是否是因为免费版本... 我认为不是。  

    VCLK2为80MHz 是。  

    你建议什么? 使信号更长? 让它运行一会儿?  

    行为是:它会再次变为最大值、然后再变为0、再变为最大值。 这是我的代码。

    现在、使用应用手册中的代码、它会变为1、0和最大值。

    这可能与创建的激励相关??  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您的代码之前正常工作、请尝试卸载/重新安装 NHET IDE 和 SynaptiCAD 波形查看器。