我在電機控制應用方面工作,基本上當我按下按鈕時電機會運行,我也在測量運行時的電機電流,以便在發生過載時停止電機。同時並行運行
問題是我可以停止電機,如果有任何超載,但響應時間更多,程序沒有對突然的影響作出反應。
是否有可能並行運行兩個迴路,所以當我開啓按鈕時,一個迴路將測量任何過載的電流,另一個迴路將控制電機,這兩個迴路應該同時工作,這樣我就可以得到預計的響應時間..
我在電機控制應用方面工作,基本上當我按下按鈕時電機會運行,我也在測量運行時的電機電流,以便在發生過載時停止電機。同時並行運行
問題是我可以停止電機,如果有任何超載,但響應時間更多,程序沒有對突然的影響作出反應。
是否有可能並行運行兩個迴路,所以當我開啓按鈕時,一個迴路將測量任何過載的電流,另一個迴路將控制電機,這兩個迴路應該同時工作,這樣我就可以得到預計的響應時間..
由於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(); } }
(注意,沒有這個編譯)
所以,你寫的TI處理器的嵌入式C語言程序。現在的問題是:您是否啓用了OS /多線程功能?大多數便宜的TI板卡都沒有這種支持,並且他們的嵌入式程序以無限循環結束(1)。所有的實際工作都是在中斷處理程序中完成的。就你而言,可能你可以使用一個或兩個定時器。在主函數的開始處初始化它們,並在定時器中斷處理程序中執行所有必要的操作。
所以,找到您的開發板帶定時器的TI代碼示例,並添加您自己的邏輯。
謝謝...這可能會有所幫助。無論如何我會檢查它... – siva
那麼這是什麼語言? C,C++,C#或motordriver? – 2012-09-15 12:47:49
你可以在不同的線程中運行必要的循環。用於TI處理器的C語言中的 –
。 – siva