今、タスクを作っています。
何言ってるかわけわかんないので、解説すると、
RTOSっぽい何かを作ってます。それのタスク。
まぁディスパッチのときにキューに突っ込むとかそういうテクニシャンみたいなことをやるの苦手なので、
使ってもらう人たちには関数列と待機列を作ってそこにブチ込んでください、みたいな作りにしようかなって
まぁ具体的には
TASK task1(INT vp_inf){
func0(); //初期化とかの処理
for(;;){
func1();
tslp_tsk(100/MSEC);
func2();
tslp_tsk(100/MSEC);
func3();
}
}
こういう実装をしたかったら
構造体の中に関数ポインタ(void (*po)())と待ち条件(100/MSEC)をくくったやつT_FUNCがあって
T_FUNC taskFunc[16];
とかやっておく
で、こいつをタスクにぶち込む
タスクが実行されると
func0→func1→100ミリの間起き上がらないが別のタスクがあればそいつに遷移
→func2→
このときに実行するtaskFuncをずらすだけ
欠点はfuncの単位が待ちごとになるからプログラムが読みづらい。
解消する方法はたくさんあるとは思う(というかマイコンなんだからPC嫁ってお話)が
どうしてもCで対応してみたいみたいなところ(しかもマクロなしね)
なので、ちょっとチャレンジみたいな?EasyOSみたいな?感じであります。
今日はおしまい
