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.
globalFlags.h
- Committer:
- MasashiNomura
- Date:
- 2019-01-24
- Revision:
- 43:156199c2f9b6
- Parent:
- 42:cc8501b824ba
- Child:
- 44:14fe4bd10fdb
File content as of revision 43:156199c2f9b6:
#ifndef __GLOBALFLAGS_H__ #define __GLOBALFLAGS_H__ #include "mbed.h" #include "typedef.h" #define G_CMD_BUF_SIZ 32 #define STATE_QUE_SIZ 8 #define STATE_BUF_SIZ 8 #define LIM_MOT_INP_MIN -2000 #define LIM_MOT_INP_MAX 2000 #define MAX_VAL_12BIT 4095 #define BRK_RPM 4000 typedef struct { union{ UINT16 flg; struct{ bool e1 : 1;//前エンジン回転数 bool e2 : 1;//後ろエンジン回転数 bool m1 : 1;//サブモーター回転数 bool m2 : 1;//サブモーター回転数 bool m3 : 1;//サブモーター回転数 bool m4 : 1;//サブモーター回転数 bool gy : 1;//ジャイロ bool yaw : 1;//ヨー角 bool fb : 1;//PID制御feedback結果 bool pp : 1;//P制御ゲイン(アウターループ) bool p : 1;//P制御ゲイン bool i : 1;//I制御ゲイン bool d : 1;//D制御ゲイン bool v : 1;//PID2(torgue)角速度feedback制御用ゲイン bool stat : 1;//ステート表示 }bf; }d1; union{ UINT32 flg; struct{ bool ain : 1;//アナログ入力値 bool sw : 1;//User Ope Switch bool mo1 : 1;//Motor1 Offset val bool mo2 : 1;//Motor2 Offset val bool mo3 : 1;//Motor3 Offset val bool mo4 : 1;//Motor4 Offset val bool ep1 : 1;//前エンジンにセットされたパラメータ値 bool ep2 : 1;//後エンジンにセットされたパラメータ値 bool rsv_01 : 1; bool rsv_02 : 1; bool rsv_03 : 1; bool rsv_04 : 1; bool rsv_05 : 1; bool rsv_06 : 1; bool rsv_07 : 1; bool rsv_08 : 1; }bf; }d2; }typPrintFlg; // typedef union{ // UINT16 flg; // struct{ // bool e1 : 1;//前エンジン回転数 // bool e2 : 1;//後ろエンジン回転数 // bool m1 : 1;//サブモーター回転数 // bool m2 : 1;//サブモーター回転数 // bool m3 : 1;//サブモーター回転数 // bool m4 : 1;//サブモーター回転数 // bool gy : 1;//ジャイロ // bool yaw : 1;//ヨー角 // bool fb : 1;//PID制御feedback結果 // bool pp : 1;//P制御ゲイン(アウターループ) // bool p : 1;//P制御ゲイン // bool i : 1;//I制御ゲイン // bool d : 1;//D制御ゲイン // bool v : 1;//PID2(torgue)角速度feedback制御用ゲイン // bool stat : 1;//ステート表示 // bool ain : 1;//アナログ入力値 // }bf; // }typPrintFlag; typedef union{ UINT16 flg; struct{ bool e1 : 1;// bool e2 : 1;// bool m1 : 1;// bool m2 : 1;// bool m3 : 1;// bool m4 : 1;// bool gy : 1;// bool yaw : 1;// bool fb : 1;//PID制御feedback結果 bool pp : 1;//P制御ゲイン(アウターループ) bool p : 1;//P制御ゲイン bool i : 1;//I制御ゲイン bool d : 1;//D制御ゲイン }bf; }typCalFlag; typedef union{ UINT16 dt; struct{ UINT16 val : 15;//立てたいbit番号(現状0~10) bool req : 1;//コマンド要求 }bf; }typSWCmd; // typedef union{ UINT16 dt; struct{ UINT16 val : 12;//アクセル設定値 bool req : 1;//アクセル更新要求 }bf; }typAccel; typedef struct{ INT16 val;//アクセル設定値 bool req;//アクセル更新要求 }typAxlRpm; // typedef union{ // UINT16 flg; // struct{ // bool mo1 : 1;//Motor1 Offset val // bool mo2 : 1;//Motor2 Offset val // bool mo3 : 1;//Motor3 Offset val // bool mo4 : 1;//Motor4 Offset val // bool ana1 : 1;//AnalogRead for Motor Accel // bool ana2 : 1; // }bf; // }typDbgPrintFlg; typedef union { UINT16 dt; struct{ UINT16 num :6; UINT16 counter :6; //UINT16 pos :3; bool add_end :1; bool req :1; }bf; }typOnePushFlg; //ステート定義 enum enmHbState {NONE = 0 //何もなし ,SLEEP //スリープモード(最初ここ) ,WAKEUP //起動処理 ,STANDBY //スタンバイ(エンジンかかるの待ち) ,IDLE //アイドル(エンジンがかかったけどなにもしない) ,TAKE_OFF //離陸(エンジン回転数上昇 規定値まで) ,HOVER //ホバリング ,DRIVE //運転 ,GROUND //着陸(エンジン同時下げ) ,EMGGND //緊急着陸(後ろエンジンを先に下げる) ,CHK_EG_ENT //SLEEPからエンジン調整モードへ(フラグリセット、アナログ入力が下がっていること、ボタンが押されいないことの確認State) ,CHK_EG_F //フロントエンジン調整 ,CHK_EG_MID //アナログ入力が下がっていること、ボタンが押されていないことを確認するState ,CHK_EG_R //リアエンジン調整 ,CHK_EG_EXIT//アナログ入力が下がっていること、他のボタンが押されていないことを確認してSLEEPへ ,CHK_ENT //チェックエンター ,CHK_MOT //モーターチェック ,CHK_AXL //アクセルサーボチェック ,CHK_ATT //姿勢制御チェック ,CHK_EXIT //チェックステート脱出 ,MOT_STOP //モーター停止用 }; // 状態表示用LEDカラー enum eLedCol{ OFF = 0, WHITE, RED, GREEN, BLUE, YELLOW, PURPLE, LIGHT_BLUE, BLK_WHITE,//BLINK BLK_RED, BLK_GREEN, BLK_BLUE, BLK_YELLOW, BLK_PURPLE, BLK_LIGHT_BLUE, }; enum eMotPos{ F_L = 0, // 前 左 F_R, // 前 右 R_L, // 後 左 R_R, // 後 右 }; enum eMotType{ IN = 0, OUT, }; enum eMotInType{ OFS = 0, ATT, USER, }; enum eEgPos{ FRONT = 0, REAR, }; ///////////////////////////////////////////////// //void init1PushStruct(typ1Push& item); void initFlags(); void setDOCol(eLedCol col); void setDO4LED(enmHbState stat); //void blinkLED(enmHbState stat); void setState(enmHbState stat); void setStateF(enmHbState stat); bool isActiveState(); /* class GlobalFlags{ private: enmHbState stateQueue[STATE_QUE_SIZ];//ステート予約用のキューバッファ int wp; //ライトポインタ int rp; //リードポインタ bool full; //フルフラグ bool empty; //エンプティフラグ public: //プロパティ enmHbState state;//現在のステート //メソッド GlobalFlags();//コンストラクタ bool push(enmHbState iState); bool pull(); }; */ //モニタ用LED extern DigitalOut led1; extern DigitalOut led2; extern DigitalOut led3; extern DigitalOut led4; //状態表示用 extern DigitalOut DO_01; extern DigitalOut DO_02; extern DigitalOut DO_03; //モーターアクセル用アナログ入力 extern AnalogIn AinAxl; // //エンジンスロットル用アナログ入力 // extern AnalogIn AinThrottle; ////////////////////////////////////////////////// // フラグ //extern GlobalFlags gf; extern char g_CmdBuf[G_CMD_BUF_SIZ] ;// コマンド受け渡しバッファ extern bool gf_CmdPrs; //コマンドパーサー実行要求フラグ extern bool gf_Armed; //アーミングフラグ extern bool gf_Dbg; //デバッグフラグ extern bool gf_StopMot; //モーターの強制停止 サーボ全閉 extern bool gf_FromActiveStat ;//モーターの強制停止 サーボ全閉が動作時に発生したかどうか extern bool gf_BlinkLED; //extern typPrintFlag gf_Print; //デバッグプリントフラグ(1回表示) //extern typPrintFlag gf_Mon; //デバッグモニタフラグ(繰り返し表示) extern typPrintFlg gf_Print; //デバッグプリントフラグ(1回表示) extern typPrintFlg gf_Mon; //デバッグモニタフラグ(繰り返し表示) extern typCalFlag gf_Cal; //キャリブレーションフラグ //extern typDbgPrintFlg gf_DbgPrint ;//デバッグ用 extern typAccel gf_AxReq[2]; //アクセル更新 extern typAccel gf_AxReqH[2] ;//浮上時アクセル値更新フラグ extern typAccel gf_AxStepReq[2] ;//アクセル用サーボ動作ステップ値更新フラグ extern typAxlRpm gf_MtReq[4]; //モーター姿勢制御更新 extern typAxlRpm gf_MtReqOfs[4]; //モーターオフセット更新 extern typAxlRpm gf_MtReqU[4]; //モーターユーザー更新 extern typAxlRpm gf_MtReqDct[8] ;//ダイレクト(FPGA関数直接呼び出し)モーター更新フラグ extern typSWCmd gf_SwCmd; //スイッチが押されたことを模擬するフラグ extern enmHbState gf_State; //現在のステート extern bool gf_StateEnt ;//状態遷移後、最初であることを示す extern bool gf_PidParaUpdate ;//PID Pp,P,I,Dの係数アップデートフラグ extern typPidPara g_PidPara; //PID Pp,P,I,Dの係数の外部設定用 // extern bool gf_MotParaUpdate[4] ;//モーターのパラメータ値更新フラグ // extern typMotPara g_MotPara[4]; //モーターのパラメータ値 #endif