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.

[参考译文] TMS570LC4357:HET HTU、用于慢速信号的第一个 PCNT (RISE2FALL)始终为零

Guru**** 2455560 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1221290/tms570lc4357-het-htu-first-pcnt-rise2fall-for-slow-signals-always-zero

器件型号:TMS570LC4357

您好!

我将开始在 HET IDE 中编写我自己的 HET 程序并使用 HTU 进行数据传输。 (双缓冲模式、但在这里无关紧要)。

这是一个程序、捕获 HET1_PIN12上的占空比和周期

l00 PCNT{hr_lr=low、next=L01、type=RIISE2FALL、pin=12};
L01 PCNT{hr_lr=low、next=L02、reqnum=0、request=GENREQ、type=RIISE2RISE、pin=12};
L02 CNT{next=L03、reg=B、max=1171、data=0};
l03 ecmp{next=l04、hr_lr=low、en_pin_action=on、pin=7、action=PULSELO、reg=B、data=527};
L04 ECNT{pin=12、event=rise、reg=a、data=0};
L05 BR{next=L00、COND_addr=L00、EVENT=NOCOND};

L00和 L01是需要关注的问题、L02和 L03只生成信号、L04是不相关的。

该棚户区设置为将 L00的 DF (接通时间)和 L01的 DF (周期)转移到缓冲区 A 和缓冲区 B、这两个缓冲区运行良好。
我正在 HTU 中断'bufferA finished'中设置一个断点。 我不知道为什么对于慢速信号(~ 10Hz)、第一个导通时间值始终为零。 对于更快的信号、情况并非如此、导通时间则是正确的。

有人能解释一下这种行为吗?

此致、
Juergen

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

    该请求在 L00中未启用、因此 L01中的请求用于触发 L00 DF 和 L01 DF 的传输、对吗? 在这个情况下、帧数量为2、在 HTU 控制数据包中 HET addr 增量为16字节。  

    我对您的消息中的"准时"传输不是很清楚。  

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

    您好、OJ:  

    让我更清楚一点。  

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

    哎呀、抱歉...

    l00 PCNT{hr_lr=low、next=L01、type=RIISE2FALL、pin=12};接通时间
    L01 PCNT{hr_lr=low、next=L02、reqnum=0、request=GENREQ、type=RIISE2RISE、pin=12};句点

    我认为帧计数的说法是不正确的。 帧计数是缓冲区深度、元素数量应为2。 不管怎样、我的 HTU 设置看起来是正确的、它按照预期工作、除非我使用慢速信号(<= 10Hz)来馈送它。
    HTU 被设置为双缓冲模式并在 bufA 和 bufB 之间自动切换。
    我设置一个 HTU 中断断点、在 bufA 或 bufB 已满时触发。 当 bufA 满时、第一个中断被触发。 假设帧数为6、我预计缓冲区中会出现以下结果:

    bufA   内容   
     0     导通时间周期1
     1.       周期1时的相位
     2     导通时间周期2
     3.       周期2
     4.     导通时间周期3
     5     周期  3
    这对于更快的信号是合适的。 对于10Hz 及更低频率、我得到:
     bufA   内容   
     0          0
     1.       周期1时的相位
     2     导通时间周期2
     3.       周期2
     4.     导通时间周期3
     5     周期  3
    这只是第一次触发中断、然后就没有问题了。 我不希望出现这种情况、因为 L00和 L01都从上升沿开始。 L00结束、下降沿结束、L01位于上升沿。 这就是为什么我希望 L00始终有效、而不是为零。 L01触发 HTU 传输。

    此致、
    Juergen

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

    尊敬的  Juergen:

    L00 PCNT{hr_lr=low、next=L01、type=RIISE2FALL、pin=12};准时[/报价]

    HTU 请求和请求编号在 L00中不使能。 如何触发 HOT 以将 L00 DF 传输到 RAM?

    对于 ISE2FALL (接通时间)、L00 PCNT 将计数器值捕获到 下降沿 DF 字段中。

    对于 RISE2RISE (周期)、L01 PCNT 将计数器值捕获到 上升沿的 DF 字段中。 但您应该丢弃第一个 HTU 请求。

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

    您好、QJ:

    我不打算使用 L00来触发 HTU 传输、而是由 L01完成。 我的假设是, L00已经捕获了计数器到它提交的数据,因为它测量了 Rise2Fall 和 L01从 Rise2Rise。 L01触发一个 HTU 传输、在两个元件的帧中传输 L00和 L01的 Df。 为什么建议对第一次转账进行分立? 我在文档的某处读取了类似的内容。 我认为必须关注 HET 和 HTU 是如何被启用的、以及 HTU 在并非由信号边沿引起的特殊情况下如何触发一个请求的序列。 我已经过测试、在启动时不会从 HTU 接收到不需要的传输。 如果我不明白为什么它的行为方式、我不想公开结果。

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

    您好!

    最好使用一个 HTU 请求来传输 L00 DF 和 L01 DF。

    为什么建议取消第一次转账?

    L01使用 RISE2RISE、捕获周期计数器、并在上升沿复位。

    请参阅 PCNT 指令描述部分中的注释:

    注意:对于 FLL2FALL/RISE2RISE、如果、用户应始终丢弃第一个中断/HTU 请求
    在 HET_ON 之前启用中断/请求。 对于这两种类型、复位边沿和捕捉边沿都是
    相同、并且中断或 HTU 请求在捕获边沿(除了复位边沿)上触发。
    一旦执行单元被启用、第一个边沿就会生成中断、但计数器的值为
    不使用、因为这不是2个边沿之间的周期。 因此、N2HET 导通后的第一个边沿主要用于
    复位计数器并开始周期计数。