Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: userTask.cpp
- Revision:
- 23:79e20be4bc5b
- Parent:
- 22:24c9c2dedca9
- Child:
- 24:c5945aaae777
diff -r 24c9c2dedca9 -r 79e20be4bc5b userTask.cpp
--- a/userTask.cpp Thu Dec 06 11:03:13 2018 +0000
+++ b/userTask.cpp Sat Dec 08 12:08:25 2018 +0000
@@ -67,9 +67,14 @@
HbManager hb;
+ bool bDoCtrlAtt;
+ bool bDoCtrlMot;
//
while(1){
led1=!led1;
+ bDoCtrlAtt = false;
+ bDoCtrlMot = false;
+
//▼①状態読み出し系
hb.getAttitude(); //現在角度読み出し
hb.controlEngine(); //エンジン回転数読み出し
@@ -81,30 +86,98 @@
if(gf_Dbg){
taskStart(2);
}
+ else if(gf_Armed){
+ setState(WAKEUP);
+ gf_Armed = false;
+ }
break;
case WAKEUP:
+ { //各種モーター
+ //機材のチェック
+ //今はそのまま次へ
+ setState(STANDBY);
+ }
break;
case STANDBY:
+ // モーター回転数のチェック
+ if(hb.chkInRangeIDLE()){
+ setState(IDLE);
+ }
+ else{
+ // デバッグのためここもスルー
+ setState(IDLE);
+ }
break;
case IDLE:
+ //SWのチェック
+ //離陸ボタン押下
+ //とりあえず、YawCtrlで代用
+ if(hb.chkSWUserOpe(HbUserOpe::YAW_CTRL))
+ {
+ // TODO IMU Cal
+ setState(TAKE_OFF);
+ }
+ //else if(hb.chkSWUserOpe(HbUserOpe::ENG_STOP))
+ //{
+ // setState(SLEEP);
+ //}
+ //if(hb.chkSWUserOpeAny()){
+ // sp.printf("SW :[%X]\r\n",hb.getUserSw());
+ //}
break;
case TAKE_OFF:
+ // エンジン回転数のチェック
+ // 着陸ボタンが優先度が高いので先に判定、たが、まだ作ってないのでコメントアウト
+ // if(hb.chkSWUserOpe(HbUserOpe::STOP)){
+ // setState(GROUND);
+ // }
+ //else
+ bDoCtrlMot = true;
+ bDoCtrlAtt = true;
+ //if(hb.chkSWUserOpe(HbUserOpe::STOP)){
+ // setState(HOVER);
+ //}
+
break;
case GROUND:
+ // そのままスルー
+ setState(IDLE);
break;
case HOVER:
+ //
break;
case DRIVE:
break;
case EMGGND:
break;
+ case CHK_ENT: //チェックエンター
+ sp.printf("Check enter\r\n");
+ break;
+ case CHK_MOT: //モーターチェック
+ sp.printf("Check Motor\r\n");
+ bDoCtrlMot = true;
+ break;
+ case CHK_AXL: //アクセルサーボチェック
+ sp.printf("Check Accel Servo\r\n");
+ break;
+ case CHK_ATT: //姿勢制御チェック
+ sp.printf("Check Attitude\r\n");
+ bDoCtrlAtt = true;
+ break;
+ case CHK_EXIT: //チェックステート脱出
+ sp.printf("Check Exit\r\n");
+ break;
}
//▼③各種設定
//hb.controlAttitude(); //姿勢制御
//hb.controlMotor();//モーター指令出し
+ if(bDoCtrlAtt)hb.controlAttitude(); //姿勢制御
+ if(bDoCtrlMot)hb.controlMotor();//モーター指令出し
-
+ if(gf_Print.bf.stat){
+ sp.printf("stat : [%X]\r\n",gf_State);
+ }
//表示フラグを落とす(けどモニタフラグが立ってる箇所は残る)
if(gf_Print.flg!=0){
gf_Print.flg=gf_Mon.flg;
@@ -127,8 +200,9 @@
+ //自タスク停止させて次の周期まで待つ
gf_Dbg = false;
- //自タスク停止させて次の周期まで待つ
+ sp.printf("Do DebugTask!");
taskStop(2);
}
}
@@ -140,7 +214,7 @@
portBASE_TYPE TaskRtn;//タスククリエイトの結果を受け取る型
//タスク0:コマンド解析タスク
- TaskRtn= xTaskCreate(taskCmdParser, (signed portCHAR *)"TaskCmd", 32, NULL, 1, &tskHandle[0]);
+ TaskRtn= xTaskCreate(taskCmdParser, (signed portCHAR *)"TaskCmd", 256, NULL, 1, &tskHandle[0]);
if(TaskRtn==pdTRUE){sp.printf("Task0 Set : Command parser\r\n");}
//タスク1:制御タスク
@@ -148,7 +222,7 @@
if(TaskRtn==pdTRUE){sp.printf("Task1 Set : Hoverbike Control\r\n");}
//タスク2:デバッグタスク
- TaskRtn= xTaskCreate(taskDebug, (signed portCHAR *)"TaskDebug", 64, NULL, 0, &tskHandle[2]);
+ TaskRtn= xTaskCreate(taskDebug, (signed portCHAR *)"TaskDebug", 192, NULL, 0, &tskHandle[2]);
if(TaskRtn==pdTRUE){sp.printf("Task2 Set : Debug\r\n");}
//RTOSカーネル起動(タスクが走り出す)