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.

[参考译文] CCS/TMS570LC4357:引脚30上的可生成 edgeEnableNotification 禁用引脚4上生成的 PWM 信号

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/656398/ccs-tms570lc4357-edgeenablenotification-on-pin30-disables-pwm-signal-generated-on-pin4

器件型号:TMS570LC4357

工具/软件:Code Composer Studio

您好!

我的目标是在引脚30上发生上升沿时触发中断。

为此、我在引脚4上生成了一个 PWM 信号、其频率首先为2.5 kHz。

之后、我使用 HET 文件中的 ECNT 指令、如下所示:

ECNT{NEX=L00、PIN=30、EVENT=RISE、REG=B、IRQ=ON、 数据= 0}

我选择引脚30作为边沿检测的输入引脚、启用边沿0中断、并为位30选择 PSL。

main 函数非常简单:

int main (void){

hetInit();

edgeEnableNotification (hetRAM1、edge0);

while (1){};

返回0;

我在 hL_notification.c 文件中实现的 edgeNotification 函数中添加了一个 print-command 以测试是否产生了中断。

我不知道原因、但如果启用边沿通知、引脚4上没有 PWM 信号、并且我没有中断。

我忘记了什么吗?

此致

肯南

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

    您能否使用 HET IDE 模拟您的代码? 这是用于 PWM 生成和边沿检测的简单代码:

    l00 CNT{reg=a、IRQ=off、max=8}
    L01 ECMP{en_pin_action=on、pin=4、action=PULSELO、reg=a、data=4、 HR_DATA=10}
    L02 ECNT{PIN=30、EVENT=RISE、REG=B、IRQ=ON、DATA=0}
    L03 BR{NEXT = L00、COND_ADDR=L00、EVENT= NOCOND}

    您需要在电路板上从外部连接引脚4和引脚30。 您将看到寄存器 B 或 ECNT 的数据字段中的值递增。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    感谢你的帮助。

    但是、如果我使用汇编代码、我会遇到相同的问题。  在 edgeEnableNotification-function 之后、引脚4上的信号变为高电平(3、3V)。

    您可以在此文件夹中找到这些文件:

    e2e.ti.com/.../8831.HET_5F00_PWM-_2800_2_2900_.zip

    最好的农家

    肯南

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

    (笑声) 我发现了一个错误:edgeEnableNotification (hetRAM1、edge0);--> edgeEnableNotification (hetREG1、edge0);

    现在、引脚4上的信号在电桥启用通知功能之后不会变为高电平(3、3V)。

    我将主函数更改如下

    int main (void)
    {
    /*用户代码 begin (3)*/
    volatile UINT32 EdgeCounter=0;
    hetInit();
    edgeEnableNotification (hetREG1、edge0);
    
    while (1){
    EdgeCounter=edgeGetCounter(hetRAM1, 0);
    printf ("边缘:%d\n"、EdgeCounter);
    };
    //用户代码结束*
    
    返回0;
    }
    

    我现在的问题是,针脚30不会收集上升沿。

    此致

    肯南