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.

[参考译文] TMS320F2800137:测量方波频率

Guru**** 2589245 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1408143/tms320f2800137-measure-frequency-of-square-wave

器件型号:TMS320F2800137
Thread 中讨论的其他器件:C2000WARE

工具与软件:

我想通过将方波信号应用于 GPIO 并匹配上升沿中断来测量该 GPIO 的频率。

__interrupt void Grid_ZCD(void)
{
    // Disable ZCD int

    Interrupt_disable(INT_XINT1);
    Grid_ZCD_Flag = 2; // Grid ZCD flag set

    mytimercount = CPUTimer_getTimerCount(CPUTIMER1_BASE);
    CPUTimer_reloadTimerCounter(CPUTIMER1_BASE);

    Grid_Period = 10000000 - mytimercount;
    myT = 8.3333e-9 * (float) Grid_Period;
    freq = 1 / (float) myT;

    //
    // Acknowledge this interrupt to receive more interrupts from group 1
    //
    Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);

}


这个方波有一个围绕边沿的抖动,所以为了避免错误的中断,我们在大约3/4的方波中禁用这个 Grid ZCD 中断。

这引起了很多问题。 此处、我们得到的测量频率值对应于 STOP_CYCLES。 如果它大约为80Hz、它将提供该值、就像之后立即触发中断一样。

    if (Grid_ZCD_Flag == 1)
            {
                blanking_time++;
                if (blanking_time >= stop_cycles)
                {
                    blanking_time =0;
                    Grid_ZCD_Flag = 0;     
                    // enable ZCD int
                    Interrupt_enable(INT_XINT1);
                }
            }

禁用/启用中断时是否出现错误? 您会建议什么替代方案?

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

    我得到了这条评论,对此有什么评论吗? 禁用是否不清除此项?

    "通常中断带有使能位和挂起标志位。 如果您的边沿多次发生、您将获得一个中断、该中断已经等待执行、并且在您启用它后立即被执行"

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

    您好!

    我相信您能够通过 F280013x 上的 eCAP 模块实现自己要做的事情。 我将环路 eCAP 专家进行确认。

    此致、

    Delaney

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

    请在 PIE IFR 上展开、标记。 即使我禁用了中断、它仍然设置吗? 当我再次启用此中断时、ISR 会运行吗?  

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

    此处替代的方法是使用我们的器件上的 eCAP 外设、而不是使用 ISR 来捕获信号。 然后、您可以在此外设的上升沿或下降沿生成一个中断。 我们有几个示例展示了 C2000WARE 中的此外设。

    C:\ti\c2000\C2000Ware_5_03_00_00\driverlib\f280013x\examples\ecap

    此致!

    Ryan Ma