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/TMS320F28069M:存在未找到的主要问题。

Guru**** 2546020 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/826833/ccs-tms320f28069m-there-are-major-problems-that-have-not-been-found

器件型号:TMS320F28069M

工具/软件:Code Composer Studio

按下按钮时、使用万用表时引脚电平较低、当按钮松动时引脚电平较高。

按键如下所示:

void key_scan (HAL_Handle handle)

   HAL_Obj * obj =(HAL_Obj *)句柄;
   if (GPIO_READ (obj->gpioHandle、GPIO_Number_12)=LOW)
   {
       usDelay (3000);
       if (GPIO_READ (obj->gpioHandle、GPIO_Number_12)=LOW)
      {
           while (GPIO_read (obj->gpioHandle、GPIO_Number_12)=LOW);
           flag_run=1;
           CTRL_setSpd_ref_krpm (ctrlHandle、_iq24 (0.8));
       }
   }
   if (GPIO_READ (obj->gpioHandle、GPIO_Number_13)=LOW)
       {
           usDelay (3000);
          if (GPIO_READ (obj->gpioHandle、GPIO_Number_13)=LOW)
          {
               while (GPIO_read (obj->gpioHandle、GPIO_Number_13)=low);
               flag_run=2;
               CTRL_setSpd_ref_krpm (ctrlHandle、_iq24 (-0.8));
           }
       }
   if (GPIO_READ (obj->gpioHandle、GPIO_Number_22)=LOW)
       {
           usDelay (3000);
          if (GPIO_READ (obj->gpioHandle、GPIO_Number_22)=LOW)
          {
               while (GPIO_read (obj->gpioHandle、GPIO_Number_22)=LOW);
               flag_run=3;
               for (;;)
                   {
                     CTRL_setSpd_ref_krpm (ctrlHandle、_iq24 (0.8)); //设置速度基准
                     usDelay (500);
                     CTRL_setSpd_ref_krpm (ctrlHandle、_iq24 (-0.8));
                     usDelay (500);
                    }
           }
       }
 
实验完成后、当按下键时、电机无法向前和向后转动。
 
我希望能帮助我彻底解决这个问题。

 

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

    您好!  

    您是否检查了电机在之后启动  
    CTRL_setSpd_ref_krpm (ctrlHandle、_iq24 (0.8));

    CTRL_setSpd_ref_krpm (ctrlHandle、_iq24 (-0.8));

    [引用 user="user6024771"]   if (GPIO_read (obj->gpioHandle、GPIO_Number_12)=low)
       {
           usDelay (3000);
           if (GPIO_read (obj->gpioHandle、GPIO_Number_12)=low)[/quot]

    3毫秒后、您的按钮触点仍可能会产生共振。
    尝试300ms。

    user6024771 说:
                   for (;)
                       {
                         CTRL_setSpd_ref_krpm (ctrlHandle、_iq24 (0.8)); //设置速度基准
                         usDelay (500);
                         CTRL_setSpd_ref_krpm (ctrlHandle、_iq24 (-0.8));
                         usDelay (500);
                        }[/报价]

    0.5ms 延迟比硬盘驱动器中的履带头移动低5倍。
    请尝试5秒钟。

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

    我已经解决了这个问题、但是有一个小问题、当电机来回旋转时、只有基准速度发生变化、但电机本身沿原始方向旋转、如何修改这个环路程序?

    谢谢!

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

     如果您没有在示例实验中删除以下代码、则只需要根据密钥的输入信号来更改 gMotorVars.SpeedRef_krpm。

    //设置速度参考
    CTRL_setSpd_ref_krpm (ctrlHandle、gMotorVars.SpeedRef_krpm);

    BTW、您可以使用 if..else if.. 否则... 检查按键的输入、也不要使用 while 循环。 您可能会看到一本 MCU 编程手册、该手册应具备有关您的问题的一些基础知识。