我正在研究电机控制应用,基本上当我按下一个按钮时,电机就会运行,我也在运行时测量电机电流,这样我就可以在出现任何过载时停止电机。
问题是如果有任何过载我可以停止电机但响应时间更长,程序对突然的冲击没有反应。
是否可以并行运行两个回路,所以当我打开按钮时,一个回路将测量任何过载的电流,另一个回路将控制电机,这两个回路应该同时工作,这样我就可以得到预期响应时间..
最佳答案
正如 g-makulik 在评论中发表的那样,您可以使用线程。或者您可以退回到在单个循环中维护状态的旧解决方案。 不确定您拥有的 TI 是否支持 fork() 或线程,但如果不支持,类似这样的东西将成为强有力的竞争者。
int need_to_monitor_motor = 1; int common_switch; // true if common processing while ( need_to_monitor_motor ) { common_switch = 1; // allow common processing // you may well need to do something to avoid hogging the processor if // other processes are running. Even a minimal nano-sleep. // sched_yield() // usleep() sleep_or_processor_release(); switch ( motor_state ) { case MOTOR_OFF: need_to_monitor_motor = do_motor_off_stuff(); break; case MOTOR_ON: need_to_monitor_motor = do_motor_on_stuff(); break; default need_to_monitor_motor = trouble__fix_it( &common_switch ); break; } if ( common_switch ) { do_common_processing(); } }
(注意,还没有编译这个)
关于c - 并行运行 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12437505/