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.

[参考译文] TMS570LS3137:如何在 PCNT 指令中复位周期计数的溢出

Guru**** 2611705 points
Other Parts Discussed in Thread: TMS570LS3137

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/745914/tms570ls3137-how-to-reset-overflow-of-periodic-count-in-pcnt-instruction

器件型号:TMS570LS3137

大家好、

我们使用的是具有 CCS8.0的 Hercules TMS570LS3137控制器。 我们使用 HET 模块实现以下功能。
配置 PCNT 指令以读取脉冲计数并读取特定数量事件的脉冲计数值。

现在、如果我们针对多个 HET 引脚实现上述功能、我们会在发生以下情况时看到异常行为:

我们的主要要求是、当没有向 HET 引脚提供输入信号时、脉冲计数值应读作0。 为此、我们启用了控制功能。
当我们移除其中一个 HET 引脚上的输入(例如0)并为其他 HET 引脚提供有效输入(例如1)时、并等待引脚0上 PCNT 指令的控制字段值达到全部1。
现在、从引脚1读取脉冲计数值无效。

您能告诉我这种行为的原因吗?是否有任何勘误表并解决此问题?

此致、
M.Sreenivasan。

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

    您能否上传包含计数器设置和您在 pin0和 pin1上执行的两条 PCNT 指令的 HET 程序?

    当您向 HET 引脚说"没有提供输入信号"时、该引脚是悬空还是接地?

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

    您好、Sunil、

    引脚不悬空。

    此致、
    M.Sreenivasan。

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

    PCNT 指令用于测量输入的高/低脉冲时间或周期。 控制字段[24:0]用于存储分辨率环路的数量、而不是输入脉冲。

    ECNT 是对脉冲进行计数的指令。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、

    PCNT 指令用于测量脉冲周期和脉冲计数、ECNT 指令用于测量事件计数、即、根据给定的输入信号、 PCNT 指令可以测量脉冲计数、它可以基于高到高或低到高等、ECNT 指令用于测量发生了多少个高到高或低到高事件。

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

    对此进行了任何更新?

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

    PCNT 将计数器值[C24:C0]捕获到所选边沿上的周期/脉冲计数字段[D31:D7]中。 即使输入信号是平坦的(无边沿)、计数器也会在每个 N2HET 环路上递增。 在2^24 NHET 环路分辨率时钟周期后、计数器达到溢出、并且 PCNT 停止计数、直到检测到下一个复位边沿(基于计数器类型的上升边沿或下降边沿)。

    在具有有效输入的引脚上、如果引脚1的计数器类型为 rise2fall、当检测到上升沿时、计数器值清零、当检测到下降沿时、将捕获计数器值并保存在数据字段[D31:D7]中。

    我仍然建议使用 ECNT 而不是 PCNT 来测量脉冲计数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    根据手动操作(snpu499c.pdf)、ECNT 会执行以下操作(当事件发生时、立即数据字段递增1):

    如果(发生事件)

    如果(选择了寄存器 A 或 B){
    所选寄存器=立即数据字段+ 1;

    IF (选择寄存器 R、S 或 T)

    所选寄存器[31:7]=立即数据字段+ 1;
    所选寄存器[6:0]= 0;

    立即数据字段=立即数据字段+ 1;
    如果(中断使能= 1) HETFLG[n]= 1;/* n 取决于地址*/
    如果([C28:C27]== 01)在[P25:P23]行上生成请求;
    如果([C28:C27]== 11)在[P25:P23]行上生成静默请求;
    跳转至条件地址;

    其他

    跳转至下一个程序地址;


    但是、为了测量脉冲计数周期、我们必须使用 PCNT 指令。

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

    在代码中、L02 (ECNT)测量上升沿和下降沿。 该指令的数据字段在上升沿将递增1、在下降沿也将递增1。 L02在事件(上升沿或下降沿)发生时执行、因此 L03 (ADD)中的数据字段不是 L00 (PCNT)的正确累积值。 L04是 L02的副本、因此 L04的数据字段也不正确。
    _________ _________________ _________________
    | | | | | |
    1 2. 3. 4. 5. 6.
    | | | | | |
    ------ ---------- -------- ------

    对于上图中的输入信号、周期(L00)是边沿1和边沿3之间的分辨率环路数量、假设它为3。 在边沿6之后、L01 (ECNT)的数据字段为6。

    L02中的数据字段不是6、而是其他内容。

    如果您使用 ECNT 的上升沿、ECNT 的数据字段将是脉冲计数。 在下降沿6之后、ECNT 的数据= 3。

    L02中的数据字段也是正确的、它是6。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、

    您能告诉我们在仿真器环境中测试相同的过程吗?
    请告诉我们您是否能够在实际目标上重现问题?

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

    我没有机会在实际目标上进行测试。

    请下载 HET IDE:
    http://www.ti.com/tool/HET_IDE

    本用户指南:
    www.ti.com/.../spnu483a.pdf

    我将向您发送用于 HET IDE 仿真的程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢王。

    我们将对其进行测试。 请告诉我您是否能够在实际目标上重现问题? 您能加快速度吗?

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

    对此进行了任何更新? 您能否分享您对实际目标的观察结果?

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

    您好、Wang、

    如果您有任何更新、可以告诉我吗?

    此外、如前面的注释所述、请务必共享您的测试代码

    此致、
    M.Sreenivasan。

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

    对此进行了任何更新?

    此致、
    M.Sreenivasan。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次评估此用例后、我仍然建议使用 ECNT 而不是 PCNT 来测量输入信号的事件。 ECNT 可检测输入信号的下降/上升/高/低事件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、

    根据 ECNT 条件、我们需要从 PCNT 测量脉冲计数以进行进一步处理。 您能否确认在实验室中重现问题?

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

    我很抱歉耽误你的答复。 您可以使用 ECNT 对脉冲进行计数、并使用 PCNT 测量周期或脉冲宽度。 由于 PCNT 中的计数器会增加每个环路分辨率、因此如果没有输入或输入是一个常量值、它将快速溢出。