1

我正在研究电机控制应用程序,基本上,当我按下按钮时,电机将运行,并且我还在运行时测量电机电流,这样如果有任何过载我可以停止电机。

问题是如果有任何过载我可以停止电机,但响应时间更长,程序对突然的冲击没有反应。

是否可以并行运行两个回路,所以当我打开按钮时,一个回路将测量任何过载的电流,另一个回路将用于控制电机,这两个回路应该同时工作,这样我就会得到预期的响应时间..

4

2 回答 2

1

正如 g-makulik 在评论中发布的那样,您可以使用线程。或者您可以回退到在单个循环中维护状态的旧解决方案。不确定您拥有的 TI 是否支持 fork() 或线程,但如果不支持,这样的东西就会成为强有力的竞争者。

int need_to_monitor_motor = 1;
int common_switch; // 如果是普通处理则为真

而 (need_to_monitor_motor)
{
    common_switch = 1; // 允许共同处理

    // 你可能需要做一些事情来避免占用处理器如果
    // 其他进程正在运行。即使是最小的纳米睡眠。
    // sched_yield()
    // 睡眠()
    sleep_or_processor_release();   

    开关(电机状态)
    {
       案例 MOTOR_OFF:
        need_to_monitor_motor = do_motor_off_stuff();
        休息;

       案例 MOTOR_ON:
        need_to_monitor_motor = do_motor_on_stuff();
        休息;

       默认
        need_to_monitor_motor = Trouble__fix_it( &common_switch );
        休息;
    }

    如果(common_switch)
    {
        do_common_processing();
    }
}

(注意,没有编译这个)

于 2012-09-15T13:14:07.947 回答
0

因此,您正在为 TI 处理器编写嵌入式 C 程序。现在的问题是:您是否启用了操作系统/多线程功能?大多数便宜的 TI 板都没有这种支持,它们的嵌入式程序以无限循环 while(1) 结束。所有实际工作都在中断处理程序中完成。在您的情况下,您可能可以使用一两个计时器。在 main 函数的开头初始化它们,并在定时器中断处理程序中做所有必要的事情。

因此,为您的电路板找到带有计时器的 TI 代码示例,并向其中添加您自己的逻辑。

于 2012-09-15T13:25:18.213 回答